异步启动过程

时间:2018-07-02 17:21:18

标签: camunda

我想确保每个Camunda流程实例都以异步方式启动,而不管流程定义如何。 Configure Asynchronous Continuations文档建议此行为要求将每个开始事件标记为“异步之前”属性:

  

使用camunda:asyncBefore扩展属性在流程级启动事件上启用流程实例的异步实例化。实例化后,将创建流程实例并将其保留在数据库中,但是将推迟执行。

是否有一种方法可以使用org.camunda.bpm.engine.RuntimeService或其他Java代码在每个流程定义中的每个启动事件上不应用“异步之前”属性,而无需使用“异步之前”属性?

RuntimeService公开了异步方法,但仅用于删除操作,例如有deleteProcessInstancesAsync(),但没有startProcessInstanceById**Async**()方法。

1 个答案:

答案 0 :(得分:1)

根据thorben's注释,可以使用BpmnParseListener方法实现自定义parseStartEvent()

public class AsyncBeforeStartListener extends AbstractBpmnParseListener {

  @Override
  public void parseStartEvent(Element startEventElement, ScopeImpl scope,
          ActivityImpl startEventActivity) {
    startEventActivity.setAsyncBefore(true);
  }

}