JBPM流程執行個體(PI)Process Instance

來源:互聯網
上載者:User

標籤:

/**
 * 流程執行個體
 *    *  啟動流程執行個體
 *    *  完成任務
 *    *  查詢
 *      *  查詢流程執行個體
 *      *  查詢任務
 *          *  查詢正在執行的任務
 *            *  查詢所有的正在執行的任務
 *            *  根據任務的執行人查詢正在執行的任務
 *            *  根據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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.