flowable 任务办理方式与办理人设置探讨

原文链接:https://blog.csdn.net/zhongzk69/article/details/91489038
flowable的办理方式,分为两种:签收模式办理和直接办理。

术语:

Assignee: 任务的受理人,即执行人。它有两种情况(有值,NULL)

Owner: 任务的委托人。

CandidateGroup: 候选用户组

CandidateUser: 候选人

delegateTask: 委派任务/签收的任务

resolveTask: 委派任务的代办,任务的拥有者把任务委派他人来办理,他人办完后,又重新回到任务拥有者,会产生流转记录。

turnTask: 转办任务,只是改变当前任务的办理人而已,不会产生流转记录。

CompleteTask: 完成任务,或叫办结提交下一步。

claimTask:任务签收

一、签收后办理模式

任务创建后,流程进入一个等待状态,需要用户去签收任务,即接收任务的一个过程。原理就是它的执行实例表act_ru_execution创建了一条记录,但act_ru_task表中是没有创建这个记录,只有签收后act_ru_task才会生成一条任务记录。签收办理人,可以分为:候选人(一人或者多人,之间逗号分开)和候选用户组(一个或者多个组,之间逗号分开)。

这种模式就是任务的抢占模式,谁先签收,这个任务就归谁。真实的任务其实只有一条,只是还没有在act_ru_task生成。

二、直接办理模式

任务创建后,直接给了提交到下一个节点,给下一个节点创建任务时,就指定了这个任务的受理人(Assignee_)

三、直接办理任务三种指派人方式:

(1)xml流程模型中直接设置固定死的用户id或者用户账号,例如:

  <userTask id="usertask1" name="审批"  flowable:assignee="userId2"></userTask>

  也可以配置成候选人或者候选组方式。

(2)任务节点上设置流程变量,这个流程变量的值由上一个节点来设置,例如:

  <userTask id="usertask1" name="审批" flowable:assignee="#{userId}"></userTask>

(3)自定义一个监听类,实现TaskListener接口,细节查看如何定义监听器类及配置到流程模型xml中相关章节。

四、候选人和候选组的配置:

有一张数据库表和它有关:

act_ru_identitylink,这个表里有几个字段要理解一下:group_id(候选组时有值),User_id(候选人模式有值 ),Type(指明是候选人还是候选组),如下:

在这里插入图片描述
版权声明:本文为CSDN博主「热水钟」的原创文章,遵循CC 4.0 by-sa版权协议
原文链接:https://blog.csdn.net/zhongzk69/article/details/91489038

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flowable 是一个开源的工作流引擎,它可以帮助我们设计和执行各种类型的工作流程。在 Flowable 中,我们可以通过设置任务监听器来对任务的生命周期进行监听和处理。 要设置任务监听器,需要按照以下步骤进行操作: 1. 创建一个实现了 org.flowable.engine.delegate.TaskListener 接口的监听器类,该接口定义了任务监听器的回调方法。 2. 在该监听器类中,实现需要的任务生命周期回调方法,如 `notify` 方法。你可以根据自己的需求在这些方法中编写相应的逻辑。 3. 在流程定义文件(BPMN 文件)中,为任务节点添加监听器属性,并引用上一步创建的监听器类。 具体示例请参考以下代码: ```java import org.flowable.engine.delegate.DelegateTask; import org.flowable.engine.delegate.TaskListener; public class MyTaskListener implements TaskListener { @Override public void notify(DelegateTask delegateTask) { // 在这里编写任务生命周期回调时需要执行的逻辑 // 可以获取任务相关信息,如任务ID、任务名称、任务负责人等 // delegateTask.getId(); // delegateTask.getName(); // delegateTask.getAssignee(); } } ``` 然后,在流程定义文件的任务节点中添加监听器属性: ```xml <userTask id="task1" name="My Task" flowable:assignee="${assignee}"> <extensionElements> <flowable:taskListener event="create" expression="${myTaskListener}" /> </extensionElements> </userTask> ``` 在上述代码中,`${assignee}` 是一个表达式,用于设置任务的负责人。`${myTaskListener}` 是一个表达式,用于引用上面创建的监听器类。 这样,当流程执行到该任务节点时,任务监听器类中的相应方法将被调用,并可以执行你定义的逻辑。 希望以上信息对你有帮助!如有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值