5
流程引擎中Send TaskService Task拥有相同的行为,都是通过回调Java代码完成相应逻辑。通常Send TaskReceive Task配合使用。

一、Send Task

绘制一个Send Task流程,配置过程和Service Task一样。

image-20200320112548056.png

二、Receive Task

A Receive Task is a simple task that waits for the arrival of a certain message. When the process execution arrives at a Receive Task, the process state is committed to the persistence storage. This means that the process will stay in this wait state until a specific message is received by the engine, which triggers continuation of the process beyond the Receive Task.

翻译:接收任务是一个简单的任务,它等待特定消息的到来。当流程执行到达接收任务时,流程状态被提交到持久性存储。这意味着流程将保持这种等待状态,直到引擎接收到特定的消息,这将触发Receive任务之外的流程继续。

简单来说就是流程到达Receive Task节点后将持久化这个状态直到接收到一个特定的消息,才会继续往下走。

绘制一个Receive Task流程。

image-20200320113242502.png

三、测试

  • 编写Java回调类。

    这里的.createMessageCorrelation("message")中配置了上面流程图中的Message Name填写字符串。

    .processInstanceBusinessKey("messageBusinessKey")中填写了一个特定的业务key,方便找到特定的Receive Task流程。

    public class SendTaskDelegate implements JavaDelegate {
        @Override
        public void execute(DelegateExecution execution) throws Exception {
            execution.getProcessEngineServices()
                    .getRuntimeService()
                    .createMessageCorrelation("message")
                    .processInstanceBusinessKey("messageBusinessKey")
                    .correlate();
        }
    }
  • 启动流程。

    首先启动Send Task流程可以看到以下错误:

    image-20200320113637028.png

    很明显,这是提示我们需要首先启动一个Receive Task流程实例以接收Send Task流程实例发送的消息。

    启动Send Task流程实例。

    image-20200320113836231.png

    这里Business Key填写了上面代码中配置的messageBusinessKey

    访问http://localhost:8080/app/cockpit/default/#/dashboard,可以看到有一个活动中的流程:

    image-20200320114058415.png

    点击Running Process Instances

    image-20200320114128639.png

    这里显示Receive Task流程停止在了receive message节点上。

    接下来启动一个Send Task流程实例:

    image-20200320114332673.png

    再次访问http://localhost:8080/app/cockpit/default/#/dashboard,可以看到已经没有执行中的流程了:

    image-20200320114419936.png

    说明Receive Task流程已经接受到了Send Task流程发送的message消息,所以流程继续执行直到结束。


悠然自得
85 声望46 粉丝

随便写写