企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
某些情况可能由于流程变更需要将当前运行的流程暂停而不是直接删除,流程暂停后将不会继续执行。 <br/> 流程实例的挂起与激活有如下方式: **1. 全部流程实例的挂起与激活** ```java /** * 全部流程实例的 挂起 和 激活 * 1) 操作流程定义为挂起状态,该流程定义下的所有流程实例全部暂停。 * 2) 流程定义为挂起状态, 则该流程定义下将不允许启动新的流程实例,同时该流程定义下所有的流程实例将全部挂起暂停执行。 */ @Test public void suspendAllProcessInstance() { //1、获取流程引擎 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //2、获取Repositoryservice RepositoryService repositoryService = processEngine.getRepositoryService(); //3、获取流程定义 ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery() .processDefinitionKey("evectionProcess") //流程key .singleResult(); //4、获取当前流程定义的实例是否都是挂起状态 boolean suspended = processDefinition.isSuspended(); //5、获取流程定义id String definitionId = processDefinition.getId(); if (suspended) { //6、如果是挂起,可以执行激活的操作 repositoryService.activateProcessDefinitionById( definitionId, //流程定义id true, //是否激活,true-是 null); // 激活时间 //流程定义id:evectionProcess:1:4,已激活 System.out.println("流程定义id:" + definitionId + ",已激活"); } else { //7、如果是激活状态,改为挂起状态 repositoryService.suspendProcessDefinitionById( definitionId, true, // 是否暂停,true-是 null); // 暂停的时间 //流程定义id:evectionProcess:1:4,已挂起 System.out.println("流程定义id:" + definitionId + ",已挂起"); } } ``` **2. 单个流程实例的挂起与激活** ```java /** * 挂起/激活单个流程实例 * 操作流程实例对象,针对单个流程执行挂起操作,某个流程实例挂起则此流程不再继续执行, * 完成该流程实例的当前任务将报异常。 */ @Test public void suspendSingleProcessInstance() { //1、获取流程引擎 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //2、RuntimeService RuntimeService runtimeService = processEngine.getRuntimeService(); //3、流程实例对象 ProcessInstance instance = runtimeService.createProcessInstanceQuery() .processInstanceId("7501") //流程实例id .singleResult(); //4、得到当前流程实例的暂停状态,true-已暂停 false -激活 boolean suspended = instance.isSuspended(); //5、获取流程实例id String instanceId = instance.getId(); //6、判断是否已经暂停,如果已经暂停,就执行激活操作 if (suspended) { //如果已经暂停,就执行激活 runtimeService.activateProcessInstanceById(instanceId); //流程实例id:7501已经激活 System.out.println("流程实例id:" + instanceId + "已经激活"); } else { //7、如果是激活状态,就执行暂停操作 runtimeService.suspendProcessInstanceById(instanceId); //流程实例id:7501已经暂停 System.out.println("流程实例id:" + instanceId + "已经暂停"); } } ```