码迷,mamicode.com
首页 > 其他好文 > 详细

jbpm4.4 demo3

时间:2015-09-01 10:30:51      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:

package cn.itcast.c_processinstance;

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;

/**
 * 执行流程实例有关的操作
 * 
 * <pre>
 * 	启动流程实例
 * 	查询我的任务列表
 * 	办理任务
 * 	直接向后执行一步
 * </pre>
 * 
 * @author tyg
 * 
 */
public class ProcessInstanceTest {

	private ProcessEngine processEngine = Configuration.getProcessEngine();

	// 启动流程实例
	@Test
	public void testStartProcessInstance() throws Exception {
		// 使用指定的流程定义启动流程实例(指定名称并且是指定的version)
		// processEngine.getExecutionService().startProcessInstanceById("helloworld-3");

		// 使用指定key的最新版本的流程定义启动一个流程实例
		ProcessInstance pi = processEngine.getExecutionService().startProcessInstanceByKey("helloworld");
		System.out.println("流程实例启动成功,processInstanceId=" + pi.getId() + ", processDefinitionId=" + pi.getProcessDefinitionId());
	}

	// 查询我的(未完成的)任务列表
	@Test
	public void testFindMyTaskList() throws Exception {
		// 准备
		 String userId = "员工";
		// String userId = "部门经理";
		//String userId = "总经理";

		// // 查询所有
		// List<Task> list = processEngine.getTaskService().findPersonalTasks(userId);

		// 分页的查询
		List<Task> list = processEngine.getTaskService()//
				.createTaskQuery()//
				// 过滤条件
				.assignee(userId)// 指定办理人是谁,如果不指定办理人,就会查出所有人的任务
				// 排序条件
				// .orderAsc(TaskQuery.PROPERTY_CREATEDATE)
				// 执行查询得到结果
				// .count();
				// .page(firstResult, maxResults)
				.list();
		

		// 显示
		for (Task t : list) {
			System.out.println("id=" + t.getId()//
					+ ", name=" + t.getName()// 任务名称
					+ ", assignee=" + t.getAssignee()// 办理人
					+ ", createTime=" + t.getCreateTime()// 此任务的创建时间
					+ ", executionId=" + t.getExecutionId()); // 所属的执行对象的id
		}
	}

	// 办理任务
	@Test
	public void testCompleteTask() throws Exception {
		String taskId = "320002";
		processEngine.getTaskService().completeTask(taskId);
	}

	// 跳过某个节点,直接向后执行一步   假设:流程到部门经理,此时需要跳转到总经理时,操作:获取部门经理的executionId
	@Test
	public void testSignal() throws Exception {
		String executionId = "helloworld.320001";
		processEngine.getExecutionService().signalExecutionById(executionId, "to 总经理[审批]");
	}
}
<?xml version="1.0" encoding="UTF-8"?>

<process name="hellokey" key="hellokey" xmlns="http://jbpm.org/4.4/jpdl">
   <start g="115,21,48,48" name="start1">
      <transition g="-71,-17" name="to 提交申请" to="提交申请"/>
   </start>
   <end g="115,353,48,48" name="end1"/>
   <task assignee="员工" g="81,101,117,52" name="提交申请">
      <transition g="-78,-15" name="to 部门经理[审批]" to="部门经理[审批]"/>
   </task>
   <task assignee="部门经理" g="81,185,117,52" name="部门经理[审批]">
      <transition g="-95,-17" name="to 总经理[审批]" to="总经理[审批]"/>
   </task>
   <task assignee="总经理" g="81,269,117,52" name="总经理[审批]">
      <transition g="-47,-17" name="to end1" to="end1"/>
   </task>
</process>

 

 下载demo

jbpm4.4 demo3

标签:

原文地址:http://www.cnblogs.com/a757956132/p/4774915.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!