Peter Horvath [
http://community.jboss.org/people/h.peter] created the discussion
"Joining of non-concurrent decision paths seems to be broken in 4.4"
To view the discussion, visit:
http://community.jboss.org/message/555138#555138
--------------------------------------------------------------
Hello All,
We have a quite complicated process definion with a lot of cases where a step has to be
executed only on specific condition - something like the following diagram (see attached
full example process definition JPDL file):
http://community.jboss.org/servlet/JiveServlet/showImage/4429/ForkJoinTes...
http://community.jboss.org/servlet/JiveServlet/downloadImage/4429/450-189...
We used join nodes with *multiplicity="1"* setting to join the two possible
outcome paths of the decision node:
*<join g="347,51,48,48" multiplicity="1"
name="join1">
<transition g="424,76:-7,-17" name="to join2"
to="join2"/>
</join>*
This approach used to work OK with JBPM 4.3 but it fails with version 4.4.
It seems that the handling of join nodes has been changed in this version: the first join
node sets state to ended on the incoming execution which is not destroyed at that step but
is delegated through to the outgoing transition, so the next join node (the last one
before the end in the example) fails with the following exception:
Exception in thread "main" org.jbpm.api.JbpmException:
execution[ForkJoinTest.10001.to script2.10002] is not active: ended
at org.jbpm.pvm.internal.model.ExecutionImpl.checkActive(ExecutionImpl.java:1084)
at org.jbpm.pvm.internal.model.ExecutionImpl.take(ExecutionImpl.java:481)
at org.jbpm.jpdl.internal.activity.ForkActivity.execute(ForkActivity.java:95)
at org.jbpm.jpdl.internal.activity.ForkActivity.execute(ForkActivity.java:46)
at org.jbpm.pvm.internal.model.op.ExecuteActivity.perform(ExecuteActivity.java:60)
at
org.jbpm.pvm.internal.model.ExecutionImpl.performAtomicOperationSync(ExecutionImpl.java:672)
at
org.jbpm.pvm.internal.model.ExecutionImpl.performAtomicOperation(ExecutionImpl.java:632)
at org.jbpm.pvm.internal.model.ExecutionImpl.start(ExecutionImpl.java:217)
at
org.jbpm.pvm.internal.cmd.StartProcessInstanceInLatestCmd.execute(StartProcessInstanceInLatestCmd.java:63)
at
org.jbpm.pvm.internal.cmd.StartProcessInstanceInLatestCmd.execute(StartProcessInstanceInLatestCmd.java:36)
at
org.jbpm.pvm.internal.svc.DefaultCommandService.execute(DefaultCommandService.java:42)
at
org.jbpm.pvm.internal.tx.SpringCommandCallback.doInTransaction(SpringCommandCallback.java:45)
at
org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:130)
at
org.jbpm.pvm.internal.tx.SpringTransactionInterceptor.execute(SpringTransactionInterceptor.java:49)
at
org.jbpm.pvm.internal.svc.EnvironmentInterceptor.executeInNewEnvironment(EnvironmentInterceptor.java:53)
at
org.jbpm.pvm.internal.svc.EnvironmentInterceptor.execute(EnvironmentInterceptor.java:40)
at org.jbpm.pvm.internal.svc.RetryInterceptor.execute(RetryInterceptor.java:56)
at
org.jbpm.pvm.internal.svc.ExecutionServiceImpl.startProcessInstanceByKey(ExecutionServiceImpl.java:67)
For me, this seems to be a bug - clearly, the behaviour of JBPM has been changed between
version 4.3 and 4.4. The attached process definition is executed correctly with JBPM 4.3.
What do you think about this?
Regards,
Peter
--------------------------------------------------------------
Reply to this message by going to Community
[
http://community.jboss.org/message/555138#555138]
Start a new discussion in jBPM at Community
[
http://community.jboss.org/choose-container!input.jspa?contentType=1&...]