activiti参考5-任务TASK

简介:

一、概要

1,设计TASK的表主要是:ACT_RU_TASK,ACT_HI_TASKINST(见参考-activiti表);

2,任务主要有:人工任务(usertask),服务任务(servicetask)等;

3,候选人/候选组(candidate):可以执行任务的一类人或者多个组,候选人/候选组中都可以去签收任务,一旦某人签收,就成为受理人,其他人就不能再签收受理此任务;usertask流程图中,candidate标示候选;候选人涉及的表ACT_RU_IDENTITYLINK;

4,受理人(assignee):有两种情况,一种是候选人/组中有人签收任务后成为受理人,另外一种是流程图中直接指定受理人,但是可以指定一个动态受理人;受理人涉及的表ACT_RU_TASK;

5,持有人(owner):持有人设置主要是存入历史表中,用于历史任务的查询,涉及的表ACT_HI_TASKINST;

二、任务操作

1,创建TASK任务与设置权限:可以使用代码创建任务,但是实际操作中都是绘制流程图。绘制TASK后,在属性可以设置候选人和受理人,一般都是设置候选人,因为固定受理人不太符合程序变动;

候选人设置了deptleader,该值将部署在表ACT_RU_IDENTITYLINK中,查看xml看见:

1
2
3
//设置了候选组
  < userTask  id = "deptLeaderAudit"  name = "部门领导审批"  activiti:candidateGroups = "deptLeader" >
  </ userTask >

 

完整的XML(无图形位置信息)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
< process  id = "leave"  name = "请假流程"  isExecutable = "true" >
     < documentation >请假流程演示</ documentation >
     < startEvent  id = "startevent1"  name = "Start"  activiti:initiator = "applyUserId" ></ startEvent >
     < userTask  id = "deptLeaderAudit"  name = "部门领导审批"  activiti:candidateGroups = "deptLeader" ></ userTask >
     < exclusiveGateway  id = "exclusivegateway5"  name = "Exclusive Gateway" ></ exclusiveGateway >
     < userTask  id = "modifyApply"  name = "调整申请"  activiti:assignee = "${applyUserId}" >
       < extensionElements >
         < activiti:taskListener  event = "complete"  delegateExpression = "${afterModifyApplyContentProcessor}" ></ activiti:taskListener >
       </ extensionElements >
     </ userTask >
     < userTask  id = "hrAudit"  name = "人事审批"  activiti:candidateGroups = "hr" ></ userTask >
     < exclusiveGateway  id = "exclusivegateway6"  name = "Exclusive Gateway" ></ exclusiveGateway >
     < userTask  id = "reportBack"  name = "销假"  activiti:assignee = "${applyUserId}" >
       < extensionElements >
         < activiti:taskListener  event = "complete"  delegateExpression = "${reportBackEndProcessor}" ></ activiti:taskListener >
       </ extensionElements >
     </ userTask >
     < endEvent  id = "endevent1"  name = "End" ></ endEvent >
     < exclusiveGateway  id = "exclusivegateway7"  name = "Exclusive Gateway" ></ exclusiveGateway >
     < sequenceFlow  id = "flow2"  sourceRef = "startevent1"  targetRef = "deptLeaderAudit" ></ sequenceFlow >
     < sequenceFlow  id = "flow3"  sourceRef = "deptLeaderAudit"  targetRef = "exclusivegateway5" ></ sequenceFlow >
     < sequenceFlow  id = "flow4"  name = "不同意"  sourceRef = "exclusivegateway5"  targetRef = "modifyApply" >
       < conditionExpression  xsi:type = "tFormalExpression" > <![CDATA[${!deptLeaderPass}]]> </ conditionExpression >
     </ sequenceFlow >
     < sequenceFlow  id = "flow5"  name = "同意"  sourceRef = "exclusivegateway5"  targetRef = "hrAudit" >
       < conditionExpression  xsi:type = "tFormalExpression" > <![CDATA[${deptLeaderPass}]]> </ conditionExpression >
     </ sequenceFlow >
     < sequenceFlow  id = "flow6"  sourceRef = "hrAudit"  targetRef = "exclusivegateway6" ></ sequenceFlow >
     < sequenceFlow  id = "flow7"  name = "同意"  sourceRef = "exclusivegateway6"  targetRef = "reportBack" >
       < conditionExpression  xsi:type = "tFormalExpression" > <![CDATA[${hrPass}]]> </ conditionExpression >
     </ sequenceFlow >
     < sequenceFlow  id = "flow8"  sourceRef = "reportBack"  targetRef = "endevent1" ></ sequenceFlow >
     < sequenceFlow  id = "flow9"  name = "不同意"  sourceRef = "exclusivegateway6"  targetRef = "modifyApply" >
       < conditionExpression  xsi:type = "tFormalExpression" > <![CDATA[${!hrPass}]]> </ conditionExpression >
     </ sequenceFlow >
     < sequenceFlow  id = "flow10"  name = "重新申请"  sourceRef = "exclusivegateway7"  targetRef = "deptLeaderAudit" >
       < conditionExpression  xsi:type = "tFormalExpression" > <![CDATA[${reApply}]]> </ conditionExpression >
     </ sequenceFlow >
     < sequenceFlow  id = "flow11"  sourceRef = "modifyApply"  targetRef = "exclusivegateway7" ></ sequenceFlow >
     < sequenceFlow  id = "flow12"  name = "结束流程"  sourceRef = "exclusivegateway7"  targetRef = "endevent1" >
       < conditionExpression  xsi:type = "tFormalExpression" > <![CDATA[${!reApply}]]> </ conditionExpression >
     </ sequenceFlow >
   </ process >

 

