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

来源:互联网 发布:mac os x 版本 编辑:程序博客网 时间:2024/04/28 15:10

在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 {@Overridepublic void deploy() {super.startUp();repositoryService.createDeployment().addResourceFromClasspath("com/tgb/node/state/state.jpdl.xml").deploy();}@Overridepublic void createInstance() {super.startUp();ProcessInstance processInstance = executionService.startProcessInstanceByKey("state");print("流程实例ID" ,processInstance.getId());}@Overridepublic void getCurrectActivity() {super.startUp();String name = executionService.createProcessInstanceQuery().processInstanceId("state.170001").uniqueResult().findActiveActivityNames().toString();print("流程当前节点",name);}@Overridepublic void getTask() {// TODO Auto-generated method stub}@Overridepublic void completeTask() {super.startUp();//taskService.completeTask("");executionService.signalExecutionById("state.230001");}}

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

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

原创粉丝点击