Camunda流程引擎笔记(四):Send Task,Receive Task

本文介绍了BPMN中的SendTask和ReceiveTask的使用,SendTask用于发送消息,ReceiveTask用于接收消息并等待。当ReceiveTask接收到特定消息后,流程将继续执行。通过JavaDelegate实现回调,演示了如何配置和测试这两个任务的交互流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

一、Send Task

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

 

二、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流程。

 

三、测试

  • 编写Java回调类并绑定给Send Task

    这里的.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流程可以看到以下错误:

     

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

  • 启动Receive Task流程实例。

     

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

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

     

    点击Running Process Instances

     

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

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

     

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

     

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

注:内容在原文上有些许修改,修改后则不会报原文会报的错误。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值