0

我需要在我的流程中创建并行运行的服务任务。

尝试使用异步属性创建最简单的流程:

在此处输入图像描述

循环基数 = 5(例如)

我发现在activiti.xml配置中需要添加这个属性:

    <property name="asyncExecutorActivate" value="true" />

但是流程仍然在一个线程中运行。

我错过了什么?

如何正确激活异步?

4

1 回答 1

1
  1. 在上面的示例中激活异步并行执行 - 需要将异步设置为开启Call Service而不是开启Sub Process

  2. 一旦我们使用 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>
    

    警告:不知道是功能还是错误。仅当您设置子进程时,子进程才会正确捕获所有线程结束...asyncend events

在这些更改之后,来自问题的过程在多线程模式下运行良好。

于 2017-09-14T15:58:11.957 回答