Activiti 学习(三)—— Activiti 流程启动并完成
Activiti 流程启动
流程定义部署后,就可以通过工作流管理业务流程了,也就是说前文部署的出差申请流程可以使用了。针对该流程,启动一个流程表示发起一个新的出差申请单,这就相当于 java 类与 java 对象的关系,类定义好后需要创建一个对象使用,也可以创建多个对象。对于出差申请流程,张三发起一个出差申请单需要启动一个流程实例,李四发起一个出差申请单也需要启动一个流程实例
Activiti 流程启动主要有两种方式,分别是根据 processDefinitionKey 启动和根据 processDefinitionId 启动
1. 根据 processDefinitionKey 启动
processDefinitionKey 就是 act_re_procdef 表的 KEY_ 字段的值,是对应的流程定义的 key
@Test
public void testStartProcess() {
// 1. 创建 ProcessEngine
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// 2. 获取 RuntimeService
RuntimeService runtimeService = processEngine.getRuntimeService();
// 3. 根据 processDefinitionKey 启动流程
ProcessInstance instance = runtimeService.startProcessInstanceByKey("evection");
}
2. 根据 processDefinitionId 启动
processDefinitionId 就是 act_re_procdef 的主键 ID 例如 evection:1:22503
@Test
public void testStartProcess() {
// 1. 创建 ProcessEngine
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// 2. 获取 RuntimeService
RuntimeService runtimeService = processEngine.getRuntimeService();
// 3. 根据 processDefinitionKey 启动流程
ProcessInstance instance = runtimeService.startProcessInstanceById("evection:1:22503");
}
Activiti 个人任务查询
流程启动后,任务的负责人就可以查询自己当前需要处理的任务,查询出来的任务都是该用户的待办任务
public void testFindPersonTaskList() {
// 1. 获取流程引擎
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// 2. 获取 taskService
TaskService taskService = processEngine.getTaskService();
// 3. 获取流程 key 和任务的负责人,查询任务
List<Task> taskList = taskService.createTaskQuery()
.processDefinitionKey("evection") // 流程key
.taskAssignee("zhangsan") // 要查询的负责人
.list();
// 4. 输出
for (Task task : taskList) {
System.out.println("流程实例 id = " + task.getProcessInstanceId());
System.out.println("任务 id = " + task.getId());
System.out.println("任务负责人 = " + task.getAssignee());
System.out.println("任务名称 = " + task.getName());
}
}
Activiti 完成个人任务
根据任务 id,也就是 查找任务并处理
public void completeTask() {
// 1. 获取流程引擎
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// 2. 获取 TaskService
TaskService taskService = processEngine.getTaskService();
// 3. 根据任务id 完成任务
taskService.complete("25005");
}
每次都要查找任务 id 很麻烦,一般来说,是任务负责人查询待办任务,选择任务进行处理,完成任务,那我们就能根据任务负责人和任务 key 来查找任务并完成
public void completeTask() {
// 1. 获取流程引擎
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// 2. 获取 TaskService
TaskService taskService = processEngine.getTaskService();
// 3. 获取 jerry - evection 对应的任务
Task task = taskService.createTaskQuery()
.processDefinitionKey("evection")
.taskAssignee("jerry")
.singleResult();
// 4. 根据任务 id 完成任务
taskService.complete(task.getId());
}
以此类推,直至整个出差流程完成
Activiti 学习(三)—— Activiti 流程启动并完成的更多相关文章
- activiti学习5:开启流程和流程前进
目录 activiti学习5:开启流程和流程前进 一.流程和任务的关系 二.开启流程 2.1根据流程定义key开启流程 三.查询用户任务 3.1 TaskQuery 四.完成任务 activiti学习 ...
- Activiti学习笔记4 — 流程实例化
1.创建流程引擎对象 private ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); 2.启动流程 流程 ...
- Activiti学习笔记3 — 流程定义
一.创建流程引擎对象 private ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); 二.发布一个流程 ...
- activiti笔记三 Activiti问题重现
测试的时候出现一个异常: ContextLoader.initWebApplicationContext(308) | Context initialization failed org.spring ...
- activiti学习资料(架构描述)
Activiti学习资料 Activiti是业界很流行的java工作流引擎,关于Activiti与JBPM5的关系和如何选择不是本文要讨论的话题,相关内容可以baidu一下.Activiti从架构角度 ...
- Activiti学习笔记目录
1.Activiti学习笔记1 — 下载与开发环境的配置: 2.Activiti学习笔记2 — HelloWorld: 3.Activiti学习笔记3 — 流程定义: 4.Activiti学习笔记4 ...
- activiti 学习( 三 ) 之 流程启动者
在启动一个流程时,我们会有将当前用户启动的流程保存起来,作为流程发起人(启动人.申请人.提交人) 而在保存这个流程启动者信息,api 没有明确规范该怎么存.所以这里我总结下我学到的保存流程启动者信息的 ...
- activiti学习6:启动流程后动态获取流程图
目录 activiti学习6:启动流程后动态获取流程图 一.绘图原理 二.根据流程定义id绘图 三.根据流程实例id绘图 3.1 基本原理 3.2 当前节点的获取 3.3 走过的节点的获取 3.4 绘 ...
- activiti学习3:流程引擎对象和流程引擎配置对象
目录 activiti学习3:流程引擎对象和流程引擎配置对象 一.activiti的简单使用流程 二.流程引擎配置对象ProcessEngineConfiguration的介绍 三.activiti配 ...
随机推荐
- Vue 脚手架学习
首先就是安装脚手架 npm install @vue/cil -g 全局安装 在这里我遇到一个问题:安装不了脚手架,报错显示: 通过苦逼的查找原因就是 以前使用的taobao镜像 导致的,删除镜像换成 ...
- 靶机Cyberry
工具 hydra.crunch.dirbuster 涉及到的点 Port knocking(端口试探) Brainfuck编码 ftp爆破 ssh爆破 openssl enc加密 命令执行漏洞 Lin ...
- C++ //关系运算符重载 < = > !=
1 //关系运算符重载 < = > != 2 #include <iostream> 3 #include <string> 4 using namespace s ...
- CVE-2020-1472
主要记下流程 我擦,这个洞mimikatz也可以搞 但是我就不记录了 检验漏洞是否存在 https://github.com/SecuraBV/CVE-2020-1472 先获取域控信息 然后测试能否 ...
- 做了两年多的安卓,突然想转Java后端,感觉Android职业前景不太好,转还是不转?
近几年相信很多Android开发者都有过这种想法,最终还是有些Android 开发选择了转行,但是还有些开发者选择了坚持. 因为现在Android开发确实竞争很大,很多公司抛出几个岗位,每天能收到成百 ...
- IDEA永久使用!!(很全)
IDEA虽然好用,但是下载后只能试用30天,烦恼呀!所以今天就带来IDEA的激活版来帮助大家摆脱30天的苦恼! 准备工作: 破解所需要的软件和jar都在网盘里,需要的自行下载,在这里idea安装就不带 ...
- Sqli-Labs less13-16
less-13 首先,输入用户名和密码,发现只有成功和失败两种显示,没有数据回显: 然后我们抓包拿到数据: 我们通过上述观察,已经知道这是典型的盲注,可以采用布尔盲注或者时间盲注. 构造注入语句:un ...
- 常见的六种容错机制:Fail-Over、Fail-Fast、Fail-Back、Fail-Safe,Forking 和 Broadcast
目录 1.Fail-Over:故障转移 2.Fail-Fast:快速失败 3.Fail-Back:失效自动恢复 4.Fail-Safe:失效安全 5.Forking:并行调用多个服务 6.Broadc ...
- K8s 部署 Gitlab
K8s 版本:1.20.6 这里使用的镜像不是官方的,而是 Gitlab 容器化中使用非常多的一个第三方镜像:sameersbn/gitlab,基本上和官方保持同步更新.地址:http://www.d ...
- linux ftp ubuntu18.04 实测有效 完整方法 vsftpd
https://linuxize.com/post/how-to-setup-ftp-server-with-vsftpd-on-ubuntu-18-04/ 除了此链接完整有效,其他网友 大都残缺不全 ...