標籤:
/**
* 流程執行個體
* * 啟動流程執行個體
* * 完成任務
* * 查詢
* * 查詢流程執行個體
* * 查詢任務
* * 查詢正在執行的任務
* * 查詢所有的正在執行的任務
* * 根據任務的執行人查詢正在執行的任務
* * 根據executionId查詢正在執行的任務
* * 根據piid查詢正在執行的任務
* * 根據pdid查詢正在執行的任務
* * 根據taskid查詢任務 taskService.getTask(String taskId);和其他的查詢不一樣
* * 查詢已經完成的任務
* * 查詢所有的
* * 根據任務的執行人
* * 根據executionID
* * .......
* * 結束流程執行個體
* @author Administrator
*
*/
public class PITest extends BaseJbpm{
/**
* 涉及到的表
* * JBPM4_EXECUTION
* * 表示當前正在執行的流程執行個體
* * 欄位
* DBID_:主鍵
* ID_:流程執行個體ID
* ACTIVITYNAME_:當前流程執行個體活躍的節點
* PROCDEFID_:流程定義ID
* * JBPM4_HIST_PROCINST
* * 表示曆史的流程執行個體,但是當前正在啟動並執行流程執行個體也在這裡
* * 欄位
* DBID_:主鍵
* ID_:流程執行個體ID
* START_:整個流程執行個體的開始時間
* END_:流程執行個體的結束時間,如果該流程執行個體為當前正在啟動並執行流程則,該值為空白
* STATE:表示流程執行個體的狀態 如果是正在運行,為active 如果流程執行個體結束 為ended
* * JBPM4_TASK
* * 表示當前正在執行的任務
* 說明:任務是jbpm流程圖的一個節點
* * 欄位
* DBID_:主鍵、任務ID
* NAME_:任務名稱
* ASSIGNEE_:任務的執行人
* * JBPM4_HIST_TASK
* * 表示曆史的任務,但是當前正在執行的任務也在這裡
* * 欄位
* STATE_:如果一個任務被完成以後,值為completed
* end_:任務的結束時間有值了
* * JBPM4_HIST_ACTINST
* * 表示曆史的節點
* * 欄位
* TYPE_:節點類型
* 說明:
* * 當啟動流程執行個體的時候,會自動的離開開始節點,流向下一個節點
* * jbpm4_task為暫存資料表,噹噹前的任務完成以後,該資料就被刪除了
*/
@Test
public void testStartPIByPDID(){
ProcessInstance pi= processEngine.getExecutionService().startProcessInstanceById("qingjia1-1");
System.out.println(pi.getId());
System.out.println(pi.getState());
}
/**
* 根據pdkey啟動流程執行個體,是該key下,最高版本
*/
@Test
public void testStartPIByPDKEY(){
processEngine.getExecutionService()
.startProcessInstanceByKey("qingjia1");
}
/**
* 完成任務
*/
@Test
public void testFinishTask(){
processEngine.getTaskService()
.completeTask("60002");
}
/**
* 查詢所有的流程執行個體
*/
@Test
public void testQueryAllPI(){
List<ProcessInstance> piList = processEngine.getExecutionService()
.createProcessInstanceQuery()
// /.processDefinitionId("")//可以根據pdid查詢流程執行個體,很多個
.list();
for(ProcessInstance pi:piList){
/**
* 可以查詢piid,pdid,state等
*/
System.err.println();
System.err.print("instanceID"+pi.getId());
System.err.print("\t\t\tinstanceKEY"+pi.getKey());
System.err.print("\t\t\tinstanceNAME"+pi.getName());
System.err.println("\t\t\tinstanceSTATE"+pi.getState());
}
}
/**
* 查詢所有的正在執行的任務
*/
@Test
public void testQueryAllTask(){
List<Task> taskList = processEngine.getTaskService()
.createTaskQuery()
// .processDefinitionId("")
.list();
for(Task task:taskList){
System.out.println("assignee:"+task.getAssignee());
System.out.println("name:"+task.getName());
System.out.println("createtime:"+task.getCreateTime());
}
}
/**
* 可以根據任務的執行人查詢當前正在執行的任務
* 可以根據pdid查詢當前正在執行的任務
*/
@Test
public void testQueryTaskByPDID(){
List<Task> taskList = processEngine.getTaskService()
.createTaskQuery()
.processDefinitionId("qingjia1-4")
.list();
System.out.println(taskList.size());
}
/**
* Execution
* * 如果不存在並發的情況,那麼exection和process instance是一樣的
* * 如果存在並發的情況,execution代表分支,process instance代表主線
* * 根據executionID查詢任務,有唯一的一個
*/
@Test
public void testQueryTaskByTaskID(){
Task task = processEngine.getTaskService()
.getTask("60002");
System.out.println(task.getName());
}
/**
* 查詢已經完成的所有的任務
*/
@Test
public void testQueryAllHistTask(){
List<HistoryTask> histTaskList = processEngine.getHistoryService()
.createHistoryTaskQuery()
//.assignee("") 可以根據任務的執行人查詢已經完成的任務
//.executionId("")可以根據executionID查詢已經完成的任務
.state("completed")
.list();
for(HistoryTask histTask:histTaskList){
System.out.println(histTask.getEndTime());
System.out.println(histTask.getAssignee());
}
}
/**
* 直接結束流程執行個體
*/
@Test
public void testEndPI(){
processEngine.getExecutionService()
.endProcessInstance("qingjia1.20001", "error");
}
/**
* 根據 piid查詢流程執行個體,如果查詢出來的結果為null,說明該流程執行個體已經結束了
*/
@Test
public void testIsEndPI(){
ProcessInstance pi = processEngine.getExecutionService()
.createProcessInstanceQuery()
.processInstanceId("qingjia1.60001")
.uniqueResult();
System.out.println(pi);//如果該值為null,說明該流程執行個體已經結束了
}
}
JBPM流程執行個體(PI)Process Instance