JBPM4入门——8.等待节点的分支执行

本文是JBPM4入门系列的第八篇,主要讲解在等待节点处如何实现分支执行。通过指定transitionName,可以控制流程实例按照预期的线路执行,避免在等待节点停留不动。原有的执行方法只会保持在等待节点,而在JBPM3中则会随机选择线路。文章提供了修改后的执行代码示例,使得流程能够正确流转到下一个节点。
摘要由CSDN通过智能技术生成

本博文只是简要对JBPM4进行介绍,如需更详细内容请自行google
链接:

JBPM4入门——1.jbpm简要介绍

JBPM4入门——2.在eclipse中安装绘制jbpm流程图的插件

JBPM4入门——3.JBPM4开发环境的搭建

JBPM4入门——4.封装流程管理的工具类(JbpmUtil) 

JBPM4入门——5.流程定义的发布、查询、删除

JBPM4入门——6.流程实例的创建和执行

JBPM4入门——7.等待节点的单条线手动执行

JBPM4入门——8.等待节点的分支执行

JBPM4入门——9.自动节点单线执行


先发布流程定义------>然后创建流程实例------>然后执行流程实例

以下是跟以前一样的执行方法。直接根据表中的ID来执行。

package com.test.test;

import java.util.Iterator;
import java.util.List;
import org.jbpm.api.ProcessDefinition;
import org.jbpm.api.ProcessDefinitionQuery;
import org.jbpm.api.ProcessInstance;
import com.test.util.JbpmUtil;

public class Test {
	/**
	 * 中间部分代码省略。。。。。。。。
	 * @param processInstanceId
	 * @return
	 */	
	
	public static void main(String[] args) {
		Test test = new Test();
//		test.deploy("simple.jpdl.xml");//流程定义的发布
//		test.createInstance("simple");//创建流程实例
		test.execute("simple.240007");//执行流程实例
		
	}
}

 但是以上的执行结果不会变。还会停留在当前的等待节点上。

分支情况下:如果还是根据ID来执行的话。结果不会变、还停留在之前的那个等待节点上:意思就是

当state1如果直接根据ID来执行的话(下图)ACTIVITYNAME的值还会停留在state1这个等待节点上。因为没给它具体指定走哪条线。它不会执行。

如果是JBPM 3版本的话 它会随机找一条线来执行。


 如果想让它按照自己的意图来执行的话:随意的让它执行某一条线的话、需要根据这些transitionName来操作、也就是 to state2 to state3 这些名字来操作

操作思路为:在原来的执行流程实例的方法中。加一个参数:String transitionName 表示是通过线条名字来执行下一个流程节点

 

代码如下:

package com.test.test;

import java.util.Iterator;
import java.util.List;
import org.jbpm.api.ProcessDefinition;
import org.jbpm.api.ProcessDefinitionQuery;
import org.jbpm.api.ProcessInstance;
import com.test.util.JbpmUtil;

public class Test {
	/**
	 * 执行流程实例:通过transition 指向的路径根据名字执行(to state1  to state2 to end1......)
	 * @param processInstanceId
	 * @return
	 */
	public ProcessInstance execute(String processInstanceId,String transitionName){
		return JbpmUtil.getExecutionService().signalExecutionById(processInstanceId,transitionName);
		
	}
	public static void main(String[] args) {
		Test test = new Test();
//		test.deploy("simple.jpdl.xml");//流程定义的发布
//		test.createInstance("simple");//创建流程实例
//		test.execute("simple.240007");//执行流程实例
		test.execute("simple.240007","to state3");//执行流程实例
		
	}
}

 

再查看数据库的话已经到state3这个节点了:


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值