I have created a simple process model, which consists of two user tasks. I wanted to add one more user task at runtime. I am trying to create one, using DynamicUserTaskBuilder. And then now, I am trying to inject this user task in my process instance. But, the problem is, it gives me error while injecting.
The ERROR occurs on line :
dynamicBpmnService.injectUserTaskInProcessInstance(processInstance.getProcessInstanceId(), taskBuilder);
Please find the same in the below code snippet.
This is my code snippet :
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import org.flowable.bpmn.model.BpmnModel;
import org.flowable.bpmn.model.FlowElement;
import org.flowable.bpmn.model.Process;
import org.flowable.bpmn.model.SequenceFlow;
import org.flowable.engine.DynamicBpmnService;
import org.flowable.engine.RepositoryService;
import org.flowable.engine.RuntimeService;
import org.flowable.engine.TaskService;
import org.flowable.engine.impl.dynamic.DynamicUserTaskBuilder;
import org.flowable.engine.repository.Model;
import org.flowable.engine.runtime.ProcessInstance;
import org.flowable.task.api.Task;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class MyService {
Logger logger=LoggerFactory.getLogger(MyService.class);
@Autowired
public RuntimeService runtimeService;
@Autowired
TaskService taskService;
@Autowired
DynamicBpmnService dynamicBpmnService;
@Autowired
RepositoryService repositoryService;
Scanner sc = new Scanner(System.in);
public void startProcess() {
logger.info("In Start Service: MY Before startProcess..!!!");
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("AddingDynamicUserTaskKey");
//GIVING SOME FUNCTIONALITY TO THE PREVIOUSLY CREATED USER TASK 1.......
Task task1 = taskService.createTaskQuery().processInstanceId(processInstance.getId()).taskDefinitionKey("UserTask1Id").singleResult();
task1.setName("One Direction");
System.out.println("Greatest Boy band - " +task1.getName());
taskService.complete(task1.getId());
System.out.println("Somewhere between two processes...");
//CREATING OUR OWN USER SERVICE TASK......
DynamicUserTaskBuilder taskBuilder = new DynamicUserTaskBuilder();
System.out.println("DynamicUserTaskBuilder ------- 1");
taskBuilder.id("MyTempId4")
.name("MyTempTaskName4")
.assignee("Krishnakant4");
dynamicBpmnService.injectUserTaskInProcessInstance(processInstance.getProcessInstanceId(), taskBuilder);
System.out.println("HEY..Maybe you new User Task is created...Need to verify! ");
System.out.println("New User Task Name Is : "+ taskBuilder.getName());
//GIVING SOME FUNCTIONALITY TO THE PREVIOUSLY CREATED USER TASK 2.......
Task task2 = taskService.createTaskQuery().processInstanceId(processInstance.getId()).taskDefinitionKey("UserTask2Id").singleResult();
if(task2 != null) {
task2.setName("Lionel Messi");
System.out.println("Greatest of all time - " +task2.getName());
}
taskService.complete(task2.getId());
logger.info("MY After StartProcess..!!!");
}
}
Below is the error after running the snippet file :
2020-03-17 12:56:21.559 INFO 22124 --- [nio-8998-exec-1] c.k.flowable.services.MyService : In Start Service: MY Before startProcess..!!!
Greatest Boy band - One Direction
Somewhere between two processes...
DynamicUserTaskBuilder ------- 1
ERROR: 'ParseError at [row,col]:[5,163]
Message: http://www.w3.org/TR/1999/REC-xml-names-19990114#AttributeNSNotUnique?userTask&formFieldValidation&http://flowable.org/bpmn'
2020-03-17 12:56:26.948 ERROR 22124 --- [nio-8998-exec-1] o.f.e.i.b.d.ParsedDeploymentBuilder : Could not parse resource C:\Users\KV0C85403\Documents\workspace-spring-tool-suite-4-4.3.0.RELEASE\flowableapiAddingDynamicUserTask\target\classes\processes\AddingDynamicUserTask.bpmn20.xml
org.flowable.bpmn.exceptions.XMLException: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[5,163]
Message: http://www.w3.org/TR/1999/REC-xml-names-19990114#AttributeNSNotUnique?userTask&formFieldValidation&http://flowable.org/bpmn
at org.flowable.bpmn.converter.BpmnXMLConverter.convertToBpmnModel(BpmnXMLConverter.java:275) ~[flowable-bpmn-converter-6.4.2.jar:6.4.2]
at org.flowable.engine.impl.bpmn.parser.BpmnParse.execute(BpmnParse.java:148) ~[flowable-engine-6.4.2.jar:6.4.2]
at org.flowable.engine.impl.bpmn.deployer.ParsedDeploymentBuilder.createBpmnParseFromResource(ParsedDeploymentBuilder.java:97) [flowable-engine-6.4.2.jar:6.4.2]
at org.flowable.engine.impl.bpmn.deployer.ParsedDeploymentBuilder.build(ParsedDeploymentBuilder.java:55) [flowable-engine-6.4.2.jar:6.4.2]
at org.flowable.engine.impl.bpmn.deployer.BpmnDeployer.deploy(BpmnDeployer.java:78) [flowable-engine-6.4.2.jar:6.4.2]
at org.flowable.engine.impl.cmd.AbstractDynamicInjectionCmd.deployDerivedDeploymentEntity(AbstractDynamicInjectionCmd.java:107) [flowable-engine-6.4.2.jar:6.4.2]
at org.flowable.engine.impl.cmd.AbstractDynamicInjectionCmd.createDerivedProcessDefinition(AbstractDynamicInjectionCmd.java:60) [flowable-engine-6.4.2.jar:6.4.2]
at org.flowable.engine.impl.cmd.AbstractDynamicInjectionCmd.createDerivedProcessDefinitionForProcessInstance(AbstractDynamicInjectionCmd.java:52) [flowable-engine-6.4.2.jar:6.4.2]
at org.flowable.engine.impl.cmd.InjectUserTaskInProcessInstanceCmd.execute(InjectUserTaskInProcessInstanceCmd.java:50) [flowable-engine-6.4.2.jar:6.4.2]
at org.flowable.engine.impl.cmd.InjectUserTaskInProcessInstanceCmd.execute(InjectUserTaskInProcessInstanceCmd.java:38) [flowable-engine-6.4.2.jar:6.4.2]
at org.flowable.engine.impl.interceptor.CommandInvoker$1.run(CommandInvoker.java:51) [flowable-engine-6.4.2.jar:6.4.2]
at org.flowable.engine.impl.interceptor.CommandInvoker.executeOperation(CommandInvoker.java:93) [flowable-engine-6.4.2.jar:6.4.2]
at org.flowable.engine.impl.interceptor.CommandInvoker.executeOperations(CommandInvoker.java:72) [flowable-engine-6.4.2.jar:6.4.2]
at org.flowable.engine.impl.interceptor.CommandInvoker.execute(CommandInvoker.java:56) [flowable-engine-6.4.2.jar:6.4.2]
at org.flowable.engine.impl.interceptor.BpmnOverrideContextInterceptor.execute(BpmnOverrideContextInterceptor.java:25) [flowable-engine-6.4.2.jar:6.4.2]
at org.flowable.common.engine.impl.interceptor.TransactionContextInterceptor.execute(TransactionContextInterceptor.java:53) [flowable-engine-common-6.4.2.jar:6.4.2]
at org.flowable.common.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:72) [flowable-engine-common-6.4.2.jar:6.4.2]
at org.flowable.common.spring.SpringTransactionInterceptor.lambda$execute$0(SpringTransactionInterceptor.java:56) [flowable-spring-common-6.4.2.jar:6.4.2]
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140) ~[spring-tx-5.2.4.RELEASE.jar:5.2.4.RELEASE]
at org.flowable.common.spring.SpringTransactionInterceptor.execute(SpringTransactionInterceptor.java:56) [flowable-spring-common-6.4.2.jar:6.4.2]
at org.flowable.common.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:30) ~[flowable-engine-common-6.4.2.jar:6.4.2]
at org.flowable.common.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:56) ~[flowable-engine-common-6.4.2.jar:6.4.2]
at org.flowable.common.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:51) ~[flowable-engine-common-6.4.2.jar:6.4.2]
at org.flowable.engine.impl.DynamicBpmnServiceImpl.injectUserTaskInProcessInstance(DynamicBpmnServiceImpl.java:51) ~[flowable-engine-6.4.2.jar:6.4.2]
at com.krishnakant.flowable.services.MyService.startProcess(MyService.java:84) ~[classes/:na]
at com.krishnakant.flowable.controller.MyController.startProcessInstance(MyController.java:23) ~[classes/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_191]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_191]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_191]
at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.8.0_191]
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190) ~[spring-web-5.2.4.RELEASE.jar:5.2.4.RELEASE]
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) ~[spring-web-5.2.4.RELEASE.jar:5.2.4.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106) ~[spring-webmvc-5.2.4.RELEASE.jar:5.2.4.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:879) ~[spring-webmvc-5.2.4.RELEASE.jar:5.2.4.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793) ~[spring-webmvc-5.2.4.RELEASE.jar:5.2.4.RELEASE]
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.2.4.RELEASE.jar:5.2.4.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040) ~[spring-webmvc-5.2.4.RELEASE.jar:5.2.4.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943) ~[spring-webmvc-5.2.4.RELEASE.jar:5.2.4.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.2.4.RELEASE.jar:5.2.4.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.2.4.RELEASE.jar:5.2.4.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:634) ~[tomcat-embed-core-9.0.31.jar:9.0.31]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.2.4.RELEASE.jar:5.2.4.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) ~[tomcat-embed-core-9.0.31.jar:9.0.31]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) ~[tomcat-embed-core-9.0.31.jar:9.0.31]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.31.jar:9.0.31]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.31.jar:9.0.31]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.31.jar:9.0.31]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.31.jar:9.0.31]
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.2.4.RELEASE.jar:5.2.4.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.4.RELEASE.jar:5.2.4.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.31.jar:9.0.31]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.31.jar:9.0.31]
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.2.4.RELEASE.jar:5.2.4.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.4.RELEASE.jar:5.2.4.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.31.jar:9.0.31]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.31.jar:9.0.31]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.2.4.RELEASE.jar:5.2.4.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.4.RELEASE.jar:5.2.4.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.31.jar:9.0.31]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.31.jar:9.0.31]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) ~[tomcat-embed-core-9.0.31.jar:9.0.31]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) ~[tomcat-embed-core-9.0.31.jar:9.0.31]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) ~[tomcat-embed-core-9.0.31.jar:9.0.31]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) ~[tomcat-embed-core-9.0.31.jar:9.0.31]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.31.jar:9.0.31]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[tomcat-embed-core-9.0.31.jar:9.0.31]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) ~[tomcat-embed-core-9.0.31.jar:9.0.31]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:367) ~[tomcat-embed-core-9.0.31.jar:9.0.31]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.31.jar:9.0.31]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) ~[tomcat-embed-core-9.0.31.jar:9.0.31]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1639) ~[tomcat-embed-core-9.0.31.jar:9.0.31]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.31.jar:9.0.31]
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) ~[na:1.8.0_191]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ~[na:1.8.0_191]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.31.jar:9.0.31]
at java.lang.Thread.run(Unknown Source) ~[na:1.8.0_191]
Caused by: org.xml.sax.SAXException: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[5,163]
Please let me know if I’m missing out something as soon as possible.
regards
Krishnakant