Flowable-任务-手动任务

手动任务是指在没有业务流程执行引擎帮助下执行的任务,常用于建模人工操作。流程引擎只记录相关历史,不实际执行。示例中展示了手动任务在奖品发放流程中的应用,通过XML配置并使用执行监听器进行控制。手动任务在流程定义中通过特定标记表示,并可以通过扩展元素添加自定义逻辑。

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

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


定义

手动任务是预期在没有任何业务流程执行引擎或任何应用程序的帮助下执行的任务,它用于建
模那些引擎不需要知道的人所做的工作,以及那些不存在已知系统或 UI 界面的人所做的工作,一
般完善流程结构描述,不被引擎执行。例如,电话技术人员在客户位置安装电话。手工任务就是一
个自动执行的过程,流程引擎只是记录相关的流程历史数据,它用 taskService 查询不到的。

图形标记

手工任务显示为一个普通任务(圆角矩形),左上角是一个手型小图标,如图所示:

在这里插入图片描述

XML标记

手动任务的 XML 表示格式如下:

<manualTask id="manualTask1" name="手动任务" />

使用示例

下面我们看一个手动任务的使用示例,设计如图所示流程,这是一个现场兑奖示例流程,
当客户发起申请后,首先到达“管理员审核”用户任务节点,操作完成后流转到“奖品发放”手动
任务节点,自动往下执行到流程结束。

在这里插入图片描述

流程对应的 XML 内容如下

<process id="ManualTaskProcess" name="任务-手动任务" isExecutable="true">
    <startEvent id="af0d8560213fd4d8b9710b5188cdc6560">
        <extensionElements>
            <flowable:formData />
        </extensionElements>
    </startEvent>
    <userTask id="a35517e47548f45d49517458e1aab2be1" name="奖品兑换申请">
        <extensionElements>
            <flowable:formData />
            <flowable:assigneeType>static</flowable:assigneeType>
        </extensionElements>
    </userTask>
    <sequenceFlow id="a90f46869ab7e47f5a5e1c11745fcb3d5" sourceRef="af0d8560213fd4d8b9710b5188cdc6560" targetRef="a35517e47548f45d49517458e1aab2be1" />
    <endEvent id="Event_1dzfc7c" />
    <sequenceFlow id="Flow_0wcdlm3" sourceRef="Activity_0yvfkjj" targetRef="Event_1dzfc7c" />
    <manualTask id="Activity_0yvfkjj" name="奖品发放">
        <extensionElements>
            <flowable:executionListener class="com.dragon.test.bpmn.listener.ManualTaskExecutionListener" event="start" />
            <flowable:assigneeType>static</flowable:assigneeType>
            <flowable:formData />
        </extensionElements>
    </manualTask>
    <userTask id="Activity_1tmhc8f" name="主办方审核">
        <extensionElements>
            <flowable:formData />
            <flowable:assigneeType>static</flowable:assigneeType>
        </extensionElements>
    </userTask>
    <sequenceFlow id="Flow_05wn51h" sourceRef="a35517e47548f45d49517458e1aab2be1" targetRef="Activity_1tmhc8f" />
    <sequenceFlow id="Flow_0f26uqe" sourceRef="Activity_1tmhc8f" targetRef="Activity_0yvfkjj" />
</process>

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

@Slf4j
public class ManualTaskExecutionListener implements ExecutionListener {

    @Override
    public void notify(DelegateExecution execution) {
        //获取当前节点信息
        FlowElement currentFlowElement = execution.getCurrentFlowElement();
        log.info("到达手动任务,当前节点名称:{},备注:{}", currentFlowElement.getName(), currentFlowElement.getDocumentation());
        log.info("处理结果:奖品线下发放完成!");
    }
}

流程到达手动任务后,自动执行往下流转了。

视频地址:

手动任务

演示demo

手动任务

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小学生05101

flowable

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

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

打赏作者

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

抵扣说明:

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

余额充值