现在的位置: 首页 > 综合 > 正文

jbpm中流程的执行管理

2013年08月16日 ⁄ 综合 ⁄ 共 2071字 ⁄ 字号 评论关闭
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 存档");
	}
}

抱歉!评论已关闭.