jbpm设计流程之start与end与transaction

2023-04-12


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 总经理审批");
	}
}






本文仅代表作者观点,版权归原创者所有,如需转载请在文中注明来源及作者名字。

免责声明:本文系转载编辑文章,仅作分享之用。如分享内容、图片侵犯到您的版权或非授权发布,请及时与我们联系进行审核处理或删除,您可以发送材料至邮箱:service@tojoy.com