Activiti - 任务回退到上一步
来源:互联网 发布:世界政治格局 知乎 编辑:程序博客网 时间:2024/06/04 00:27
package com.studio.util;import java.util.ArrayList;import java.util.List;import java.util.Map;import org.activiti.engine.HistoryService;import org.activiti.engine.IdentityService;import org.activiti.engine.ProcessEngine;import org.activiti.engine.ProcessEngines;import org.activiti.engine.RepositoryService;import org.activiti.engine.RuntimeService;import org.activiti.engine.TaskService;import org.activiti.engine.history.HistoricTaskInstance;import org.activiti.engine.identity.Group;import org.activiti.engine.identity.User;import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity;import org.activiti.engine.impl.pvm.PvmActivity;import org.activiti.engine.impl.pvm.PvmTransition;import org.activiti.engine.impl.pvm.process.ActivityImpl;import org.activiti.engine.impl.pvm.process.ProcessDefinitionImpl;import org.activiti.engine.impl.pvm.process.TransitionImpl;import org.activiti.engine.runtime.ProcessInstance;import org.activiti.engine.task.Task;public class ActivitiUtil {private static ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();private static IdentityService identityService = processEngine.getIdentityService();private static RuntimeService runtimeService = processEngine.getRuntimeService(); private static TaskService taskService = processEngine.getTaskService(); private static RepositoryService repositoryService = processEngine.getRepositoryService(); private static HistoryService historyService = processEngine.getHistoryService();public static void TaskRollBack(String taskId){ try { Map<String, Object> variables; // 取得当前任务 HistoricTaskInstance currTask = historyService .createHistoricTaskInstanceQuery().taskId(taskId) .singleResult(); // 取得流程实例 ProcessInstance instance = runtimeService .createProcessInstanceQuery() .processInstanceId(currTask.getProcessInstanceId()) .singleResult(); if (instance == null) { //流程结束 } variables = instance.getProcessVariables(); // 取得流程定义 ProcessDefinitionEntity definition = (ProcessDefinitionEntity) (processEngine.getRepositoryService().getProcessDefinition(currTask .getProcessDefinitionId())); if (definition == null) { //log.error("流程定义未找到"); return ; } // 取得上一步活动 ActivityImpl currActivity = ((ProcessDefinitionImpl) definition) .findActivity(currTask.getTaskDefinitionKey()); List<PvmTransition> nextTransitionList = currActivity .getIncomingTransitions(); // 清除当前活动的出口 List<PvmTransition> oriPvmTransitionList = new ArrayList<PvmTransition>(); List<PvmTransition> pvmTransitionList = currActivity .getOutgoingTransitions(); for (PvmTransition pvmTransition : pvmTransitionList) { oriPvmTransitionList.add(pvmTransition); } pvmTransitionList.clear(); // 建立新出口 List<TransitionImpl> newTransitions = new ArrayList<TransitionImpl>(); for (PvmTransition nextTransition : nextTransitionList) { PvmActivity nextActivity = nextTransition.getSource(); ActivityImpl nextActivityImpl = ((ProcessDefinitionImpl) definition) .findActivity(nextActivity.getId()); TransitionImpl newTransition = currActivity .createOutgoingTransition(); newTransition.setDestination(nextActivityImpl); newTransitions.add(newTransition); } // 完成任务 List<Task> tasks = taskService.createTaskQuery() .processInstanceId(instance.getId()) .taskDefinitionKey(currTask.getTaskDefinitionKey()).list(); for (Task task : tasks) { taskService.complete(task.getId(), variables); historyService.deleteHistoricTaskInstance(task.getId()); } // 恢复方向 for (TransitionImpl transitionImpl : newTransitions) { currActivity.getOutgoingTransitions().remove(transitionImpl); } for (PvmTransition pvmTransition : oriPvmTransitionList) { pvmTransitionList.add(pvmTransition); } return ; } catch (Exception e) { return ; }}}
0 1
- Activiti - 任务回退到上一步
- activiti选择上一步下一步处理人
- activiti学习--13:组任务分配方式1直接方式+查询正在执行的任务办理人表+查询历史任务的办理人表+拾取任务+将个人任务回退到组任务+向组任务中添加/删除成员
- 上一步
- activiti 工作流任务回退sql实现
- 如何禁止浏览器中点回退按钮能回退到上一页?
- git 回退到某版本后,再在此版本上更新,无法push
- Activiti定时任务示例
- Activiti定时任务示例
- Activiti 邮件任务
- activiti 多实例任务
- activiti会签任务设置
- activiti 多实例任务
- activiti 多实例任务
- 【转】activiti用户任务
- 【转】activiti用户任务
- Activiti获取任务候选人
- activiti任务分配
- Java I/O中的对象序列化
- 连通、弱连通
- JAVA反射总结
- Leetcode---Subsets
- Java反射小结
- Activiti - 任务回退到上一步
- ZOJ 1610 Count the Colors (线段树+结点为长度为一的区间+树的遍历)
- 题目1002:Grading
- Windbg 专题学习
- redis常用命令、常见错误、配置技巧等分享
- 欢迎使用CSDN-markdown编辑器
- 除了中国,iPhone市场份额在全球都下降
- java序列化的作用
- Oracle存储过程基本语法