一:多实例基本示例

@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());
}

二:多实例退回

  1. 删除act_ru_variable
  2. 删除act_ru_task
  3. 删除act_ru_execution
  4. 删除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工作流引擎:进阶篇(十) 多实例相关推荐

  1. Activiti7 工作流引擎入门

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

  2. Activiti工作流引擎进阶【收藏可做笔记系列】

    Activiti工作流引擎进阶 Activiti进阶 一.流程实例 什么是流程实例 启动流程实例 并添加Businesskey(业务标识) 操作数据库表 查询流程实例 关联BusinessKey 挂起 ...

  3. Activiti7工作流引擎:基础篇(一) 简介与IDEA插件安装

    你不要一直不满他人,你应该一直检讨自己才对. 零:审批场景 对于请假流程我们有以下两种做法: 传统方式:写一个请假条,拿着请假条跑到项目经理那里签字,然后再拿着请假条去部门经理那里签字,然后再拿着请假 ...

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

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

  5. Activiti7工作流引擎-环境搭建及创建数据库

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

  6. Activiti7工作流引擎

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

  7. Activiti7工作流引擎:进阶篇(十二) 加签和转签

    加签就是委派任务delegateTask,然后去解决任务resolveTask(并不是去真正的去完成任务). 转签完成后才能完成任务complete. 一:委派任务 A由于某些原因不能处理该任务可以把 ...

  8. 系列学习 SpringBoot + Activiti7 工作流之第 3 篇 —— 【进阶篇】流程实例、个人任务

    查看之前的博客可以点击顶部的[分类专栏] 流程实例 1.什么是流程实例 一个流程实例包括了所有的运行节点.我们可以利用这个对象来了解当前流程实例的进度等信息.例如:用户或程序按照流程定义内容发起一个流 ...

  9. Activiti7工作流引擎:进阶篇(七) 调用子流程 CallActivityTask

    知识传送门 >>>>>>>>>>>>>>>>>>> 造句:"朋友" ...

最新文章

  1. Linux内核系统时钟管理 感想总结 (未完待续)
  2. 8.2 高斯分布模型-机器学习笔记-斯坦福吴恩达教授
  3. 刷道谷歌泄漏的面试题:面试官想从中考察你什么?
  4. python 聚类算法包_Python聚类算法之DBSACN实例分析 python怎么用sklearn包进行聚类
  5. 通过ByteBuffer来操作byte
  6. LeetCode 831. 隐藏个人信息
  7. python实现路由功能_python 实现重启路由器
  8. 请谨慎使用sp_executesql
  9. 哪有什么岁月静好,不过是有人替你负重前行
  10. 我的docker随笔32:sftp服务部署
  11. Pass4side EMC E20-817认证考试题库
  12. ZigBee2006 CC2430 按键流程
  13. mapbox/minemap 获取比例尺
  14. 关于微信公众号,无法接受服务器消息的原因
  15. ui 名前空間の Aura コンポーネントの廃止
  16. 吃饭速度跟肥胖挂钩,吃太快容易长胖
  17. 51单片机寻迹小车完整程序
  18. 正大国际期货:如何提升外盘恒指交易技巧?
  19. 使用vba操作工作表,实现报表汇总
  20. 详解HTTPS通信流程,使用JDK,openssl,XCA进行证书认证详细操作,Spring Boot配置SSL证书实操

热门文章

  1. 笔记本也瑜枷,联想展示最新概念机
  2. Color国际青年公寓
  3. JS中删除数组中重复的元素
  4. numpy获取二维数组某一行、某一列
  5. miniconda的介绍和基本使用
  6. Centos7在公网使用PCDN拨号
  7. 使Activity关闭后不执行onDestroy()
  8. matlab数学建模-神经网络感知器函数
  9. 三菱FX5U传送指令
  10. Scrapy爬取中文数据的问题