jbpm管理流程实例

    流程定义部署完成后,就可以使用流程定义所描述的过程进行工作了。流程定义开始工作就要依靠流程实例了,一个流程实例代表的是一个流程定义的执行,而一个流程实例可以有多个执行对象。


    流程实例即ProcessInstance,一个流程实例包括了所有运行阶段,其中最典型的属性就是跟踪当前节点的指针。一次流程实例的执行是一个Execution,管理流程实例也是通过ExecutionService来进行的。


    流程实例的管理包括以下几个方面:

        1、启动流程实例

        2、完成任务

        3、查询

        4、结束流程实例


    流程实例的管理主要是涉及到以下几张表:

        JBPM4_EXECUTION:表示当前正在执行的流程实例

        JBPM4_HIST_PROCINST:表示历史执行过的流程实例,但是也包含当前正在执行的流程实例

        JBPM4_TASK:表示当前正在执行的任务

        JBPM4_HIST_TASK:表示历史的任务,但是也包含当前正在执行的任务

        JBPM4_HIST_ACTINST:表示历史的节点


    在这些表中,JBPM4_TASK是一张临时表,当任务执行完成后,该表中的数据就被删除了。


启动流程实例


    启动流程实例有两种方式,一种是根据流程定义ID启动流程实例,流程定义ID一般是“流程定义名称-版本号”组成,可以根据流程定义ID启动任何一个流程定义对应的流程实例。另一种就是根据流程定义名称来启动流程实例,一个流程定义名称可以对应多个版本,但是这种方式默认会启动该流程定义名称下最高版本的流程定义对应的流程实例。

 /**
 * 根据流程定义ID启动流程实例,可以启动任意一个版本的流程实例
 */
@Test
public void testStartPIByPDID(){
	ProcessInstance pi = processEngine.getExecutionService()
	.startProcessInstanceById("qingjia-1");
}
/**
 * 根据流程定义名称启动流程实例,是该key下,最高版本
 */
@Test
public void testStartPIByPDKEY(){
	processEngine.getExecutionService()
	.startProcessInstanceByKey("qingjia1");
}


完成任务


/**
 * 完成任务
 */
@Test
public void testFinishTask(){
	processEngine.getTaskService()
	.completeTask("130001");
}


查询


    查询也包括两种,查询流程定义和查询任务,查询任务有分为查询正在执行的任务和查询已完成的任务。

/**
 * 查询所有的流程实例
 */
@Test
public void testQueryAllPI(){
	List<ProcessInstance> piList = processEngine.getExecutionService()
	.createProcessInstanceQuery()
	.list();
}

/**
 * 查询所有的正在执行的任务
 */
@Test
public void testQueryAllTask(){
	List<Task> taskList = processEngine.getTaskService()
	.createTaskQuery()
	.list();
}
/**
 * 可以根据任务的执行人查询当前正在执行的任务
 * 可以根据pdid查询当前正在执行的任务
 */
@Test
public void testQueryTaskByPDID(){
	List<Task> taskList = processEngine.getTaskService()
	.createTaskQuery()
	.processDefinitionId("qingjia1-4")
	.list();
}
/**
 * 根据任务id查询任务
 */
@Test
public void testQueryTaskByTaskID(){
	Task task = processEngine.getTaskService()
	.getTask("100002");
}
	
/**
 * 查询已经完成的所有的任务
 */
@Test
public void testQueryAllHistTask(){
	List<HistoryTask> histTaskList = processEngine.getHistoryService()
	.createHistoryTaskQuery()
	.state("completed")
	.list();
}


结束流程实例


/**
 * 直接结束流程实例
 */
@Test
public void testEndPI(){
	processEngine.getExecutionService()
	.endProcessInstance("qingjia.70001", "error");
}

/**
 * 根据 piid查询流程实例,如果查询出来的结果为null,说明该流程实例已经结束了
 */
@Test
public void testIsEndPI(){
	ProcessInstance pi = processEngine.getExecutionService()
	.createProcessInstanceQuery()
	.processInstanceId("qingjia.70001")
	.uniqueResult();
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 19
    评论
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值