2,查询候选任务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
//根据候选组ID查询拥有任务
List<Task> tasks = taskService
                     .createTaskQuery()
                     .taskCandidateGroup(groupA.getId())
                     .list();
for  (Task task : tasks) 
{System.out.println(task.getName());}  
 
//根据用户ID查询任务
tasks = taskService
         .createTaskQuery()
         .taskCandidateUser(user.getId())
         .list();
for  (Task task : tasks) 
{System.out.println(task.getName());}
 
//调用taskCandidateGroupIn
List<String> groupIds =  new  ArrayList<String>();
     groupIds.add(groupA.getId());
     groupIds.add(groupB.getId());
tasks = taskService
         .createTaskQuery()
         .taskCandidateGroupIn(groupIds)
         .list();
for  (Task task : tasks)
  {System.out.println(task.getName());}
  
//查询权限数据
List<IdentityLink> links = taskService
                            .getIdentityLinksForTask(tasks.get( 0 )
                            .getId());
System.out.println( "关系数据量: "  + links.size());}

 

本文转自二郎三郎博客园博客,原文链接:http://www.cnblogs.com/haore147/p/5213430.html,如需转载请自行联系原作者
相关文章
|
5月前
|
XML 移动开发 Java
如何启动flowable的Flowable UI画工作流程图
如何启动flowable的Flowable UI画工作流程图
92 0
|
12月前
24activiti - 流程变量(启动流程实例)
24activiti - 流程变量(启动流程实例)
28 0
|
12月前
|
XML 存储 API
Flowable入门:开启你的第一个Flowable BPMN程序(二)
Flowable入门:开启你的第一个Flowable BPMN程序
451 0
|
12月前
|
XML Java API
Flowable入门:开启你的第一个Flowable BPMN程序(一)
Flowable入门:开启你的第一个Flowable BPMN程序
391 0
|
Java API 容器
【Deprecated】Gradle | 进阶篇(Project & Task & 构建生命周期)
【Deprecated】Gradle | 进阶篇(Project & Task & 构建生命周期)
473 0
【Deprecated】Gradle | 进阶篇(Project & Task & 构建生命周期)
|
Java 应用服务中间件 Spring
《SpringBoot启动流程四》:图文带你debug源码分析SpringApplication运行阶段和运行后阶段
《SpringBoot启动流程四》:图文带你debug源码分析SpringApplication运行阶段和运行后阶段
242 0
《SpringBoot启动流程四》:图文带你debug源码分析SpringApplication运行阶段和运行后阶段
|
XML 存储 SQL
Activiti-介绍和使用步骤
Activiti-介绍和使用步骤
Activiti-介绍和使用步骤
|
XML 数据可视化 Java
Activiti-ProcessEngine创建方式和Servcie介绍
Activiti-ProcessEngine创建方式和Servcie介绍
Activiti-ProcessEngine创建方式和Servcie介绍
|
XML 数据库 数据格式
Activiti 6.x【4】activiti 基础流程demo
版权声明:转载注明出处就OK的说,有些东西会转载,都会注明的说= =如果有冒犯麻烦见谅 https://blog.csdn.net/Pan1458689676/article/details/82597026 Activiti6.x 基础流程demo 接下来是一个demo了,首先,先把数据库清理一下,虽然不清理也没啥事。
1940 0