jbpm系列之六--基本节点State节点

在Jbpm中,State节点是最基础的一个节点。即流程走到这个节点,经过短暂停留继续执行下去,而没有任何多余的操作。

在JPDL中,我们可以发现,定义一个state节点之后,按下ctrl+<,会发现其没有多余的属性。所以state节点只是停留节点。定义一个流程。我们测试state节点的操作


<?xml version="1.0" encoding="UTF-8"?>

<process key="state" name="state" xmlns="http://jbpm.org/4.4/jpdl">
   <start g="233,6,48,48" name="start1">
      <transition g="-51,-18" name="提交到A" to="节点A"/>
   </start>
   <end g="234,359,48,48" name="end1"/>
   <state g="217,96,103,52" name="节点A">
      <transition g="-70,-25" name="提交到B" to="节点B"/>
   </state>
   <state g="219,177,113,52" name="节点B">
      <transition g="-70,-25" name="提交到C" to="节点C"/>
   </state>
   <state g="231,266,92,52" name="节点C">
      <transition g="-62,-25" name="通过" to="end1"/>
   </state>
</process>

在这个JPDL文件中我们定义了三个state节点。


package com.tgb.node.state;

import org.jbpm.api.ProcessInstance;

import com.tgb.video.JbpmTestCase;
import com.tgb.video.JbpmUtil;

public class TestState extends JbpmTestCase implements JbpmUtil {

	@Override
	public void deploy() {
		super.startUp();
		repositoryService.createDeployment().addResourceFromClasspath("com/tgb/node/state/state.jpdl.xml").deploy();
	}

	@Override
	public void createInstance() {
		super.startUp();
		ProcessInstance processInstance = executionService.startProcessInstanceByKey("state");
		print("流程实例ID" ,processInstance.getId());
	}

	@Override
	public void getCurrectActivity() {
		super.startUp();
		String name = executionService.createProcessInstanceQuery().processInstanceId("state.170001").uniqueResult().findActiveActivityNames().toString();
		print("流程当前节点",name);
	}

	@Override
	public void getTask() {
		// TODO Auto-generated method stub

	}

	@Override
	public void completeTask() {
		super.startUp();
		//taskService.completeTask("");
		executionService.signalExecutionById("state.230001");
	}

}

我们部署流程后,通过ExecutionService创建流程实例。在获取流程实例后通过createProcessInstanceQuery来测试当前节点名称。

这个节点比较简单,唯一需要注意的是完成任务时,用的是同一个节点ID。即整个流程向下执行都通过唯一的一个流程实例。

你可能感兴趣的:(jbpm系列之六--基本节点State节点)