流程变量在流程外部,通过ExecutionService
提供的方法进行访问:
-
ProcessInstance startProcessInstanceById(String processDefinitionId, Map<String, Object> variables);
-
ProcessInstance startProcessInstanceById(String processDefinitionId, Map<String, Object> variables, String processInstanceKey);
-
ProcessInstance startProcessInstanceByKey(String processDefinitionKey, Map<String, ?> variables);
-
ProcessInstance startProcessInstanceByKey(String processDefinitionKey, Map<String, ?> variables, String processInstanceKey);
-
void setVariable(String executionId, String name, Object value);
-
void setVariables(String executionId, Map<String, ?> variables);
-
Object getVariable(String executionId, String variableName);
-
Set<String> getVariableNames(String executionId);
Map<String, Object> getVariables(String executionId, Set<String> variableNames);
在流程中可以通过Execution接口,传递给用户代码,比如 ActivityExecution
和EventListenerExecution
:
-
Object getVariable(String key);
-
void setVariables(Map<String, ?> variables);
-
boolean hasVariable(String key);
-
boolean removeVariable(String key);
-
void removeVariables();
-
boolean hasVariables();
-
Set<String> getVariableKeys();
-
Map<String, Object> getVariables();
-
void createVariable(String key, Object value);
void createVariable(String key, Object value, String typeName);
jBPM没有自动检测变量值变化的机制。 比如,从实例变量中获得了一个序列化的集合,添加了一个元素, 然后你就需要把变化了的变量值准确的保存到DB中。
默认情况下,变量创建在顶级的流程实例作用域中。 这意味着它们对整个流程实例中的所有执行都是可见的,可访问的。 流程变量是动态创建的。意味着,当一个变量通过任何一个方法设置到流程中, 整个变量就会被创建了。
每个执行都有一个变量作用域。声明在内嵌执行级别中的变量, 可以看到它自己的变量和声明在上级执行中的变量,这时按照正常的作用域规则。 使用execution接口中的createVariable
方法, ActivityExecution
和EventListenerExecution
可以创建流程的局部变量。
在未来的发布中,我们可能添加在jPDL流程语言中声明的变量。
jBPM支持下面的Java类型,作为流程变量:
- java.lang.String
- java.lang.Long
- java.lang.Double
- java.util.Date
- java.lang.Boolean
- java.lang.Character
- java.lang.Byte
- java.lang.Short
- java.lang.Integer
- java.lang.Float
- byte[] (byte array)
- char[] (char array)
- hibernate entity with a long id
- hibernate entity with a string id
- serializable
为了持久化这些变量,变量的类型会按照这个列表中的例子进行检测。 第一个匹配的类型, 会决定变量如何保存。
(jBPM 4.3中新添加的功能)
在 custom
s, event-handler
s 和其他 用户代码中,你可以获取流程变量。当一个流程变量作为 持久化的对象被保存时,你可以直接更新反序列化的对象, 而不需要再次进行保存。jBPM会管理反序列化的流程变量 如果出现了修改就会自动更新它们。比如(参考报org.jbpm.examples.serializedobject), 查看一个custom
活动行为内的代码片段:
public class UpdateSerializedVariables implements ActivityBehaviour {
public void execute(ActivityExecution execution) {
Set<String> messages = (Set<String>) execution.getVariable("messages");
messages.clear();
messages.add("i");
messages.add("was");
messages.add("updated");
}
}
当事务提交时,用户代码会被调用, 更新消息集合会自动被更新到数据库中。
当从DB读取以序列化格式保存的流程变量时, jBPM会监控反序列化的对象。在事务提交之前, jBPM会反序列化并自动更新变量,如果必要的话。 jBPM会忽略更新反序列化对象,如果其他对象被设置到那个作用域 (这可能是其他类型)。jBPM也会略过更新 那些数值没有发生变化的的反序列化对象。这些检测会查看 如果一个对象被修改了,基于计算再次序列化对象的字节数组, 和从数据库中原来读取的字节数组进行比较。
只有jUEL被配置成了脚本语言。 jUEL是通用表达式语言的一个实现。如果想获得 更多如何使用UEL的细节,可以参考 JEE 5教程,通用表达式语言一章。
如果想配置其他脚本语言, 请参考开发者指南(尚未支持)。
分享到:
相关推荐
JBPM4.3用户手册JBPM4.3用户手册JBPM4.3用户手册
工作流实例 jbpm4.3 java 可以和SSH结合
JBPM4.3编程指南JBPM4.3编程指南JBPM4.3编程指南JBPM4.3编程指南JBPM4.3编程指南JBPM4.3编程指南JBPM4.3编程指南JBPM4.3编程指南
jbpm jbpm4 jbpm4.3 工作流,是一本学校工作流非常好的书,希望能对大家有用!
jbpm4.3用户指南 描述了工作流的基本操作
jbpm4.3版本开发指南,对工作流引擎感兴趣的可以下载学习一下
它提供了流程的图形化设计的界面,是一个开源的工作流软件,将业务流程转化为计算机识别的语言,并部署在项目中
jbpm4.3 - demo jbpm4.3 学习时,用到的 希望对大家有所帮助!
本整合使用Myeclipse8.5M+JBPM4.3搭配环境实现请假流程
jbpm例子,详情看http://family168.com视屏下载
OA工作流开发使用Jboss JBPM开源插件,内有详细配置信息!可以使用SSH2架构,Tomacat服务器! 需要的联系我哦!
JBPM4工作流基础知识学习,自己总结的,东西比较基础。 有代码和样例
jbpm4.3的源代码,研究一下,有助于对工作流的理解!
jBPM4.3简略深入 了解(一) 工作流(系统 )首要概念 工作流引擎:工作流的核心组件,对流程实例、任务 实例以及其状态 进行管理 流程定义:预先定义的业务流转逻辑 流程实例:业务的一次实际流转历程
jbpm4是当前最主流的开源工作流产品,基于此你可以构建自己的工作流应用。这个是对JBPM4的数据库进行说明,对您理解JBPM4工作流很有帮助
基于JBPM4.3 整合SSH2 框架的请假流程完整实例。 需要jar可以发email给我或留言
业务流程定制,领导审批。工作流开发,含有lib
jbpm工作流引擎是关于一系列审批流,提供的API主要应用与查询jBPM相应的方法
BPM4工作流应用开发指南 《jBPM4工作流应用开发指南》是2010年电子工业出版社出版的图书,作者是胡奇。 完全解析jBPM4应用开发技术 9位工作流业内专家联袂推荐 随着在现代企业管理中对于信息化、流程化的深度挖掘,...