我需要在我的流程中创建并行运行的服务任务。
尝试使用异步属性创建最简单的流程:
循环基数 = 5(例如)
我发现在activiti.xml
配置中需要添加这个属性:
<property name="asyncExecutorActivate" value="true" />
但是流程仍然在一个线程中运行。
我错过了什么?
如何正确激活异步?
在上面的示例中激活异步并行执行 - 需要将异步设置为开启Call Service
而不是开启Sub Process
一旦我们使用 async
,我们必须将流程引擎配置为异步
否则你会遇到这个异常之王:
org.activiti.engine.ActivitiOptimisticLockingException: VariableInstanceEntity[id=15317, name=nrOfActiveInstances, type=integer, longValue=1, textValue=1] 被另一个事务同时更新
wso2bps上activiti引擎的参数存储在这里:conf/activiti.xml
只需将以下属性添加到 bean id="processEngineConfiguration"
<bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
...
<property name="asyncExecutorActivate" value="true" />
<property name="asyncExecutorEnabled" value="true" />
...
</bean>
警告:不知道是功能还是错误。仅当您设置子进程时,子进程才会正确捕获所有线程结束...
async
end events
在这些更改之后,来自问题的过程在多线程模式下运行良好。