jBPM开发:上下文(Context)和流程变量

3:08 am in Java开源 by aronezhang

 

上下文同流程变量有关,流程变量是同流程实例相关的key-value对信息,在jBPM流程开发过程中需要频繁的存取变量。

 

1,存取变量

org.jbpm.context.exe.ContextInstance 作为流程变量服务的中央接口,可以从ProcessInstance 获得ContextInstance:

1
2
ProcessInstance processInstance = ...;
ContextInstance contextInstance = (ContextInstance) processInstance.getInstance(ContextInstance.class);

 

基本的操作有:

1
2
3
4
void ContextInstance.setVariable(String variableName, Object value);
void ContextInstance.setVariable(String variableName, Object value, Token token);
Object ContextInstance.getVariable(String variableName);
Object ContextInstance.getVariable(String variableName, Token token);

 

变量名字是字符串java.lang.String类型;jBPM支持下列变量值类型:

1
2
3
4
5
6
7
8
9
10
11
12
13
java.lang.String
java.lang.Boolean
java.lang.Character
java.lang.Float
java.lang.Double
java.lang.Long
java.lang.Byte
java.lang.Short
java.lang.Integer
java.util.Date
byte[]
java.io.Serializable
classes that are persistable with hibernate(可以进行持久化的类)

 

2,变量的生命周期

在运行期间,可以把任何java object放到变量里,如果变量不存在,它将会被创建;变量可以被删除:

1
2
ContextInstance.deleteVariable(String variableName);
ContextInstance.deleteVariable(String variableName, Token token);

 

在jBPM3.2.3版本之前,不支持类型的自动转换。就是不允许用不同类型的值来覆盖变量,要想这样做,必须首先删除老变量。而jBPM3.2.3之后支持不同数据类型值的覆盖。

 

3,变量的持久化

变量是流程实例的一部分,流程实例保存在数据库中,保持数据库同流程实例同步。保存流程实例到数据库时创建、更新和删除变量

 

4,变量的范围

每个执行路线都有它自己的一套流程变量,变量请求总是在令牌上发生,流程实例有令牌树,当请求一个变量没有指明令牌,那么默认的令牌就是根令牌。

当在令牌上设置不存在变量,那么变量就在根令牌root-token上被建立,这就是说每个变量默认就是整个流程范围,如果想建立一个令牌的局部变量,必须使用:

1
ContextInstance.createVariable(String variableName, Token token);

 

5,临时变量

当流程实例持久化到数据库中,正常变量也作为流程实例的一部分被持久化了,某些状态下可能希望在委托类里用使用变量,但是又不想把它储存到数据库中。临时变量的生命周期同ProcessInstance java object一样。由于这个自然特性,临时变量同令牌无关,因此只有一个流程实例object的临时变量的map。

临时变量在上下文实例中可以从它们自己的变量组访问, 不需要在processdefinition.xml中声明

1
2
Object ContextInstance.getTransientVariable(String name);
void ContextInstance.setTransientVariable(String name, Object value);

 

下一篇文章将描述任务管理的内容。

 

– 

相关文章:

  1. MyEclipse7下安装插件
  2. jBPM开发:实现一个简单的审批流程
  3. jBPM开发:流程图的组成元素
  4. jBPM开发:任务管理
  5. jBPM开发:实现审批工作流(二)