如何使用Camunda BPMN发送任务和接收任务

时间:2014-06-18 06:07:45

标签: camunda

我是Camunda BPMN 2.0的新手,我需要有关如何实现和使用从一个池到另一个池的发送和接收任务的帮助。

1 个答案:

答案 0 :(得分:5)

将JavaDelegate实现附加到发送任务:

<sendTask id="sendTask" camunda:class="org.camunda.bpm.MySendTaskDelegate" />

MySendTaskDelegate内,将消息与另一个流程实例中的接收任务相关联:

public class MySendTaskDelegate implements JavaDelegate {

  public void execute(DelegateExecution execution) throws Exception {

    execution.getProcessEngineServices()
      .getRuntimeService()
      .createMessageCorrelation("someMessage")
      .processInstanceBusinessKey("someBusinessKey")
      .correlate();

  }

}

这假定,

  1. 等待流程实例的businessKey值为someBusinessKey。启动流程实例时可以提供业务密钥。
  2. 等待流程实例有一个带有消息名称someMessage的接收任务。可以使用<message ... />元素在BPMN 2.0 xml中指定接收任务的消息名称。请参阅:http://docs.camunda.org/latest/api-references/bpmn20/#tasks-receive-task