上面这些已经在流程变量设置的时候学会了 ,这里略。

参考: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-任务分配相关推荐

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

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

  2. 13、Activiti7工作流从入门到放弃

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

  3. Activiti7 工作流引擎入门

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

  4. 万字解析Activiti7流程框架

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

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

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

  6. Activiti7工作流流程详解

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

  7. 白盒测试实践作业任务分配

    将白盒测试实践作业进行了如下的任务分配: 测试用例清单 安秀芳 静态评审 罗阳刚.周成 自动化静态检查 滕怡天 基于Junit的单元测试脚本开发 罗琰琰.库博 安秀芳于今日完成了白盒测试的用例清单 滕 ...

  8. JStorm与Storm源码分析(二)--任务分配,assignment

    mk-assignments主要功能就是产生Executor与节点+端口的对应关系,将Executor分配到某个节点的某个端口上,以及进行相应的调度处理.代码注释如下: ;;参数nimbus为nimb ...

  9. 任务分配算法c语言,基于蚁群算法多Agent任务分配方法.pdf

    基于蚁群算法多Agent任务分配方法.pdf 第26 卷第4 期 湖 南 工 业 大 学 学 报 Vol.26 No.4 20 12 年7 月 Journal of Hunan University ...

  10. 会议室分配时间最长_论文导论动态任务分配GPU上图计算的高效处理方式

    编者按GPU作为一种硬件,相比较于CPU来说,有更多的并行度和更高的带宽,在图像处理领域取得了非常好的应用效果.越来越多的研究也正试图将GPU也应用到图计算领域中,然而GPU适合进行规则运算,但是图是 ...

最新文章

  1. 2013年全球最佳工作
  2. Spring 框架中的单例Beans 是线程安全的么?
  3. Angular依赖注入机制的一个错误消息:Error Cannot instantiate cyclic dependency!
  4. elastic 修改map_Amazon Elastic Map Reduce使用Apache Mahout计算建议
  5. 1073. Pearls
  6. 三机齐发!五大全球首发的“安卓机皇”4999元起,“安卓之光” 5999元起
  7. java接口_Java接口
  8. 超详细Python进行信用评分卡建模【kaggle的give me some credit数据集】【风控建模】
  9. PCIe协议中的电源管理概述
  10. 学习笔记(4):《微电子器件》陈星弼(第四版)第2章 PN结
  11. 小程序 | 微信小程序实现倒计时(节日校庆日等倒计时)
  12. 域中文件服务器的设置权限,域中文件服务器共享权限设置.pdf
  13. matlab小船渡河物理模型,高中物理 | 小船渡河模型和斜拉船模型
  14. 【揭秘】美团外卖日单量破1600万背后的“超级大脑”之订单分配
  15. WIN 7 系统 问题记录
  16. 如何利用计算机班级成绩分析,北京自考计算机应用基础课成绩分析报告
  17. KBQA知识问答概述
  18. mysql sphinx 中文搜索_MySQL中文全文搜索用迅搜还是Sphinx?
  19. 分享一个在线占位图制作工具
  20. 5款免费在线软件行为分析(在线沙盘)

热门文章

  1. total是什么牌子的电脑_Total Control告诉你如何在电脑上发朋友圈
  2. MFC Windows 程序设计[253]之美丽的编辑搜索框(附源码)
  3. 使用 ThreeJS 还原「流浪气球」
  4. 校园共享单车停放问题的调研
  5. 笑谈中国海军郑和号超级航母
  6. 通过宽高自适应设计两栏布局和三栏布局
  7. maven 添加外部jar包到本地仓库
  8. JavaScript 习题及面试题 4
  9. 2022年中小企业上云首选,华为云省钱攻略
  10. 2015,了不起的邮件创意!