流程实例

 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 }
相关文章
相关标签/搜索