1、部署流 @Test
public void deployment(){
// 獲取ProcessEngine物件
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// 獲取RepositoryService物件,部署流程圖
RepositoryService repositoryService = processEngine.getRepositoryService();
// 部署
Deployment deploy = repositoryService.createDeployment()
.addClasspathResource("processes/demo.bpmn") // 加載流程檔案
.addClasspathResource("processes/demo.png") // 加載流程圖
.name("demo") // 設定流程名稱
.key("demoKey") // 設定流程key
.deploy();
System.out.println("流程名稱:" + deploy.getName());
System.out.println("流程ID:" + deploy.getId());
System.out.println("流程key:" + deploy.getKey());
}
2、啟動流程實體
在啟動流程實體時,可以通過map的方式設定流程變數,在啟動流程實體時設定的變數的作用域是一個流程實體(ProcessInstance),在整個流程中都可以使用該變數
@Test
public void startInstance(){
// 獲取ProcessEngine物件
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// 獲取RuntimeService物件,通過RuntimeService創建流程實體
RuntimeService runtimeService = processEngine.getRuntimeService();
/**
* 通過map的方式定義流程變數,在網關中就可以使用該變數
* key:變數名
* value:變數值
*/
// Map<String, Object> variables = new HashMap<>();
// Integer day = 5;
// variables.put("num", day);
// 創建流程實體
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("demo");
// 創建流程實體時將流程變數添加到流程實體中
// ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("demo", variables);
System.out.println("流程實體ID:" + processInstance.getId());
}
3、查看代辦任務
@Test
public void getTask(){
// 獲取ProcessEngine物件
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// 獲取TaskService物件,用來操作任務
TaskService taskService = processEngine.getTaskService();
// assignee:辦理人
List<Task> list = taskService.createTaskQuery().taskAssignee("sundebin").processDefinitionKey("demo").list();
System.err.println(list.size());
list.forEach(task -> {
System.out.println("任務名稱:" + task.getName());
System.out.println("任務執行人:" + task.getAssignee());
System.out.println("任務ID:" + task.getId());
System.out.println("流程實體ID:" + task.getProcessInstanceId());
});
}
4、處理任務
_ru_task存盤流程運行時節點資料,每處理一次任務都會更新該表的資料,可以通過該表查看當前流程的運行狀態,當流程結束時,會清空該表中有關當前流程的所有記錄
流程結束可以通過_hi歷史表中的資料查看流程資訊
@Test
public void completeTask(){
// 獲取ProcessEngine
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// 獲取一個TaskService物件
TaskService taskService = processEngine.getTaskService();
// 處理任務
taskService.complete("40003");
}
5、查看歷史任務
@Test
public void getHistory(){
// 獲取ProcessEngine物件
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// 獲取HistoryService介面
HistoryService historyService = processEngine.getHistoryService();
// 查看歷史任務
HistoricActivityInstanceQuery historQuery = historyService.createHistoricActivityInstanceQuery();
// 獲取指定流程實體的任務
historQuery.processInstanceId("3001");
// 獲取任務串列
List<HistoricActivityInstance> list = historQuery.list();
list.forEach(history -> {
System.out.println("任務節點ID:" + history.getActivityId());
System.out.println("任務節點名稱:" + history.getActivityName());
System.out.println("流程實體資訊:" + history.getProcessInstanceId());
System.out.println("流程實體資訊:" + history.getProcessDefinitionId());
System.out.println("==========================================");
});
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/98193.html
標籤:Java
上一篇:高可用高并發的 9 種技術架構!
