某些情况可能由于流程变更需要将当前运行的流程暂停而不是直接删除,流程暂停后将不会继续执行。
<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 + "已经暂停");
}
}
```
- Activiti流程引擎
- 工作流介绍
- Activiti是什么
- Activiti流程处理步骤
- Activiti环境搭建
- 搭建步骤
- 表结构介绍
- ActivitiAPI结构
- 认识流程符号
- 流程设计器的使用
- 流程处理步骤
- 乱码问题
- 流程实例
- 流程实例是什么
- 业务标识
- 查询流程实例
- 挂起/激活流程实例
- 个人任务
- 分配任务负责人
- 查询待办任务
- 办理权限
- 流程变量
- 流程变量类型
- 流程变量作用域
- 使用流程变量控制流程
- 组任务
- 设置任务候选人
- 组任务办理流程
- 网关
- 4种网关类型
- 排他网关
- 并行网关
- 包含网关
- 事件网关
- Spring整合Activiti
- SpringBoot整合Activiti
- Flowable流程引擎
- Flowable是什么
- Flowable与Activiti
- Flowable环境搭建
- FlowableAPI
- 流程引擎API与服务
- 流程处理步骤
- 流程部署
- 流程部署方式
- 流程定义版本
- 删除已部署的流程
- 下载资源
- 流程实例
- 什么是流程实例
- 业务标识
- 查询流程实例
- 挂起/激活流程实例
- 分配任务负责人
- 固定分配
- UEL表达式分配
- 监听器分配
- 办理权限
- 流程变量
- 流程变量类型
- 流程变量作用域
- 流程变量控制流程
- 组任务
- 设置任务候选人
- 组任务办理流程
- 网关
- 排他网关
- 并行网关
- 包含网关
- 事件网关
- 历史查询
- 查询历史
- Spring整合Flowable
- 配置文件整合
- 配置类整合
- SpringBoot整合Flowable