[JBPM + JAVA] Parallel Process Service & slow complete Work Item action
wallouf Feb 1, 2016 2:56 PMHi,
I am developing a software to manage flow on items, and i have some trouble with performance and parallel process.
Subject:
- The flow is very simple, it will check date and some parameters and use boolean check to decide what is the next step. I have only 5 tasks in my flow.
Technologies:
- Java SE 6
- Spring v4 + hibernate + Atomikos XA
- DB2 database v10 + MQ
- JBPM v6.3
What i want to do:
- All items are independent. So i would like to start n Threads on the same instance and launch parallel process at the same time.
How:
- I am using scope="prototype" on each beans that is part of independent thread. My runtime manager is configured with "PER_PROCESS_INSTANCE".
- All independent threads get item to process, and launch a process.
My problems:
- I can see with logs that all threads want to launch process in parallel. But there is only one process started at the same time.
- I have another problem with the method complete work item. This took more than 100ms and i doesn't understand why.
Thank you in advance for your help or hints.
My xml configuration:
<bean id="taskService" class="org.kie.spring.factorybeans.TaskServiceFactoryBean" destroy-method="close"> <property name="entityManagerFactory" ref="bpmEMF" /> <property name="transactionManager" ref="jtaTransactionManager" /> <property name="listeners"> <list> <bean class="org.jbpm.services.task.audit.JPATaskLifeCycleEventListener"> <constructor-arg> <value>true</value> </constructor-arg> </bean> </list> </property> </bean> <bean id="customLogFactory" class="expertus.workflowengine.flowworker.utils.CustomLogFactory" /> <bean id="process" factory-method="newClassPathResource" class="org.kie.internal.io.ResourceFactory"> <constructor-arg> <value>${process.model}</value> </constructor-arg> </bean> <bean id="runtimeEnvironment" class="org.kie.spring.factorybeans.RuntimeEnvironmentFactoryBean"> <property name="type" value="DEFAULT" /> <!--<property name="registerableItemsFactory" ref="customLogFactory" />--> <property name="entityManagerFactory" ref="bpmEMF" /> <property name="transactionManager" ref="jtaTransactionManager" /> <property name="assets"> <map> <entry key-ref="process"> <util:constant static-field="org.kie.api.io.ResourceType.BPMN2" /> </entry> </map> </property> <property name="taskService" ref="taskService" /> </bean> <bean id="runtimeManager" class="org.kie.spring.factorybeans.RuntimeManagerFactoryBean" destroy-method="close"> <property name="type" value="PER_PROCESS_INSTANCE" /> <property name="identifier" value="spring-rm" /> <property name="runtimeEnvironment" ref="runtimeEnvironment" /> </bean> <bean name="processService" class="expertus.workflowengine.flowworker.bpm.ProcessServiceImpl" scope="prototype"> <property name="runtimeManager" ref="runtimeManager" /> <property name="workItemRegister" ref="processWorkItemRegister" /> </bean>