Activiti工作流之任務的執行/查詢/完成
阿新 • • 發佈:2018-12-19
8張表:
SELECT * FROM act_re_deployment; -- 一 流程部署表 SELECT * FROM act_ge_bytearray; -- 二 流程二進位制表 SELECT * FROM act_re_procdef; -- 三 流程定義表 SELECT * FROM act_ru_execution; -- 四 流程正在執行表 SELECT * FROM act_hi_procinst; -- 五 流程例項歷史表 SELECT * FROM act_ru_task; -- 六 流程當前任務表 SELECT * FROM act_hi_taskinst; -- 七 流程歷史任務表 SELECT * FROM act_hi_actinst; -- 八 流程歷史活動節點表
先決工作:
//定義一個成員變數 RepositoryService repositoryService; RuntimeService runtimeService; TaskService taskService; /** * 獲取流程引擎 */ @Before public void setUp() throws Exception { ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); repositoryService = processEngine.getRepositoryService(); runtimeService = processEngine.getRuntimeService(); taskService = processEngine.getTaskService(); }
1 啟動流程
測試程式碼:
/** * 啟動流程 */ @Test public void startProcess() { ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("activiti_leave"); String processInstanceId = processInstance.getId(); String activityId = processInstance.getActivityId(); String definitionId = processInstance.getProcessDefinitionId(); System.out.println("流程例項ID:"+processInstanceId); System.out.println("正在活動的節點ID:"+activityId); System.out.println("流程定義ID:"+definitionId); }
2 查詢正在執行的例項
測試程式碼:
/**
* 查詢正在執行的例項
*/
@Test
public void queryExecution(){
List<Execution> executionList = runtimeService.createExecutionQuery() //建立正在執行的流程查詢物件
.processDefinitionKey("activiti_leave") //根據流程定義的key查詢
.orderByProcessInstanceId() //根據流程例項id排序
.desc() //倒序
.list(); //查詢出集合
for(Execution execution: executionList){
System.out.println("正在執行的流程物件的id: "+execution.getId());
System.out.println("所屬流程例項的id:"+execution.getProcessInstanceId());
System.out.println("正在活動的節點的id: "+execution.getActivityId());
}
}
3 查詢任務
測試程式碼:
/**
* 根據辦理人查詢任務
*/
@Test
public void queryTaskByAssignee(){
String assignee = "employee";
List<Task> taskList = taskService.createTaskQuery()
.processDefinitionKey("activiti_leave")
.taskAssignee(assignee)
.orderByTaskCreateTime()
.desc()
.list();
for(Task task: taskList){
System.out.println("任務id: "+task.getId());
System.out.println("任務名字: "+task.getName());
System.out.println("任務建立時間: "+task.getCreateTime());
System.out.println("辦理人: "+task.getAssignee());
}
}
4 查詢任務位置
測試程式碼:
/**
* 查詢當前流程例項狀態
*/
@Test
public void queryProInstanceStateByProInstanceId(){
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId("35001").singleResult();
if(processInstance == null){
System.out.println("當前流程已經完成");
}else{
System.out.println("當前流程例項ID:"+processInstance.getId());
System.out.println("當前流程所處的位置:"+processInstance.getActivityId());
}
}
5 完成任務
測試程式碼:
/**
* 根據辦理人查詢任務
*/
@Test
public void queryTaskByAssignee(){
String assignee = "employee";
List<Task> taskList = taskService.createTaskQuery()
.processDefinitionKey("activiti_leave")
.taskAssignee(assignee)
.orderByTaskCreateTime()
.desc()
.list();
for(Task task: taskList){
System.out.println("任務id: "+task.getId());
System.out.println("任務名字: "+task.getName());
System.out.println("任務建立時間: "+task.getCreateTime());
System.out.println("辦理人: "+task.getAssignee());
}
}
Activiti系列回顧: