Flowable-任务-接受任务

✨✨✨ 最好用的Flowable流程设计器


定义

接收任务是一种简单任务,它会等待对应消息的到达。当流程执行到达接收任务时,流程状态会持
久化到数据库中,这意味着该流程将一直处于等待状态,直到引擎接收到一个特定的消息为止,该消息
将触发离开接收任务继续往下执行。

图形标记

接收任务显示为一个普通任务(圆角矩形),左上角是一个消息小图标,如图所示:

在这里插入图片描述

需要在注意的是,接收任务中的消息图标是白色的(黑色的消息图标表示已经发送的意思)。

XML标记

接收任务的 XML 表示格式如下:

<receiveTask id="receiveTask1" name="接受任务" />

使用示例

流程到达接收任务后,会进入一个等待状态,通常用于由外部完成的但需要耗费一定时间的工作,
当完成工作后,要使得流程继续往下执行,可以调用 runtimeService.trigger(executionId)方法,其中
executionId 是执行到此接收任务的执行实例的 id。下面我们看一接收务的使用示例,设计如图所示
流程,这是一个账号激活示例流程,当客户发起申请后,首先到达“管理员审核”用户任务节点,操作
完成后流转到“等待激活结果”接收任务节点,直到接收到对应消息后继续往下执行到流程结束。

在这里插入图片描述

流程对应的 XML 内容如下

 <process id="receiveTaskProcess" name="任务-接收任务" isExecutable="true">
    <startEvent id="a6f37f9b227774dd68879a4cae79865a8" />
    <userTask id="a9a3ceaf2c4d64de2af1f861772ac516a" name="账号激活申请">
        <extensionElements>
            <flowable:formData />
            <flowable:assigneeType>static</flowable:assigneeType>
        </extensionElements>
    </userTask>
    <sequenceFlow id="a08c7bb0990b14e6ab2d878a8ec43a303" sourceRef="a6f37f9b227774dd68879a4cae79865a8" targetRef="a9a3ceaf2c4d64de2af1f861772ac516a" />
    <receiveTask id="Activity_1uxmlgz" name="等待激活结果">
        <extensionElements>
            <flowable:executionListener class="com.dragon.test.bpmn.listener.ReceiveTaskExecutionListener" event="end" />
            <flowable:assigneeType>static</flowable:assigneeType>
            <flowable:formData />
        </extensionElements>
    </receiveTask>
    <userTask id="Activity_1g60ycx" name="管理员审核">
        <extensionElements>
            <flowable:formData />
            <flowable:assigneeType>static</flowable:assigneeType>
        </extensionElements>
    </userTask>
    <endEvent id="Event_1vyjmzt" />
    <sequenceFlow id="Flow_0be9ua9" sourceRef="a9a3ceaf2c4d64de2af1f861772ac516a" targetRef="Activity_1g60ycx" />
    <sequenceFlow id="Flow_1xf4w9a" sourceRef="Activity_1g60ycx" targetRef="Activity_1uxmlgz" />
    <sequenceFlow id="Flow_0v1w6nx" sourceRef="Activity_1uxmlgz" targetRef="Event_1vyjmzt" />
</process>

在以上流程定义中,接收任务 Activity_1uxmlgz 使用 flowable:executionListener 元素定义了一个执行监听器,
该元素并不属于 BPMN2.0 规范,而是 Flowable 扩展出来的元素。在这里设置的执行监听器会在节点结束
(event 属性为 end)时执行。关于执行监听器更详细的介绍和用法,详见第 17 章。这里例子中的执行监
听器 ReceiveTaskExecutionListener 内容如下:

@Slf4j
public class ReceiveTaskExecutionListener implements ExecutionListener {
    @Override
    public void notify(DelegateExecution execution) {
        FlowElement currentFlowElement = execution.getCurrentFlowElement();
        log.info("当前为接收任务,节点名称:{},备注:{}", currentFlowElement.getName(), currentFlowElement.getDocumentation());
        String result = (String)execution.getVariable("result");
        log.info("接收任务已被触发,处理结果为:{}", result);
    }
}

视频地址:

接受任务

演示demo

接受任务

本文中内容和案例出自贺波老师的书《深入Activiti流程引擎:核心原理与高阶实战》,书中的介绍更全面、详细,推荐给大家。
深入Activiti流程引擎

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小学生05101

flowable

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值