首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

一步一步学JBPM(九)——流程变量

2012-11-08 
一步一步学JBPM(9)——流程变量流程变量的使用,大大增加了JBPM的灵活性。用户可以在流程执行过程中的任何时间

一步一步学JBPM(9)——流程变量

流程变量的使用,大大增加了JBPM的灵活性。用户可以在流程执行过程中的任何时间插入流程变量,然后可以随时的读取流程变量,这样可以实现用户的数据传递。

总体来说流程变量有两大类。一种是execution范围的也就是流程执行的变量,另一种是task范围的,也就是任务范围的变量。下面介绍一下这两种变量的使用。

1:变量的读取。1.1:execution写变量

execution写变量的方式一般来说有两种,

一种是在流程实例的创建的时候,给流程实例添加变量。

其中startProcessInstanceByKey方法启动流程,第一个参数是流程定义的key,表示启动的是那个流程定义。第二个参数是要给这个新启动的流程添加变量,这个变量可以使用map,也可以是一个单独的字符串。

第二种添加变量的方法是:

使用executionService这个jbpm的服务类,然后在调用它的setVariable方法,第一个参数是流程实例ID,也就是你要给那个流程execution添加变量,第二个参数是变量,这个也可以是map对象。

 

1.2 execution读变量

读变量的方式很简单。首先使用

1.3 task写变量

使用taskService写变量,第一个参数是taskID,第二个参数是map类型的集合。

这个和execution区别就是这种方式第二个参数不能是字符串。只能是一个map集合。

1.4 task读变量

task读变量方式和写变量的是对应的

第一个参数是taskID,第二个是变量名称。

 

2:两种变量的联系

这两种变量其实就相当于java类中的两个变量,他们两个的作用域不同而已。因为一个execution可能包含多个任务,所以execution的范围大,task的范围是包含在execution范围中的,也就是说task可以取到execution变量的值。

 

3:流程变量也可以在JBDL中定义

他们最后都会持久化到jbpm数据库中,最终的原理都是一样的。JBDL定义变量的方式如下:

其中msg就是一个变量,变量的值是plan,这个变量的读取不能使用上述几种方法。一般在listener中采用映射的方法读取。

首先定义一个私有变量,然后通过它的get方法获取

这样在流程执行中就会自动拿到msg的值。

 

总体来说流程变量的读取操作起来简单,而且非常实用。一般都用来在启动流程中将业务主键ID放到流程变量中。比如我们要审核张三的请假条,就把张三请假条这条数据的主键放到变量中。方便以后使用。

1楼lfmilaoshi前天 21:26
不断的提高n米老师

热点排行