Activiti7-任务分配
上面这些已经在流程变量设置的时候学会了 ,这里略。
参考:Activiti7-流程变量_ZHOU_VIP的博客-CSDN博客
错别字:认领任务
设计一个流程,设置候选人
错了,应该设置在候选人那里
由于修改了流程设计,需要重新部署流程,所以改成leave17.bpmn20.xml
后来又改成leave18.bpmn20.xml
部署流程:
启动流程:
张三提交申请:
查询任务:
奇怪,候选人都没有接受到任务,因为张三提交申请中if(task != null)做了判断,没有执行
taskService.complete(task.getId());
查询候选人任务:
任务责任人为null,所以需要候选人认领任务
候选人认领任务:
查询任务:
wangwu已经收到了任务
查询组任务:
什么都没有,说明wangwu已经把组任务变成了个人任务
任务的归还:
归还后查询组任务:
候选人lisi认领任务:
查询任务:
lisi完成任务:
查询任务:
上面文档说的很明白,只要有一个候选人审批就可以
奇怪, 总经理的责任人id为null,想了下,原来是流程设计的时候忘记设置了
可以补充设置下:
map.put("assignee2","周总经理");
这个后面再测试吧
还有任务的交接也后面再测试吧
参考代码:
package com.nanjing;import com.nanjing.pojo.Evection;
import org.activiti.engine.*;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.junit.Test;import java.util.HashMap;
import java.util.List;
import java.util.Map;/*** 测试候选人*/
public class TestCandidate {/*** 流程部署*/@Testpublic void testDeployment(){
// 1、创建ProcessEngineProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// 2、获取RepositoryServcieRepositoryService repositoryService = processEngine.getRepositoryService();
// 3、使用service进行流程的部署,定义一个流程的名字,把bpmn和png部署到数据中Deployment deploy = repositoryService.createDeployment().name("出差申请流程-Candidate").addClasspathResource("leave18.bpmn20.xml").deploy();
// 4、输出部署信息System.out.println("流程部署id="+deploy.getId());System.out.println("流程部署名字="+deploy.getName());}/*** 启动流程 的时候设置流程变量*/@Testpublic void testStartProcess(){
// 获取流程引擎ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// 获取RunTimeServiceRuntimeService runtimeService = processEngine.getRuntimeService();
// 流程定义的KeyString key = "myEvection18";
// 启动流程//runtimeService.startProcessInstanceByKey(key);// 创建变量集合Map<String, Object> map = new HashMap<>();
// 创建出差pojo对象Evection evection = new Evection();
// 定义流程变量,把出差pojo对象放入mapmap.put("evection",evection);map.put("assignee0","张三");map.put("assignee2","周总经理");
// 启动流程实例,并设置流程变量的值(把map传入)ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(key, map);}/*** 查询组任务*/@Testpublic void findGroupTaskList(){// 流程定义的KeyString key = "myEvection18";
// 任务候选人String candidateUser = "wangwu";
// 获取引擎ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// 获取TaskServiceTaskService taskService = processEngine.getTaskService();
// 查询组任务List<Task> taskList = taskService.createTaskQuery().processDefinitionKey(key).taskCandidateUser(candidateUser) //根据候选人查询任务.list();for (Task task : taskList) {System.out.println("========================");System.out.println("流程实例ID="+task.getProcessInstanceId());System.out.println("任务id="+task.getId());System.out.println("任务负责人="+task.getAssignee());}}/*** 候选人拾取任务*/@Testpublic void claimTask(){
// 获取引擎ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// 获取TaskServiceTaskService taskService = processEngine.getTaskService();
// 当前任务的idString taskId = "5002";
// 任务候选人String candidateUser = "lisi";
// 查询任务Task task = taskService.createTaskQuery().taskId(taskId).taskCandidateUser(candidateUser).singleResult();if(task != null){
// 拾取任务taskService.claim(taskId,candidateUser);System.out.println("taskid-"+taskId+"-用户-"+candidateUser+"-拾取任务完成");}}/*** 任务的归还*/@Testpublic void testAssigneeToGroupTask(){
// 获取引擎ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// 获取TaskServiceTaskService taskService = processEngine.getTaskService();
// 当前任务的idString taskId = "5002";
// 任务负责人String assignee = "wangwu";
// 根据key 和负责人来查询任务Task task = taskService.createTaskQuery().taskId(taskId).taskAssignee(assignee).singleResult();if(task != null){
// 归还任务 ,就是把负责人 设置为空taskService.setAssignee(taskId,null);System.out.println("taskid-"+taskId+"-归还任务完成");}}/*** 任务的交接*/@Testpublic void testAssigneeToCandidateUser(){
// 获取引擎ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// 获取TaskServiceTaskService taskService = processEngine.getTaskService();
// 当前任务的idString taskId = "5002";
// 任务负责人String assignee = "lisi";
// 任务候选人String candidateUser = "wangwu";
// 根据key 和负责人来查询任务Task task = taskService.createTaskQuery().taskId(taskId).taskAssignee(assignee).singleResult();if(task != null){
// 交接任务 ,就是把负责人 设置为空taskService.setAssignee(taskId,candidateUser);System.out.println("taskid-"+taskId+"-交接任务完成");}}/*** 完成个人任务*/@Testpublic void completTask(){
// 流程定义的KeyString key = "myEvection18";
// 任务负责人String assingee = "lisi";
// String assingee = "";// 获取流程引擎ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// 获取taskserviceTaskService taskService = processEngine.getTaskService();
// 查询任务Task task = taskService.createTaskQuery().processDefinitionKey(key).taskAssignee(assingee).singleResult();if(task != null){// 根据任务id来 完成任务taskService.complete(task.getId());}}@Testpublic void queryTask(){
// 流程定义的KeyString key = "myEvection18";
// 任务负责人//String assingee = "张财务";// 获取流程引擎ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// 获取taskserviceTaskService taskService = processEngine.getTaskService();
// 查询任务final List<Task> tasks = taskService.createTaskQuery().processDefinitionKey(key)
// .taskAssignee(assingee).list();for(Task task:tasks){// 根据任务id来 完成任务System.out.println(task.getId());System.out.println(task.getName());System.out.println(task.getAssignee());}}
}
参考:
学习笔记之-Activiti7工作流引擎,概述,环境搭建,类关系图,使用Activiti BPMN visualizer,流程变量,组任务 网关,Activiti整合Spring SpringBoot_努力敲代码买猪脚啃的博客-CSDN博客_activiti bpmn visualizer
补充老师没有讲的监听器:
Activiti7-任务分配相关推荐
- 学习笔记之-Activiti7工作流引擎,概述,环境搭建,类关系图,使用Activiti BPMN visualizer,流程变量,组任务 网关,Activiti整合Spring SpringBoot
本篇学习笔记是观看黑马程序员Activiti7视频而得 Activiti7 一.工作流介绍 1.1 概念 工作流(Workflow),就是通过计算机对业务流程自动化执行管理.它主要解决的是" ...
- 13、Activiti7工作流从入门到放弃
1.工作流介绍 1.工作流简介 工作流(Workflow),就是通过计算机对业务流程自动化执行管理.它主要解决的是"使在多个参与者之间按照某种预定义的规则自动进行传递文档.信息或任务的过程, ...
- Activiti7 工作流引擎入门
Activiti7 工作流引擎入门 做课目的 一.适用人群: 普通人 不是每个人都能进入一线互联网大厂 BATJ 普通人,省城,软件公司,银行.政府做 二.适用项目:OA CRM ERP 系统 出差报 ...
- 万字解析Activiti7流程框架
养成习惯,先赞后看!!! 如果没有看前一篇文章的小伙伴,可以先去看一下之前的一篇文章:还在自己手写请假流程吗?Activiti7帮你快速请假!!!,再来看这篇文章. 目录 Activiti7流程框架基 ...
- 七万字掌握热门工作流引擎框架Activiti7,附带视频讲解哦
Activiti7 工作流(Workflow),就是通过计算机对业务流程自动化执行管理.它主要解决的是"使在多个参与者之间按照某种预定义的规则自动进行传递文档.信息或任务的过程,从而实现 ...
- Activiti7工作流流程详解
前言 工作流程是我们日常开发项目中常见的功能,本文主要springboot整合activiti7,梳理activiti在工作中的一些常见用法和功能 一.工作流介绍 1.1 概述 工作流(Workflo ...
- 白盒测试实践作业任务分配
将白盒测试实践作业进行了如下的任务分配: 测试用例清单 安秀芳 静态评审 罗阳刚.周成 自动化静态检查 滕怡天 基于Junit的单元测试脚本开发 罗琰琰.库博 安秀芳于今日完成了白盒测试的用例清单 滕 ...
- JStorm与Storm源码分析(二)--任务分配,assignment
mk-assignments主要功能就是产生Executor与节点+端口的对应关系,将Executor分配到某个节点的某个端口上,以及进行相应的调度处理.代码注释如下: ;;参数nimbus为nimb ...
- 任务分配算法c语言,基于蚁群算法多Agent任务分配方法.pdf
基于蚁群算法多Agent任务分配方法.pdf 第26 卷第4 期 湖 南 工 业 大 学 学 报 Vol.26 No.4 20 12 年7 月 Journal of Hunan University ...
- 会议室分配时间最长_论文导论动态任务分配GPU上图计算的高效处理方式
编者按GPU作为一种硬件,相比较于CPU来说,有更多的并行度和更高的带宽,在图像处理领域取得了非常好的应用效果.越来越多的研究也正试图将GPU也应用到图计算领域中,然而GPU适合进行规则运算,但是图是 ...
最新文章
- 2013年全球最佳工作
- Spring 框架中的单例Beans 是线程安全的么?
- Angular依赖注入机制的一个错误消息:Error Cannot instantiate cyclic dependency!
- elastic 修改map_Amazon Elastic Map Reduce使用Apache Mahout计算建议
- 1073. Pearls
- 三机齐发!五大全球首发的“安卓机皇”4999元起,“安卓之光” 5999元起
- java接口_Java接口
- 超详细Python进行信用评分卡建模【kaggle的give me some credit数据集】【风控建模】
- PCIe协议中的电源管理概述
- 学习笔记(4):《微电子器件》陈星弼(第四版)第2章 PN结
- 小程序 | 微信小程序实现倒计时(节日校庆日等倒计时)
- 域中文件服务器的设置权限,域中文件服务器共享权限设置.pdf
- matlab小船渡河物理模型,高中物理 | 小船渡河模型和斜拉船模型
- 【揭秘】美团外卖日单量破1600万背后的“超级大脑”之订单分配
- WIN 7 系统 问题记录
- 如何利用计算机班级成绩分析,北京自考计算机应用基础课成绩分析报告
- KBQA知识问答概述
- mysql sphinx 中文搜索_MySQL中文全文搜索用迅搜还是Sphinx?
- 分享一个在线占位图制作工具
- 5款免费在线软件行为分析(在线沙盘)