package com.njupt.jbpm;
import java.util.List;
import org.jbpm.api.Configuration;
import org.jbpm.api.ProcessEngine;
import org.jbpm.api.ProcessInstance;
import org.jbpm.api.TaskQuery;
import org.jbpm.api.task.Task;
import org.junit.Test;
public class ProcessInstanceTest {
private ProcessEngine processEngine = Configuration.getProcessEngine();
// 1,启动流程实例
// 对应的表:
// >> jbpm4_execution 正在执行的流程实例的信息
// >> jbpm4_hist_procinst 已经执行完的流程实例的历史信息表
@Test
public void testStartProcessInstance() throws Exception {
// // 使用指定的流程定义启动流程实例(指定key与指定的version)
// processEngine.getExecutionService().startProcessInstanceById(processDefinitionId);
// 使用指定key的最新版本的流程定义启动流程实例
String processDefinitionKey = "test";
ProcessInstance pi = processEngine.getExecutionService().startProcessInstanceByKey(processDefinitionKey);
System.out.println("id=" + pi.getId() + ", processDefinitionId=" + pi.getProcessDefinitionId());
}
// 2,查询我的任务列表
// 对应的表:
// >> jbpm4_task 正在执行的任务信息表
// >> jbpm4_hist_task 已经执行完的任务的历史信息表
@Test
public void testFindMyTask() throws Exception {
// 查询
// String userId = "学员";
String userId = "教务";
// >> 方式一
// List<Task> taskList = processEngine.getTaskService().findPersonalTasks(userId);
// >> 方式二
List<Task> taskList = processEngine.getTaskService()//
.createTaskQuery()//
// 过滤条件
.assignee(userId)// 指定办理人这个条件
// .processDefinitionId(processDefinitionId)//
// .processInstanceId(processInstanceId)//
// 排序条件
// .orderAsc(TaskQuery.PROPERTY_ASSIGNEE)//
// .orderDesc(TaskQuery.PROPERTY_CREATEDATE)//
// 执行查询
// .count(); // 查询数量
// .uniqueResult() // 查询唯一的结果
// .page(firstResult, maxResults)//
.list(); // 查询列表
// 显示
System.out.println("=========== 【" + userId + "】的任务列表 ==========");
for (Task task : taskList) {
System.out.println("id=" + task.getId()// 任务的ID
+ ", name=" + task.getName()// 任务的名称
+ ", assignee=" + task.getAssignee()// 任务办理人
+ ", createTime=" + task.getCreateTime()// 任务的创建时间
+ ", executionId=" + task.getExecutionId()); // 所属的执行对象的ID
}
}
// 3,办理任务
@Test
public void testCompleteTask() throws Exception {
String taskId = "110002";
processEngine.getTaskService().completeTask(taskId);
}
// 4,直接向后执行一步
@Test
public void testSignal() throws Exception {
String executionId = "test.70001";
processEngine.getExecutionService().signalExecutionById(executionId, "to 存档");
}
}
jbpm中流程的执行管理
最新推荐文章于 2017-05-02 14:09:15 发布