cancel
Showing results for 
Search instead for 
Did you mean: 

Parallel split gateway and 2 end events - bug?

tomasz_lewandow
Champ in-the-making
Champ in-the-making
I have a simple process with parallel gateway with 2 outgoing flows, each ending with different end event.
Process diagram: https://drive.google.com/file/d/0B3SW4GfzebTkNm1ERFV0OGJVMHc/edit?usp=sharing

Process ends with NPE because first end event deletes both concurrent executions, then second end event tries to delete the execution ones more (this behaviour is implemented in org.activiti.engine.impl.pvm.runtime.AtomicOperationActivityEnd.eventNotificationsCompleted).

Is it a bug? (AFAIK BPMN allows concurrent executions to end with different end event)
2 REPLIES 2

tomasz_lewandow
Champ in-the-making
Champ in-the-making
NPE is:

<code>
2319 [pool-1-thread-1] ERROR org.activiti.engine.impl.interceptor.CommandContext  - Error while closing command context
org.activiti.engine.ActivitiException: Job 8908 failed
at org.activiti.engine.impl.cmd.ExecuteJobsCmd.execute(ExecuteJobsCmd.java:83)
at org.activiti.engine.impl.interceptor.CommandInvoker.execute(CommandInvoker.java:24)
at org.activiti.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:57)
at org.activiti.spring.SpringTransactionInterceptor$1.doInTransaction(SpringTransactionInterceptor.java:47)
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:130)
at org.activiti.spring.SpringTransactionInterceptor.execute(SpringTransactionInterceptor.java:45)
at org.activiti.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:37)
at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:40)
at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:35)
at org.activiti.engine.impl.jobexecutor.ExecuteJobsRunnable.run(ExecuteJobsRunnable.java:46)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.NullPointerException
at org.activiti.engine.impl.pvm.runtime.AtomicOperationTransitionCreateScope.execute(AtomicOperationTransitionCreateScope.java:34)
at org.activiti.engine.impl.interceptor.CommandContext.performOperation(CommandContext.java:88)
at org.activiti.engine.impl.jobexecutor.AsyncContinuationJobHandler.execute(AsyncContinuationJobHandler.java:36)
at org.activiti.engine.impl.persistence.entity.JobEntity.execute(JobEntity.java:79)
at org.activiti.engine.impl.persistence.entity.MessageEntity.execute(MessageEntity.java:29)
at org.activiti.engine.impl.cmd.ExecuteJobsCmd.execute(ExecuteJobsCmd.java:71)
</code>

trademak
Star Contributor
Star Contributor
That's correct, but you are using asynchronous script tasks it seems, is that correct? If you don't use asynchronous script tasks is the result still the same? The problem with asynchronous script tasks is that they can be executed at the same time. The best practice would be to add a parallel join gateway after the two script tasks.

Best regards,