某些情況可能由于流程變更需要將當前運行的流程暫停而不是直接刪除,流程暫停后將不會繼續執行。
<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