Activiti 跳转节点
来源:互联网 发布:java生成六位验证码 编辑:程序博客网 时间:2024/06/05 14:50
Activiti 跳转节点
1、跳转主要代码。
package com.Deer.activiti;import java.util.Iterator; import java.util.Map; import org.activiti.engine.impl.interceptor.Command; import org.activiti.engine.impl.interceptor.CommandContext; import org.activiti.engine.impl.persistence.entity.ExecutionEntity; import org.activiti.engine.impl.persistence.entity.ExecutionEntityManager; import org.activiti.engine.impl.persistence.entity.TaskEntity; import org.activiti.engine.impl.pvm.process.ActivityImpl; /** * * 节点的跳转 */ public class NodeJumpTaskCmd implements Command<Void> {protected String executionId;//执行IDprotected ActivityImpl desActivity; //目标引擎对象 protected Map<String, Object> paramvar;//变量protected ActivityImpl currentActivity;//当前引擎对象protected String deleteReason = "completed";/** * 构造参数 可以根据自己的业务需要添加更多的字段 * @param executionId * @param desActivity * @param paramvar * @param currentActivity */ public NodeJumpTaskCmd(String executionId, ActivityImpl desActivity, Map<String, Object> paramvar, ActivityImpl currentActivity) { this.executionId = executionId; this.desActivity = desActivity; this.paramvar = paramvar; this.currentActivity = currentActivity; }public NodeJumpTaskCmd(String executionId, ActivityImpl desActivity, Map<String, Object> paramvar, ActivityImpl currentActivity,String deleteReason) { this.executionId = executionId; this.desActivity = desActivity; this.paramvar = paramvar; this.currentActivity = currentActivity; this.deleteReason = deleteReason; }/** * 获取执行实体管理 * 获取当前的任务执行对象 设置对应的值 * 获取当前的任务 * 删除 * 执行目标工作流 */public Void execute(CommandContext commandContext) {//获取执行实体管理ExecutionEntityManager executionEntityManager = commandContext.getExecutionEntityManager(); //根据ExecutionID 查找执行实体 获取当前流程的executionId,因为在并发的情况下executionId是唯一的。 ExecutionEntity executionEntity = executionEntityManager.findExecutionById(executionId); executionEntity.setVariables(paramvar); executionEntity.setEventSource(this.currentActivity); executionEntity.setActivity(this.currentActivity); //获取当前ExecutionID的任务 根据executionId 获取Task Iterator<TaskEntity> localIterator = commandContext.getTaskEntityManager() .findTasksByExecutionId(this.executionId).iterator(); while (localIterator.hasNext()) { TaskEntity taskEntity = (TaskEntity) localIterator.next(); // 触发任务监听 taskEntity.fireEvent("complete"); // 删除任务的原因 commandContext.getTaskEntityManager() .deleteTask(taskEntity, this.deleteReason, false); } executionEntity.executeActivity(this.desActivity); System.out.println();return null; } }
package com.Deer.activiti.util;import java.util.Map;import org.activiti.engine.ProcessEngine;import org.activiti.engine.RepositoryService;import org.activiti.engine.impl.pvm.ReadOnlyProcessDefinition;import org.activiti.engine.impl.pvm.process.ActivityImpl;import com.activiti.activiti.NodeJumpTaskCmd;public class NodeJumpTaskCmdUtil {/** * 跳转节点 * @param processEngine流程引擎 * @param vars该节点带有的参数 * @param executionIdOrProcInsId执行ID或者实例ID * @param destinationActivityNodeId目标节点ID * @param currentActivityNodeId当前节点ID */public static void jumpTask(ProcessEngine processEngine,Map<String, Object> vars,String executionIdOrProcInsId,String destinationActivityNodeId,String currentActivityNodeId){RepositoryService repositoryService = processEngine.getRepositoryService(); ReadOnlyProcessDefinition processDefinitionEntity = (ReadOnlyProcessDefinition) repositoryService .getProcessDefinition("leave:1:4"); //执行IDString executionId = executionIdOrProcInsId;// 目标节点 ActivityImpl destinationActivity = (ActivityImpl) processDefinitionEntity.findActivity(destinationActivityNodeId); // 当前节点 ActivityImpl currentActivity = (ActivityImpl)processDefinitionEntity.findActivity(currentActivityNodeId); processEngine.getManagementService().executeCommand( new NodeJumpTaskCmd(executionId, destinationActivity, vars, currentActivity)); }public static void jumpTask(ProcessEngine processEngine,Map<String, Object> vars,String executionIdOrProcInsId,String destinationActivityNodeId,String currentActivityNodeId,String deleteReason){RepositoryService repositoryService = processEngine.getRepositoryService(); ReadOnlyProcessDefinition processDefinitionEntity = (ReadOnlyProcessDefinition) repositoryService .getProcessDefinition("leave:1:4"); //执行IDString executionId = executionIdOrProcInsId;// 目标节点 ActivityImpl destinationActivity = (ActivityImpl) processDefinitionEntity.findActivity(destinationActivityNodeId); // 当前节点 ActivityImpl currentActivity = (ActivityImpl)processDefinitionEntity.findActivity(currentActivityNodeId); processEngine.getManagementService().executeCommand( new NodeJumpTaskCmd(executionId, destinationActivity, vars, currentActivity,deleteReason)); }public void jumpTaskNext(){}}3、测试
package com.Deer.activiti;import java.util.HashMap;import java.util.Map;import org.activiti.engine.ProcessEngine;import org.activiti.engine.ProcessEngineConfiguration;import org.activiti.engine.RepositoryService;import org.activiti.engine.impl.pvm.ReadOnlyProcessDefinition;import org.activiti.engine.impl.pvm.process.ActivityImpl;public class Test {public static void main(String[] args) {ProcessEngine processEngine = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml").buildProcessEngine();Map<String, Object> vars = new HashMap<String, Object>(); //String[] v = { "张三", "李四", "王五"}; //vars.put("assigneeList", Arrays.asList(v)); RepositoryService repositoryService = processEngine.getRepositoryService(); ReadOnlyProcessDefinition processDefinitionEntity = (ReadOnlyProcessDefinition) repositoryService .getProcessDefinition("leave:1:4"); // 目标节点 ActivityImpl destinationActivity = (ActivityImpl) processDefinitionEntity .findActivity("usertask3"); String executionId = "2501"; // 当前节点 ActivityImpl currentActivity = (ActivityImpl)processDefinitionEntity .findActivity("usertask2"); processEngine.getManagementService().executeCommand( new NodeJumpTaskCmd(executionId, destinationActivity, vars, currentActivity)); }}
阅读全文
0 0
- activiti节点跳转
- activiti节点动态跳转
- Activiti 跳转节点
- Activiti工作流节点的自由跳转
- Activiti工作流节点的自由跳转
- Activiti工作流节点的自由跳转
- 也谈一下Activiti工作流节点的自由跳转
- 也谈一下Activiti工作流节点的自由跳转
- Activiti 指定节点跳转(适合退回、撤回)流程
- 扩展Activiti-5.12轻松实现流程节点间自由跳转和任意驳回/撤回
- 扩展Activiti-5.12轻松实现流程节点间自由跳转和任意驳回/撤回
- activiti---获取活动节点
- Activiti获得下一个节点
- activiti任意跳转
- activiti 如何获取下一步节点
- activiti 如何获取下一步节点
- activiti 如何获取下一步节点
- Activiti 实现节点的循环
- 基于ssm框架的个人博客(9)--博客的管理(删除,条件查询)
- Reverse Integer--LeetCode
- 简易解说拉格朗日对偶
- Thymeleaf模板的使用
- HTML
- Activiti 跳转节点
- 浅析浅拷贝与深拷贝
- 训练总结 10.1
- java基础-锁
- Quartz定时任务框架
- 概率基础
- POJ 3608 求两个凸包之间的最小距离
- leetcode 7. Reverse Integer(C语言,翻转一个整数,判断是否溢出)19
- bmp字节对齐公式