Flowable-任务-用户任务

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


定义

顾名思义,用户任务是需要人工参与处理的。当流程执行到用户任务节点时,流程引擎会给指指定的用户(办理人或候选人)或一组用户(候选组)创建待处理的任务项,等待用户的处理。
用户任务的参与者类型分为两种:⑴分配到一个用户(私有任务);⑵共享给多个用户(共享任务)。大部分的流程场景,一个用户任务通常被具体指派一个用户,在 Flowable 中称为办理人。另外在一些业务处理场景中,一个任务可以被共享给多个人,在 Flowable 中通过指派给多个候选人/ 候选组来实现,这类任务在流程引擎只创建一个任务实例,所有被共享的人都可以查询任务,候选人中的用户有权认领(claim)该任务并且完成该任务,当任务被领取之后,其他候选人即无法再看到此任务。
一个用户任务只允许分配一个办理人,但可以分配多个候选人/候选组。

图形标记

用户任务用左上角有一个小用户图标的标准任务(圆角矩形)表示。
在这里插入图片描述

XML标记

用户任务在XML中如下定义。其中id是必须属性,name是可选属性。

<userTask id="theTask" name="Important task" />

也可以为用户任务添加描述(description)。事实上任何BPMN 2.0元素都可以有描述。描述由documentation元素定义。
在这里插入图片描述

<userTask id="theTask" name="Schedule meeting" >
  <documentation>
      这是描述信息
  </documentation>
</userTask>

可以使用标准Java方式获取描述文本:task.getDescription()

属性描述

分配给办理人(assignee)

在这里插入图片描述

用户任务可以直接分配给一个用户,这个任务只能出现在该用户的个人任务列表中,而不会出现在其他人的任务列表中。只有这个用户能查看和办理这个任务,我们称之为办理人。

<userTask id="Activity_1hpkgvi" name="经理" flowable:assignee="${udept.code}">
    <extensionElements>
        <flowable:assigneeType>static</flowable:assigneeType>
    </extensionElements>
</userTask>

在这里插入图片描述

<userTask id="Activity_1hpkgvi" name="经理" flowable:candidateUsers="10000">
    <extensionElements>
        <flowable:assigneeType>idm</flowable:assigneeType>
        <flowable:idmCandidateUsers>
            [{"id":"1","name":"易烊千玺","code":"10000","sex":0,"mobile":null,"companyId":"1","companyName":"中国石化","deptId":"27","deptName":"领导班子"}]
        </flowable:idmCandidateUsers>
    </extensionElements>
</userTask>
到期日期(dueDate)

每个任务都可以使用一个字段标志该任务的到期日期(dueDate)。可以使用查询API,查询在给定日期前或后到期的任务。
可以在任务定义中使用扩展指定表达式,以在任务创建时设定到期日期。该表达式必须解析为java.util.Date,java.util.String (ISO8601格式),ISO8601时间长度(例如PT50M),或者null。例如,可以使用在流程里前一个表单中输入的日期,或者由前一个服务任务计算出的日期。如果使用的是时间长度,则到期日期基于当前时间加上给定长度计算。
例如当dueDate使用“PT30M”时,任务在从现在起30分钟后到期。

<userTask id="Activity_0zhp33g" name="经理" flowable:dueDate="P30M">
</userTask>

也可使用变量设置值:

<userTask id="Activity_0zhp33g" name="经理" flowable:dueDate="${dateVariable}">
</userTask>

任务的到期日期也可以使用TaskService,或者在TaskListener中使用传递的DelegateTask修改。

设置到期时间示例

在这里插入图片描述

用户指派

用户任务可以直接指派(assign)给用户。可以定义humanPerformer子元素来实现。humanPerformer需要resourceAssignmentExpression来实际定义用户。目前,只支持formalExpressions。

<process >
  ...
  <userTask id='theTask' name='important task' >
    <humanPerformer>
      <resourceAssignmentExpression>
        <formalExpression>kermit</formalExpression>
      </resourceAssignmentExpression>
    </humanPerformer>
  </userTask>
</process>

只能指定一个用户作为任务的humanPerformer。在Flowable术语中,这个用户被称作办理人(assignee)。拥有办理人的任务,在其他人的任务列表中不可见,而只能在该办理人的个人任务列表中看到。
可以通过TaskService获取特定用户办理的任务:

List<Task> tasks = taskService.createTaskQuery().taskAssignee("kermit").list();

视频地址:

用户任务
多实例用户任务

演示demo

用户任务
多实例用户任务

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

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小学生05101

flowable

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

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

打赏作者

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

抵扣说明:

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

余额充值