jbpm4中的 Variable 和 jbpm3 中的 Variable 区别不是很大,主要是加强了lob的处理。
数据库的表结构上,在jbpm3 中, 所有的 lob 默认以 1024 byte 为间隔(1024个byte一条记录) 存放在 bytearray中, 到了 jbpm4中 只剩下了一个表 jbpm4_lob ,并且不再将 lob进行拆分,并提供了一堆附加的操作类(都在lob包下)。
在jbpm4中,Variable 的作用域仅仅为 execution,execution结束时 Variable 会被删除。 若需要在流程结束后仍然能够获取到之前Variable,需要将 Variable中的 isHistoryEnabled设置为true(默认为false)
protected boolean isHistoryEnabled = false;
但目前的4.0版本中似乎存在bug,将isHistoryEnabled设置为true后,Variable倒是能够在jbpm4_hist_var中查询到了,可是仅仅有key,值没有存下来。
又仔细研究了jbpm4的源码,原来jbpm4是在创建Variable是触发VariableCreate 事件,然后在设置Variable的value,在Variable的setValue中,又去触发VariableUpdate。
ScopeInstanceImpl.java
variable.setKey(key);
variable.setExecution(getExecution());
variable.setTask(getTask());
variable.setHistoryEnabled(isHistoryEnabled);
if (isHistoryEnabled) {
HistoryEvent.fire(new VariableCreate(variable));
}
variable.setValue(value);
Variable.java
setObject(value);
HistorySession historySession = Environment.getFromCurrent(HistorySession.class, false);
if ( isHistoryEnabled
&& (historySession!=null)
) {
HistoryEvent.fire(new VariableUpdate(this));
}
在VariableUpdate中,会将Variable的变更记录保存 jbpm4_hist_detail 表中
VariableUpdate.java
@Override
public void process() {
DbSession dbSession = Environment.getFromCurrent(DbSession.class);
HistoryVariableImpl historyVariable = dbSession.get(HistoryVariableImpl.class, variable.getDbid());
historyVariable.updated(variable);
}
HistoryVariableImpl.java
public void updated(Variable variable) {
String newValue = variable.getTextValue();
if ( (value==null && newValue!=null)
|| (value!=null && (!value.equals(newValue)))
) {
addDetail(new HistoryVariableUpdateImpl(value, newValue));
}
}
public void addDetail(HistoryDetailImpl detail) {
detail.setHistoryVariable(this, nextDetailIndex);
nextDetailIndex++;
}
在HistoryVariableImpl.java 中可以看到,update操作仅仅生成了一个 HistoryVariableUpdateImpl的实例,确没有将这个实例添加到 HistoryVariableImpl 的 details 中
/** only here to get hibernate cascade */
protected Set<HistoryDetailImpl> details = new HashSet<HistoryDetailImpl>();
因此在数据库的 jbpm4_hist_detail 表中查询不到任何数据。
补充:
刚刚查到,原来 jbpm4.0 中 关于History Variable 的 代码虽然提交了,但还没有完成,也就是说还不能用
分享到:
相关推荐
jbpm4源码jbpm4源码jbpm4源码
5.18 表JBPM4_VARIABLE 17 6、操作: 19 6.1 发布一个流程DEPLOY: 19 6.2 上传一个ZIP包:(包含PNG和JPDL.XML)后 19 6.3 开始一个流程STARTPROCESSINSTANCEBYKEY后 19 6.4 填写申请信息 19 6.5 审批申请信息 19 ...
jbpm4。4中表之间的关系,jbpm4 表关系
jbpm应用开发指面(胡奇) jbpm4.3表结构和表字段说明 [jBPM开发指南].高杰.文字版 jBPM5_用户手册-中文版
jboss jbpm4最新开发包 采用了pvm框架
java源代码分包详解JBPM4 java源代码分包详解JBPM4
jBPM4工作流应用开发指南 胡奇写的,十分赞!!
JBPM4 SSH EXTJS JBPM SSH EXTJS JBPM4 SSH EXTJS JBPM SSH EXTJS JBPM4 SSH EXTJS JBPM SSH EXTJS JBPM4 SSH EXTJS JBPM SSH EXTJS 希望对大家有帮助。
介绍了jbpm的类的用法,含例子代码。使用于刚入门的人学习!
,jbpm4的源码,分支,会签等一些中国特色建立下载《jBPM4工作流应用开发指南.pdf》这本书
这是jbpm4的安装配置介绍文件,详细的介绍了jbpm4与eclipse的集成
jbpm4新手教程
整理的别人JBPM4 学习资料, 工作流学习文档
JBPM4 开发文档 实例 流程 JBPM4 开发文档 实例 流程 JBPM4 开发文档 实例 流程
jbpm jbpm4.3.jar DDDDDDDD
JBPM4 表结构概要说明 操作信息变化 各字段详细说明
本示例是jBPM4工作流示例jbpmDemo,详细演示了jBPM4工作流引擎的使用,对工作流采用Canvas动画形象演示,非常实用。也非常先进和有趣。 希望您喜欢。
风中叶老师讲的JBPM4与Spring整合例子代码 JBPM4 Spring OA工作流系统
从jBPM 3升级到jBPM 4 1.7. 报告问题 2. 安装配置 2.1. 发布 2.2. 必须安装的软件 2.3. 快速上手 2.4. 安装脚本 2.5. 依赖库和配置文件 2.6. JBoss 2.7. Tomcat 2.8. Signavio基于web的流程编辑器 2.9....
这个主要是用于搭建jbpm4.4环境的开发工具包,需要的朋友可以下载参考