流程中的任务对应一组候选人,由一个或者多个user组成。

1.画流程图,定义候选人

(也可以通过过程变量传入,之前的文章《activiti7---用户任务的创建与执行》有用到过程变量)

2.流程定义的部署

 /*** 流程定义的部署*/@Testpublic void activitiDeployment() {//创建ProcessEngine对象ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();//得到RepositoryService,用于加载流程图,部署流程图RepositoryService repositoryService = processEngine.getRepositoryService();//部署Deployment deployment = repositoryService.createDeployment().addClasspathResource("leave.bpmn").name("leave").deploy();//输出部署信息System.out.println(deployment.getName());System.out.println(deployment.getId());}

3.执行流程实例

 /*** 执行流程实例*/@Testpublic void startProcessInstance() {ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();//第一个传入值对应bpmn中的id//businesskey对应具体的业务表的主键,例如请假详情中的请假天数,请假起始时间,请假原因等等。ProcessInstance processInstance = processEngine.getRuntimeService().startProcessInstanceByKey("_leave2","businesskey");}

4.候选人查询任务

/*** 候选人查询组任务*/@Testpublic void finGroupTaskList() {ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();// 流程定义keyString processDefinitionKey = "_leave2";// 任务候选人String candidateUser = "a";//创建tastServerviceTaskService taskService = processEngine.getTaskService();//根据候选人查询组任务List<Task> list = taskService.createTaskQuery().processDefinitionKey(processDefinitionKey).taskCandidateUser(candidateUser).list();list.forEach(l -> {System.out.println("任务名称: " + l.getName());System.out.println("任务id: " + l.getId());});}

5.拾取(claim)任务,组任务变为个人任务

/*** 拾取任务,组任务变为个人任务*/@Testpublic void claimTask() {ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();//创建tastServerviceTaskService taskService = processEngine.getTaskService();//任务idString taskId = "147502";//候选人idString username= "a";//校验候选人是否有拾取任务的资格Task task = taskService.createTaskQuery().taskId(taskId).taskCandidateUser(username).singleResult();if (task != null) {taskService.claim(taskId, username);System.out.println("任务拾取成功");}}

6.归还任务,个人任务变为组任务

当拿到组任务之后又不想执行时,可以归还任务,但自己依旧可以拾取这个任务

/*** 归还任务,个人务变为组任务*/@Testpublic void setAssigneeToGroupTask() {ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();//创建tastServerviceTaskService taskService = processEngine.getTaskService();//任务idString taskId = "147502";//任务负责人String username= "a";//校验任务负责人是否有资格Task task = taskService.createTaskQuery().taskId(taskId).taskAssignee(username).singleResult();if (task != null) {taskService.claim(taskId, null);System.out.println("归还组任务成功");}}

7.任务交接,任务负责人将任务交给其他候选人办理

/*** 任务交接,任务负责人将任务交给其他候选人办理*/@Testpublic void setAssigneeToCandidateUser() {ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();//创建tastServerviceTaskService taskService = processEngine.getTaskService();//任务idString taskId = "147502";//任务负责人String username = "a";//校验任务负责人是否有资格Task task = taskService.createTaskQuery().taskId(taskId).taskAssignee(username).singleResult();if (task != null) {// 将此任务交给其它候选人办理该 任务String candidateuser = "b";//校验候选人是否有拾取任务的资格Task task2 = taskService.createTaskQuery().taskId(taskId).taskCandidateOrAssigned(candidateuser).singleResult();if (task2 != null) {taskService.setAssignee(taskId, candidateuser);System.out.println("任务交接成功");}}}

8.查询个人任务

    /*** 查询当前任务*/@Testpublic void findMyCurrentTask() {ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();String asssignee = "b";List<Task> list = processEngine.getTaskService().createTaskQuery().taskAssignee(asssignee).list();list.forEach(task -> {System.out.println("任务ID:" + task.getId());System.out.println("任务名称:" + task.getName());System.out.println("任务创建时间:" + task.getCreateTime());System.out.println("任务的处理人:" + task.getAssignee());System.out.println("任务的实例ID:" + task.getProcessDefinitionId());System.out.println("执行对象的ID:" + task.getExecutionId());System.out.println("任务的班里人:" + task.getAssignee());System.out.println("流程定义ID:" + task.getProcessInstanceId());});}

9.执行任务

   /*** 处理任务*/@Testpublic void completeTask() {ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();String taskId = "147502";String asssignee = "b";//创建tastServerviceTaskService taskService = processEngine.getTaskService();//校验是否有权限,根据任务id和assignee查得到任务,说明有权限Task task = taskService.createTaskQuery().taskId(taskId).taskAssignee(asssignee).singleResult();if (task != null) {taskService.complete(taskId);System.out.println("完成任务id=" + taskId);}}

activiti7---候选人相关推荐

  1. 学习笔记之-Activiti7工作流引擎,概述,环境搭建,类关系图,使用Activiti BPMN visualizer,流程变量,组任务 网关,Activiti整合Spring SpringBoot

    本篇学习笔记是观看黑马程序员Activiti7视频而得 Activiti7 一.工作流介绍 1.1 概念 工作流(Workflow),就是通过计算机对业务流程自动化执行管理.它主要解决的是" ...

  2. Activiti7 工作流引擎入门

    Activiti7 工作流引擎入门 做课目的 一.适用人群: 普通人 不是每个人都能进入一线互联网大厂 BATJ 普通人,省城,软件公司,银行.政府做 二.适用项目:OA CRM ERP 系统 出差报 ...

  3. Activiti7工作流引擎

    什么是Activiti7 Activiti 下载地址: http://activiti.org/download.html        Activiti 是一个工作流引擎, activiti 可以将 ...

  4. 【Aactiviti7 从入门到放弃】(一)Activiti7工作流引擎入门

    目录 4.3 SpringBoot2与Activiti7整合 官方文档 https://activiti.gitbook.io/activiti-7-developers-guide/getting- ...

  5. 万字解析Activiti7流程框架

    养成习惯,先赞后看!!! 如果没有看前一篇文章的小伙伴,可以先去看一下之前的一篇文章:还在自己手写请假流程吗?Activiti7帮你快速请假!!!,再来看这篇文章. 目录 Activiti7流程框架基 ...

  6. 【activiti】activiti7集成springboot2.5教程

    文章目录 环境准备 导入activiti的核心jar包: yml核心配置: 创建bpmn图: activiti核心api: RuntimeService :运行时服务 TaskService: 任务服 ...

  7. 工作流实战之Activiti7

    文章目录 楔子 Activiti 介绍 Activiti 官网 BPMN 建模语言 Activiti 使用步骤 引入依赖 添加配置 日志配置 Activiti 配置 初始化数据库表 新建数据库 act ...

  8. 工作流(activiti7)-进阶使用(流程实例,个人任务,组任务)(三)

    工作流(activiti7)教程-简单的介绍和使用(一) 工作流(activiti7)教程-简单的介绍和使用(二) 工作流(activiti7)-进阶使用(流程实例,个人任务,组任务)(三) 工作流( ...

  9. 七万字掌握热门工作流引擎框架Activiti7,附带视频讲解哦

    Activiti7   工作流(Workflow),就是通过计算机对业务流程自动化执行管理.它主要解决的是"使在多个参与者之间按照某种预定义的规则自动进行传递文档.信息或任务的过程,从而实现 ...

  10. Activiti7工作流流程详解

    前言 工作流程是我们日常开发项目中常见的功能,本文主要springboot整合activiti7,梳理activiti在工作中的一些常见用法和功能 一.工作流介绍 1.1 概述 工作流(Workflo ...

最新文章

  1. 影像组学视频学习笔记(11)-支持向量机(SVM)(理论)、Li‘s have a solution and plan.
  2. 利用 VMWare 搭建随机拓扑网络
  3. is_valid校验机制
  4. python哪些类型可以作为迭代器_详解Python迭代和迭代器
  5. IDEA @Override is not allowed when implementing interface method(转载)
  6. 2020-3-20前端题目
  7. violinplot如何看懂_一张图告诉你如何看懂个股大趋势
  8. 信息系统工程监理服务及营销策略
  9. GameJS——Game Library written in JavaScript
  10. Race Condition是什么
  11. 超级搜索术1-信息搜索/资源搜索
  12. c语言各种古怪的写法
  13. html中如何使用正方形符号,正方形符号如何用MathType编辑
  14. 怎么制作升温曲线图_炉温曲线图是怎么看的啊!
  15. python马蜂窝网站的爬取和简单分析。
  16. 插件式编程SBP框架极简教程(基于SpringBoot)
  17. 基于web的学生管理系统(一)简介
  18. (总结)Nginx/LVS/HAProxy负载均衡软件的优缺点详解 (转载)
  19. Google和Edge翻译问题解决方法整理
  20. Pytorch实战 | P6 好莱坞明星图片识别(深度学习实践pytorch)

热门文章

  1. 《内网安全攻防:渗透测试实战指南》读书笔记(三):隐藏通信隧道技术
  2. HTML如何修改乱码,html网页乱码怎么修改
  3. python操作腾讯文档_Python操作Excel文档
  4. tesseract 字典下载_qq阅读官方下载-QQ阅读器下载V7.5.0.888官方最新版
  5. cad快速看图2020|cad迷你画图2020 附安装教程
  6. idea查找当前方法的实现_intellij idea快速查看当前类中的所有方法(推荐)
  7. 2021中职网络空间安全国赛Web渗透测试
  8. PS CS4抽出滤镜抠图小技巧
  9. 3D相机成像原理简介
  10. JAVA常用框架及漏洞