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 存档"); } }