工作流图:
test.jpdl.xml:
<?xml version="1.0" encoding="UTF-8"?>
<process name="test" xmlns="http://jbpm.org/4.4/jpdl">
<start g="207,6,48,48" name="start1">
<transition name="to 部门经理审批" to="部门经理审批" g="-93,-22"/>
</start>
<task assignee="部门经理" g="189,107,92,52" name="部门经理审批">
<transition name="to 总经理审批" to="总经理审批" g="-81,-22"/>
<transition name="to end1" to="end1" g="-50,-22"/>
</task>
<task assignee="总经理" g="336,183,92,52" name="总经理审批">
<transition g="-50,-22" name="to end1" to="end1"/>
</task>
<end g="201,304,48,48" name="end1"/>
</process>
java Code:
package cn.edu.zust.itee.transition;
import java.io.InputStream;
import org.jbpm.api.Configuration;
import org.jbpm.api.ProcessEngine;
import org.jbpm.api.ProcessInstance;
import org.junit.Test;
/**
* @author 郑勇
* 2013-07-10 12:43
* 流转(Transition)即:连线(单向箭头):
* 1.开始活动只能有一个Transition
* 2.结束活动中没有Transition
* 3.其它活动中都是可以有1个或多个Transition,需要指定不同的名称
*/
public class ProcessTransition {
ProcessEngine processEngine = Configuration.getProcessEngine();
@Test
public void testTransition(){
//部署流程定义
//获得当前包中的文件
InputStream in = this.getClass().getResourceAsStream("test.jpdl.xml");
processEngine.getRepositoryService()
.createDeployment()
.addResourceFromInputStream("test.jpdl.xml", in)
.deploy();
//启动流程实例
ProcessInstance pi = processEngine.getExecutionService()
.startProcessInstanceByKey("test");
//完成"部门经理任务",并使用指定连线离开当前活动
String taskId = processEngine.getTaskService().createTaskQuery() //查询出该流程实例中仅有的一个任务
.processInstanceId(pi.getId())
.uniqueResult()
.getId();
//活动中都是可以有1个或多个Transition,需要指定不同的名称
processEngine.getTaskService().completeTask(taskId,"to 总经理审批");
}
}