欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JBPM4

程序员文章站 2022-07-12 10:50:23
...

/**

 * 流程实例

 *    *  启动流程实例

 *    *  完成任务

 *    *  查询

 *      *  查询流程实例

 *      *  查询任务

 *          *  查询正在执行的任务

 *            *  查询所有的正在执行的任务

 *            *  根据任务的执行人查询正在执行的任务

 *            *  根据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,说明该流程实例已经结束了

 }

}

 

文章出处:http://www.linuxidc.com/Linux/2014-06/102858.htm

 

相关标签: JBPM