Activiti7工作流引擎:进阶篇(十) 多实例
一:多实例基本示例
@Test
void testStartAndComplete() {Map<String, Object> variables = new HashMap<>();variables.put("approveUserList", Arrays.asList("zhaomin", "xiaozhao", "zhouzhiruo"));runtimeService.startProcessInstanceByKey("multiInstance", variables);Task task = taskService.createTaskQuery().processDefinitionKey("multiInstance").singleResult();taskService.setAssignee(task.getId(),"zhangwuji");taskService.complete(task.getId());
}
二:多实例退回
- 删除act_ru_variable
- 删除act_ru_task
- 删除act_ru_execution
- 删除act_ru_identitylink
public class MultiInstanceMoveCommand implements Command<Object> {private String currentTaskId;private String targetTaskDefKey;public MultiInstanceMoveCommand(String currentTaskId, String targetTaskDefKey) {this.currentTaskId = currentTaskId;this.targetTaskDefKey = targetTaskDefKey;}@Overridepublic Object execute(CommandContext commandContext) {TaskEntityManager taskEntityManager = commandContext.getTaskEntityManager();TaskEntity taskEntity = taskEntityManager.findById(currentTaskId);ExecutionEntityManager executionEntityManager = commandContext.getExecutionEntityManager();// act_ru_execution.id_=30ExecutionEntity executionEntity = executionEntityManager.findById(taskEntity.getExecutionId());// act_ru_execution.id_=15ExecutionEntity parentExecutionEntity = executionEntityManager.findById(executionEntity.getParentId());// act_ru_execution.id_=(30, 31, 32)List<ExecutionEntity> childExecutionEntityList = executionEntityManager.findChildExecutionsByParentExecutionId(parentExecutionEntity.getId());// act_ru_execution.id_=[15, 30, 31, 32]Set<String> executionIdSet = new HashSet<>();executionIdSet.add(parentExecutionEntity.getId());for (ExecutionEntity childExecutionEntity : childExecutionEntityList) {executionIdSet.add(childExecutionEntity.getId());}IdentityLinkEntityManager identityLinkEntityManager = commandContext.getIdentityLinkEntityManager();identityLinkEntityManager.deleteIdentityLink(executionEntity, null, null, null);identityLinkEntityManager.deleteIdentityLink(parentExecutionEntity, null, null, null);VariableInstanceEntityManager variableInstanceEntityManager = commandContext.getVariableInstanceEntityManager();List<VariableInstanceEntity> variableInstanceEntityList = variableInstanceEntityManager.findVariableInstancesByExecutionIds(executionIdSet);for (VariableInstanceEntity variableInstanceEntity : variableInstanceEntityList) {variableInstanceEntityManager.delete(variableInstanceEntity);}taskEntityManager.deleteTasksByProcessInstanceId(taskEntity.getProcessInstanceId(), "删除子节点", true);executionEntityManager.deleteChildExecutions(parentExecutionEntity, "", true);FlowElement targetFlowElement = ProcessDefinitionUtil.getProcess(executionEntity.getProcessDefinitionId()).getFlowElement(targetTaskDefKey);parentExecutionEntity.setCurrentFlowElement(targetFlowElement);commandContext.getAgenda().planContinueProcessInCompensation(parentExecutionEntity);return null;}public String getCurrentTaskId() {return currentTaskId;}public void setCurrentTaskId(String currentTaskId) {this.currentTaskId = currentTaskId;}public String getTargetTaskDefKey() {return targetTaskDefKey;}public void setTargetTaskDefKey(String targetTaskDefKey) {this.targetTaskDefKey = targetTaskDefKey;}
}
@Test
public void testMoveTask() {String currentTaskId = "46";String targetTaskDefKey = "apply";MultiInstanceMoveCommand moveTaskCommand = new MultiInstanceMoveCommand(currentTaskId, targetTaskDefKey);managementService.executeCommand(moveTaskCommand);
}
Activiti7工作流引擎:进阶篇(十) 多实例相关推荐
- Activiti7 工作流引擎入门
Activiti7 工作流引擎入门 做课目的 一.适用人群: 普通人 不是每个人都能进入一线互联网大厂 BATJ 普通人,省城,软件公司,银行.政府做 二.适用项目:OA CRM ERP 系统 出差报 ...
- Activiti工作流引擎进阶【收藏可做笔记系列】
Activiti工作流引擎进阶 Activiti进阶 一.流程实例 什么是流程实例 启动流程实例 并添加Businesskey(业务标识) 操作数据库表 查询流程实例 关联BusinessKey 挂起 ...
- Activiti7工作流引擎:基础篇(一) 简介与IDEA插件安装
你不要一直不满他人,你应该一直检讨自己才对. 零:审批场景 对于请假流程我们有以下两种做法: 传统方式:写一个请假条,拿着请假条跑到项目经理那里签字,然后再拿着请假条去部门经理那里签字,然后再拿着请假 ...
- 学习笔记之-Activiti7工作流引擎,概述,环境搭建,类关系图,使用Activiti BPMN visualizer,流程变量,组任务 网关,Activiti整合Spring SpringBoot
本篇学习笔记是观看黑马程序员Activiti7视频而得 Activiti7 一.工作流介绍 1.1 概念 工作流(Workflow),就是通过计算机对业务流程自动化执行管理.它主要解决的是" ...
- Activiti7工作流引擎-环境搭建及创建数据库
第1章 什么是工作流 1.1工作流介绍 工作流(Workflow),就是通过计算机对业务流程自动化执行管理.它主要解决的是"使在多个参与者 之间按照某种预定义的规则自动进行传递文档.信息或任 ...
- Activiti7工作流引擎
什么是Activiti7 Activiti 下载地址: http://activiti.org/download.html Activiti 是一个工作流引擎, activiti 可以将 ...
- Activiti7工作流引擎:进阶篇(十二) 加签和转签
加签就是委派任务delegateTask,然后去解决任务resolveTask(并不是去真正的去完成任务). 转签完成后才能完成任务complete. 一:委派任务 A由于某些原因不能处理该任务可以把 ...
- 系列学习 SpringBoot + Activiti7 工作流之第 3 篇 —— 【进阶篇】流程实例、个人任务
查看之前的博客可以点击顶部的[分类专栏] 流程实例 1.什么是流程实例 一个流程实例包括了所有的运行节点.我们可以利用这个对象来了解当前流程实例的进度等信息.例如:用户或程序按照流程定义内容发起一个流 ...
- Activiti7工作流引擎:进阶篇(七) 调用子流程 CallActivityTask
知识传送门 >>>>>>>>>>>>>>>>>>> 造句:"朋友" ...
最新文章
- Linux内核系统时钟管理 感想总结 (未完待续)
- 8.2 高斯分布模型-机器学习笔记-斯坦福吴恩达教授
- 刷道谷歌泄漏的面试题:面试官想从中考察你什么?
- python 聚类算法包_Python聚类算法之DBSACN实例分析 python怎么用sklearn包进行聚类
- 通过ByteBuffer来操作byte
- LeetCode 831. 隐藏个人信息
- python实现路由功能_python 实现重启路由器
- 请谨慎使用sp_executesql
- 哪有什么岁月静好,不过是有人替你负重前行
- 我的docker随笔32:sftp服务部署
- Pass4side EMC E20-817认证考试题库
- ZigBee2006 CC2430 按键流程
- mapbox/minemap 获取比例尺
- 关于微信公众号,无法接受服务器消息的原因
- ui 名前空間の Aura コンポーネントの廃止
- 吃饭速度跟肥胖挂钩,吃太快容易长胖
- 51单片机寻迹小车完整程序
- 正大国际期货:如何提升外盘恒指交易技巧?
- 使用vba操作工作表,实现报表汇总
- 详解HTTPS通信流程,使用JDK,openssl,XCA进行证书认证详细操作,Spring Boot配置SSL证书实操