一、概要

  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看见:    

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

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

<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.查询候选任务

    //根据候选组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());  }//调用taskCandidateGroupInList<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());}

转载于:https://www.cnblogs.com/firebata/p/5253021.html

activiti任务TASK相关推荐

  1. Activiti reassign task to another user

    //早先胡乱尝试的其他方法,可能对于以后深入学习Activiti有些用处. //taskService.delegateTask(taskId, receiveUserId); //taskServi ...

  2. springMvc+mybatis+spring 整合 包涵整合activiti 基于maven

    2019独角兽企业重金招聘Python工程师标准>>> 最近自己独立弄一个activiti项目,写一下整合过程: 环境:jdk1.7 tomcat7.0 maven3.5  ecli ...

  3. Num55 boss09(activiti安装以及API)

    2019独角兽企业重金招聘Python工程师标准>>> 安装流程设计器插件: 使用框架提供的方式创建23张表: 流程部署,定义,启动&查询,办理任务: 流程的部署,查询,删除 ...

  4. 工作流引擎 Activiti 实战系列

    Activiti整合Spring 一.Activiti与Spring整合开发 1.1 Activiti与Spring整合的配置 1).在pom.xml文件引入坐标 如下 <properties& ...

  5. activiti 5.15.1 动态手动通过java编码方式,实现创建用户任务,动态指定个人,用户组,角色,指定监听的实现...

    因为我们的业务需要,最近一直在搞动态动过java程序实现为用户任务绑定监听程序.碰了很多壁,查看了API文档,最后终于在找到解决办法,所以贴出来,希望能够留个底,也能帮助有需要的人. -------- ...

  6. Activiti学习——Activiti与Spring集成

    与Spring集成 基础准备 目录结构 相关jar包 Activiti的相关jar包  Activiti依赖的相关jar包  Spring的相关jar包  Spring依赖的相关jar包  本示例相关 ...

  7. SpringBoot下的工作流Activiti开发

    1.准备pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns=" ...

  8. Activiti总体框架分析

    参考资料 activiti数据表结构 Activiti 5.16 用户手册 Activiti User Guide activiti与BPMN activiti源码 activiti_doc文档 En ...

  9. Activiti 工作流引擎的初步使用

    最近领导让我研究下工作流,于是查啊查就查到了Activiti,特么刚开始一直查的是Activity,查出来一堆Android的东西,我也是醉了.话不多说,下面就记录下这2天的研究成果吧. 所用环境 M ...

最新文章

  1. Android四大组件之BroadCastReceiver
  2. Python下tornado实现webSocket实现
  3. (45)npm全局安装包的位置
  4. 暴怒程序员的呐喊:别让我做那些没用的东西
  5. vue学习笔记-11-自定义指令
  6. 《西游记第一百零一回》第一百零一回观(转)
  7. Shadow插件化系列(一)简单详解
  8. 木头也要懂得讲故事的时代
  9. win10笔记本使用virtualbox鼠标失灵
  10. 登录界面BootStramp模板
  11. 2021-2027全球与中国紫外光固化胶市场现状及未来发展趋势
  12. NOI2003 智破连环阵
  13. 酷播云html5倍速功能视频播放器,Chrome扩展推荐:一个能16倍速播放的免费视频倍速播放器...
  14. (转)U-Boot启动过程--详细版的完全分析
  15. jquery 模拟点击事件
  16. JavaScript用Math.asin()求反正弦值
  17. python有哪些细节描写_什么是细节描写?它又包括哪些方面?
  18. obs显示无法连接到服务器,obs链接不到服务器
  19. 别找了,最全数据可视化配色指南在这
  20. (有趣)好玩的html代码

热门文章

  1. python until怎么用不了_为何你还不懂得如何使用Python协程
  2. java selenium_java+selenium,40行代码完成支付宝账单爬取
  3. uefi怎么添加linux启动项,LINUX下EFIBOOTMGR的使用,删除UEFI主板多余启动项和添加启动项...
  4. 福建省2013高职单招计算机类试题,13年福建-高职单招-计算机类试题及答案.doc
  5. python3 转码的函数_python基础3之文件操作、字符编码解码、函数介绍
  6. mysql锁表_MYSQL锁表问题的解决方法
  7. android camera 降低帧率_Android性能问题分析之bugreport
  8. 多表连接去重复 mysql_连接多个表时避免重复条目(MySQL)
  9. java中的pattern_Java Pattern的用法是什么?
  10. 力扣(LeetCode)刷题,简单题(第19期)