流程實例

 1 package com.kite.pi;  2 
 3 import java.util.List;  4 
 5 import org.jbpm.api.Configuration;  6 import org.jbpm.api.ProcessInstance;  7 import org.jbpm.api.history.HistoryTask;  8 import org.jbpm.api.task.Task;  9 import org.junit.Test;  10 /**
 11  * 流程實例  12  * * 啓動流程實例  13  * * 完成任務  14  * * 查詢  15  * * 查詢流程實例  16  * * 查詢任務  17  * * 查詢正在執行的任務  18  * * 查詢全部政治啊執行的任務  19  * * 根據任務的執行人查詢正在執行的任務  20  * * 根據executionid查詢正在執行的任務  21  * * 根據piid查詢正在執行的任務  22  * * 根據pdid查詢正在執行的任務  23  * * 根據taskid查詢任務 taskService.getTask(string taskid) 和其餘的查詢不同  24  * * 查詢已經完成的任務  25  * * 查詢全部的  26  * * 根據任務的執行人  27  * * 根據executionid  28  * * ....  29  * * 結束流程實例  30  * @author admin  31  *  32  */
 33 public class PITest {  34 
 35     /**
 36  * 涉及到的表  37  * JBPM4_EXECUTION  38  * * 表示當前正在執行的流程實例  39  * * 字段  40  * DBID_:主鍵  41  * ID_:流程實例ID  42  * ACTIVITYNAME_:當前流程實例活躍的節點  43  * PROCDEFID_:流程定義ID  44  * JBPM4_HIST_PROCINST  45  * * 表示歷史的流程實例,可是當前正在運行的流程實例也在這裏  46  * * 字段  47  * DBID_:主鍵  48  * ID_:流程實例ID  49  * START_:整個流程實例的開始時間  50  * END_:流程實例的結束時間,若是該流程實例爲當前正在運行的流程則,該值爲空  51  * STATE:表示流程實例的狀態 若是是正在運行,爲active 若是流程實例結束 爲ended  52  * JBPM4_TASK  53  * * 表示當前正在執行的任務  54  * 說明:任務是jbpm流程圖的一個節點  55  * * 字段  56  * DBID_:主鍵、任務ID  57  * NAME_:任務名稱  58  * ASSIGNEE_:任務的執行人  59  * JBPM4_HIST_TASK  60  * * 表示歷史的任務,可是當前正在執行的任務也在這裏  61  * * 字段  62  * STATE_:若是一個任務被完成之後,值爲completed  63  * end_:任務的結束時間有值了  64  * JBPM4_HIST_ACTINST  65  * * 表示歷史的節點  66  * * 字段  67  * TYPE_:節點類型  68  * ------------------------------------------------------------------------------  69  * 說明:  70  * * 當啓動流程實例的時候,會自動的離開開始節點,流向下一個節點  71  * * jbpm4_task爲臨時表,噹噹前的任務完成之後,該數據就被刪除了  72      */
 73     
 74     /**
 75  * 根據pdid啓動流程實例  76      */
 77  @Test  78     public void testStartPIByPDID(){  79         ProcessInstance processInstance = Configuration.getProcessEngine().getExecutionService()  80         .startProcessInstanceById("qingjia1-1");  81  System.out.println(processInstance.getId());  82  System.out.println(processInstance.getState());  83  }  84     
 85     /**
 86  * 根據pdkey啓動流程實例,是該key下,最高版本  87      */
 88  @Test  89     public void testStartPIByPDKEY(){  90         ProcessInstance processInstance = Configuration.getProcessEngine().getExecutionService()  91         .startProcessInstanceByKey("qingjia1");  92  System.out.println(processInstance.getId());  93  System.out.println(processInstance.getState());  94  }  95     
 96     /**
 97  * 完成任務 當完成任務執行完成之後會走向下一個任務流程  98      */
 99  @Test 100     public void testFinishTask(){ 101  Configuration.getProcessEngine().getTaskService() 102         .completeTask("60001"); 103  } 104     
105     
106     /**
107  * 查詢全部的流程實例 108      */
109  @Test 110     public void testQueryAllPI(){ 111         List<ProcessInstance> pIList = Configuration.getProcessEngine().getExecutionService() 112  .createProcessInstanceQuery().list(); 113         
114         for(ProcessInstance processInstance : pIList){ 115             System.out.print(processInstance.getId() + ","); 116  System.out.println(processInstance.getState() ); 117  } 118  } 119     
120     /**
121  * 查詢正在執行的任務 122      */
123  @Test 124     public void testQueryAllTask(){ 125         List<Task> taskList = Configuration.getProcessEngine().getTaskService() 126  .createTaskQuery() 127  .list(); 128         for(Task task : taskList){ 129             System.out.println("執行人:" + task.getAssignee()); 130             System.out.println("當前執行任務的名稱:" + task.getName()); 131             System.out.println("任務建立時間:" + task.getCreateTime()); 132  } 133  } 134     
135     /**
136  * 能夠根據任務的執行人查詢當前正在執行的任務 137  * 能夠根據pdid查詢當前正在執行的任務 138      */
139  @Test 140     public void testQueryTaskPDID(){ 141         /*Task task = Configuration.getProcessEngine().getTaskService() 142  .createTaskQuery() 143  .assignee("李四").uniqueResult(); 144         */
145         List<Task> taskList = Configuration.getProcessEngine().getTaskService() 146         .createTaskQuery().processDefinitionId("qingjia-1").list(); 147         
148         
149         for(Task task : taskList){ 150             System.out.println("執行人:" + task.getAssignee()); 151             System.out.println("當前執行任務的名稱:" + task.getName()); 152             System.out.println("任務建立時間:" + task.getCreateTime()); 153             
154  } 155  } 156     /**
157  * excution 158  * *若是存在併發的狀況,那麼execution和process instance 是同樣的 159  * *若是存在併發的狀況,execution表明分支,processinstance表明主線 160  * *根據executionid查詢任務,有惟一的一個 161      */
162     /**
163  * 根據taskid查詢任務 164      */
165  @Test 166     public void testQueryTaskByID(){ 167         Task task = Configuration.getProcessEngine() 168  .getTaskService() 169         .getTask("60002"); 170         
171  System.out.println(task.getId()); 172         System.out.println("執行人:" + task.getAssignee()); 173         System.out.println("當前執行任務的名稱:" + task.getName()); 174         System.out.println("任務建立時間:" + task.getCreateTime()); 175         
176  } 177     
178     /**
179  * 查詢已經完成的全部任務 180      */
181  @Test 182     public void testQueryAllHistTask(){ 183         List<HistoryTask> historyTaskLisTasks = Configuration.getProcessEngine() 184  .getHistoryService() 185  .createHistoryTaskQuery() 186         //.executionId("") 能夠根據 executionid查詢已經完成的任務 187         //.assignee("") 能夠根據執行人進行查詢
188         .state("completed")  //根據狀態進行查詢
189  .list(); 190         
191         for(HistoryTask historyTask : historyTaskLisTasks){ 192  System.out.println(historyTask.getId()); 193  System.out.println(historyTask.getEndTime()); 194  } 195  } 196     
197     /**
198  * 直接結束實例 199      */
200  @Test 201     public void testEndPI(){ 202  Configuration.getProcessEngine().getExecutionService() 203         .endProcessInstance("qingjia.30001", "error"); 204  } 205 }
相關文章
相關標籤/搜索