jBPM4.4开发(六)-----------fork节点
2012-07-05 17:53
387 查看
分支节点fork
fork节点把一条路径分离成多条同时进行(并发)的执行路径,每条路径产生一个单独的执行,该节点适用于需要并发流程的场景,比如多部门的审批等。fork后一般会有join节点来合并流程,join节点可以设置在执行节点之前需要到达该节点的执行数目。
默认情况下join会等待所有子执行全部结束才会执行,如果设置了multiplicity,那么只要满足multiplicity的数量就会执行该join节点。
Demo:流程定义文件:fork.jpdl.xml
<?xml version="1.0" encoding="UTF-8"?> <process name="fork" xmlns="http://jbpm.org/4.4/jpdl"> <start name="start1" g="0,141,48,48"> <transition name="to fork1" to="fork1" g="-20,-15"/> </start> <fork name="fork1" g="77,141,48,48" > <transition name="to state1" to="state1" g="100,131:4,-18"/> <transition name="to state2" to="state2" g="100,202:2,-15"/> </fork> <state name="state1" g="158,108,92,52"> <transition name="to join1" to="join1" g="322,134:-60,-13"/> </state> <state name="state2" g="163,176,92,52"> <transition name="to join1" to="join1" g="323,200:-59,-11"/> </state> <join name="join1" g="294,140,48,48"> <transition name="to state3" to="state3" g="-30,-17"/> </join> <state name="state3" g="377,137,92,52"> <transition name="to end1" to="end1" g="-25,-18"/> </state> <end name="end1" g="523,144,48,48"/> </process>
测试类:
ForkTest.java
package com.itstudio.jbpm.fork.demo; import java.util.Set; import org.jbpm.api.Configuration; import org.jbpm.api.ExecutionService; import org.jbpm.api.ProcessEngine; import org.jbpm.api.ProcessInstance; import org.jbpm.api.RepositoryService; import org.jbpm.api.TaskService; public class ForkTest { public final Configuration configuration = new Configuration(); public final ProcessEngine processEngine=configuration.buildProcessEngine(); public final RepositoryService repositoryService= processEngine.getRepositoryService(); public final ExecutionService executionService=processEngine.getExecutionService(); public final TaskService taskService=processEngine.getTaskService(); private void deploy() { repositoryService.createDeployment().addResourceFromClasspath( "com/itstudio/jbpm/fork/demo/fork.jpdl.xml").deploy(); System.out.println("Successful"); } private void test() { Set<String> set = null; //启动流程或得流程实例 ProcessInstance processInstance = executionService.startProcessInstanceByKey("fork"); //查看当前活动节点[state1,state2] set = processInstance.findActiveActivityNames(); System.out.println("当前节点:"+set); //得倒活动节点 String id1 = processInstance.findActiveExecutionIn("state1").getId(); processInstance = executionService.signalExecutionById(id1); //查看当前活动节点 set = processInstance.findActiveActivityNames(); System.out.println("当前节点:"+set); //得倒活动节点 String id2 = processInstance.findActiveExecutionIn("state2").getId(); processInstance = executionService.signalExecutionById(id2); //查看当前活动节点 set = processInstance.findActiveActivityNames(); System.out.println("当前节点:"+set); //得倒活动节点 String id3 = processInstance.findActiveExecutionIn("state3").getId(); processInstance = executionService.signalExecutionById(id3); //查看当前活动节点[无] set = processInstance.findActiveActivityNames(); System.out.println("此时节点:"+set); } public static void main(String[] args) { ForkTest demo = new ForkTest(); demo.deploy(); demo.test(); } }
By Mr.Z
相关文章推荐
- jBPM4.4开发(五)-----------custom节点
- JBPM4.4开发(二)-------------决策节点decision
- jBPM4.4开发(一)------------start,end,state活动节点
- jBPM4.4开发(九)-----------HQL,SQL节点
- jBPM4.4开发(三)-----------task任务节点
- jBPM4.4开发(四)-----------sub-process节点
- 【代码篇】JBPM4.4开发流程节点(动态代理实现流程管理业务)
- 【思想篇】工作流技术JBPM4.4开发入门(三)
- jbpm4.4之开发环境搭建1
- JBPM 4.4 流程节点详解
- jbpm4.4根据流程定义获取所有的流程节点Activity
- MyEclipse8.5搭建Jbpm4.4开发
- 开源Jbpm4.4+ssh2+oracle10实现表单、流程自定义开发流程业务
- jbpm4.4开发环境配置+请假实例
- JBPM4.4开发感受
- JBPM4.4开发感受
- JBPM4.4应用开发
- JBPM4.4之JAVA节点
- JBPM具体应用之fork,join,state节点的使用
- JBPM4.4节点详解(常用)