jbpm知识点——ContextInstance

上下文主要是用来操作变量的,其实在decision和ProcessState2的例子中已经使用过了。

一般得到ContextInstance可以通过以下2种方式:
ContextInstance contextInstance = processInstance.getContextInstance();
ContextInstance contextInstance = (ContextInstance) processInstance.getInstance(ContextInstance.class);

基本的操作有:
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);
ContextInstance.deleteVariable(String variableName);
ContextInstance.deleteVariable(String variableName, Token token);

每个变量默认都是整个流程范围的。如果想设置一个令牌局部变量,你必须明确使用如下语句创建:
ContextInstance.createVariable(String name, Object value, Token token);

变量是同流程实例一起持久化的(jbpm_variableinstance&jbpm_variableaccess),如果不希望变量持久化到数据库可以使用临时变量
Object ContextInstance.getTransientVariable(String name);
void ContextInstance.setTransientVariable(String name, Object value);
临时变量与令牌无关,因此对于一个流程实例对象只有一个临时变量map。

当一些特殊的变量需要持久化到数据库中的时候,我们要自行设置转换器,转换成可以保存到数据库中的数据类型。比如将boolean保存成string。

补充:
jbpm还支持另一种方式的变量操作见action的例子<msg>HELLO</msg> 



你可能感兴趣的:(jbpm)