作用:
1.1.1. start(开始活动)
代表流程的开始边界,一个流程有且只能有一个Start活动。开始活动只能指定一个Transition。在流程实例启动后,会自动的使用这个唯一的Transition离开开始活动,到一下个活动。
不能有Transition指向开始活动。
1.1.2. end、end-error、end-cancel(结束活动)
代表流程的结束边界,可以有多个,也可以没有。如果有多个,则到达任一个结束活动,整个流程就都结束了;如果没有,则到达最后那个没有Transition的活动,流程就结束了。
1.1.3 Transition(连线、转移、流转)
1, 一个活动中可以指定0个或多个Transition。
a) Start活动中只能有一个Transition。
b) End活动中没有Transition。
c) 其他活动中有1条或多条Transition
2, 如果只有一个,则可以不指定名称(名称是null);如果有多个,则要分别指定唯一的名称。
一、流程图
二、代码实现
package com.njupt.transaction;
import java.io.InputStream;
import org.jbpm.api.Configuration;
import org.jbpm.api.ProcessEngine;
import org.jbpm.api.ProcessInstance;
import org.jbpm.api.task.Task;
import org.junit.Test;
public class ProcessTest {
private ProcessEngine processEngine = Configuration.getProcessEngine();
@Test
public void test() throws Exception {
// 1,部署流程定义
InputStream in = getClass().getResourceAsStream("test.jpdl.xml");
processEngine.getRepositoryService()//
.createDeployment()//
.addResourceFromInputStream("test.jpdl.xml", in)//
.deploy();
// 2,启动流程实例
ProcessInstance pi = processEngine.getExecutionService().startProcessInstanceByKey("test");
// 3,执行完第一个任务(“部门经理审批”),使用指定的路线离开
Task task = processEngine.getTaskService()//
.createTaskQuery()// 查询本流程实例中当前情况下仅有的一个任务
.processInstanceId(pi.getId())//
.uniqueResult();
// processEngine.getTaskService().completeTask(task.getId());
processEngine.getTaskService().completeTask(task.getId(), "to end1");
// processEngine.getTaskService().completeTask(task.getId(), "to 总经理审批");
}
}