博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jbpm(4)---流程局部变量
阅读量:4087 次
发布时间:2019-05-25

本文共 3837 字,大约阅读时间需要 12 分钟。

jbpm中节点分为等待节点和自动执行节点:

等待节点:如state节点,等待节点会停

自动执行节点:如start和end节点,自动执行节点不会停

当一个节点只有一个输出时,会自动往下走,但是当一个节点有多个输出时,需要根据条件进行判断节点往哪个方向走。

流程定义:就是规则

流程实例:规则+数据

局部变量:用于定义流程相关数据。一个完整的流程需要数据的传递

下面讲解流程局部变量示例:

1、新建工具包类JbpmUtil,代码如下:

package com.cn.util;import org.jbpm.api.Configuration;import org.jbpm.api.ExecutionService;import org.jbpm.api.ProcessEngine;import org.jbpm.api.RepositoryService;/** * 工具包 * */public class JbpmUtil {	private static ProcessEngine processEngine;          //流程引擎对象	private static RepositoryService repositoryService;  //流程定义管理类	private static ExecutionService executionService;    //流程实例管理类		static{		processEngine=Configuration.getProcessEngine();   //通过Configuration获得流程引擎对象		repositoryService=processEngine.getRepositoryService();  		executionService=processEngine.getExecutionService();	}		//发布流程定义方法	public static void delopy(String path){		getRepositoryService().createDeployment().addResourceFromClasspath(path).deploy();	}		public static ProcessEngine getProcessEngine(){		return processEngine;	}		public static ExecutionService getExecutionService() {		return executionService;	}		public static RepositoryService getRepositoryService() {		return repositoryService;	}}

2、绘制流程图qingJia.jpdl.xml,该流程图一个节点有两个输出同意或否决,需要传递局部变量进行判断该审批节点该如何往下走

3、发布流程图,用工具类JbpmUtil进行发布

package com.cn.test;import com.cn.util.JbpmUtil;/** * 发布流程定义 * 流程定义processDefinition,流程定义是规则,规则就是没有数据的描述 *  * */public class DeployProcessDefinition {	public static void main(String[] args) {		//发布流程定义		JbpmUtil.delopy("jpdl/qingJia.jpdl.xml");			}}
4、启动流程实例

package com.cn.test;import org.jbpm.api.ExecutionService;import org.jbpm.api.ProcessEngine;import com.cn.util.JbpmUtil;/** * 启动流程实例 * */public class StartProcessInstance {	public static void main(String[] args) {		ExecutionService executionService=JbpmUtil.getExecutionService();		executionService.startProcessInstanceById("qingJia-1");			}}
5、流程流转

package com.cn.test;import org.jbpm.api.ExecutionService;import org.jbpm.api.ProcessEngine;import com.cn.util.JbpmUtil;/** * 启动流程实例 * */public class StartProcessInstance {	public static void main(String[] args) {		ExecutionService executionService=JbpmUtil.getExecutionService();		executionService.signalExecutionById("qingJia.30001");			}}
流程流转到老师审批节点,如

6、因为老师审批节点有两个走向,即同意和驳回。需要加入数据进行条件判断。如果请假天数小于3天则同意,如果请假天数大于3天则不同意。那么这个请假天数的数据如何

传入到流程中进行条件判断呢?这就需要流程局部变量将数据传递到流程中,代码如下:

package com.cn.test;import java.util.HashMap;import java.util.Map;import org.jbpm.api.ExecutionService;import org.jbpm.api.ProcessEngine;import com.cn.util.JbpmUtil;/** * 启动流程实例 * */public class StartProcessInstance {	public static void main(String[] args) {		ExecutionService executionService=JbpmUtil.getExecutionService();		Map
map=new HashMap
(); map.put("stuName", "张三"); map.put("days", 3); map.put("reson", "生病"); executionService.signalExecutionById("qingJia.30001", map); }}
运行完代码后,可以在jbpm4_variable中查看流程局部变量数据信息,如下:

获取流程局部变量,进行条件判断。决定多个输出的跳转节点

package com.cn.test;import java.util.HashMap;import java.util.Map;import org.jbpm.api.ExecutionService;import org.jbpm.api.ProcessEngine;import com.cn.util.JbpmUtil;/** * 启动流程实例 * */public class StartProcessInstance {	public static void main(String[] args) {		ExecutionService executionService=JbpmUtil.getExecutionService();		Map
map=new HashMap
(); map.put("stuName", "张三"); map.put("days", 3); map.put("reson", "生病"); //executionService.signalExecutionById("qingJia.30001", map); //得到流程局部变量 String pid="qingJia.30001"; String stuName=(String) executionService.getVariable(pid, "stuName"); int days=(int) executionService.getVariable(pid, "days"); System.out.println(stuName+"请假天数为:"+days+"天"); String nodeName=""; //大于3天驳回,小于3天同意 if(days>=3){ nodeName="to 驳回"; }else{ nodeName="to 同意"; } executionService.signalExecutionById(pid, nodeName); }}

 

你可能感兴趣的文章
Spring boot集成flyway 的一些报错
查看>>
Spring boot2+Mybais+Mysql+flyway简单集成Demo
查看>>
阿里巴巴Java开发手册 wode摘抄
查看>>
《算法闯关记》 计数排序 桶排序
查看>>
《算法闯关记》选择排序
查看>>
《算法闯关记》 归并排序
查看>>
《算法闯关记》快速排序
查看>>
互联网UV,PU,TopN统计
查看>>
IntelliJ IDEA自身以及maven项目打包方式
查看>>
Hadoop跨集群迁移数据(整理版)
查看>>
Ranger安装部署
查看>>
Ranger安装部署 - solr安装
查看>>
Java代码规范总结,更新持续中
查看>>
openldap安装部署
查看>>
数据结构:八大数据结构分类(转载版)
查看>>
数据结构-二叉树、B树、B+树、B*树(整理版)
查看>>
Kerberos基本原理、安装部署及用法
查看>>
Kerberos与各大组件的集成
查看>>
Hive优化(整理版)
查看>>
Java面试题收录含答案(整理版)持续中....
查看>>