flowable实战(十二)flowable 任务办理方式与办理人设置探讨

flowable的办理方式,分为两种:签收模式办理和直接办理。数据库

术语:ide

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

Owner: 任务的委托人。blog

CandidateGroup: 候选用户组接口

CandidateUser: 候选人it

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

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

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

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

claimTask:任务签收

1、签收后办理模式

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

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

2、直接办理模式

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

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

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

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

      也能够配置成候选人或者候选组方式。

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

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

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

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

<userTask id="usertask2" name="部门经理审批" flowable:candidateGroups="group1,group2"></userTask>

<userTask id="usertask2" name="部门经理审批" flowable:candidateUsers="user1,user2"></userTask>

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

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

è¿éåå¾çæè¿°