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中的常用表结构及其用途。 #### 一、资源库与运行时表结构 ##### 1. **JBPM4_DEPLOYMENT** — 流程定义表 - **作用**: 存储已部署流程定义的相关信息。 - **主要内容**: 包括流程定义的ID、...
下面将详细介绍JBPM4中各个表的作用及相关字段说明。 #### 1. **JBPM4_DEPLOYMENT** - 流程定义表 - **描述**: 此表用于存储部署到系统中的流程定义信息。 - **字段说明**: 通常包括流程ID、名称、版本号等基本信息...
- **JBPM4_VARIABLE**:流程变量表。 **流程操作举例** - **部署流程**:通过deploy操作,会在相应的表中创建记录,如jbpm4_deployment、jbpm4_deployprop和jbpm4_lob。 - **启动流程实例**:调用...
`JBPM4_VARIABLE` 此表记录了流程执行过程中的变量状态。变量是流程中重要的数据载体,它们可以用来传递信息、控制流程分支等。 #### 11. `JBPM4_HIST_DETAIL` `JBPM4_HIST_DETAIL`表存储了历史细节信息,包括...
JBPM4_VARIABLE 表存的是进行时的临时变量。这张表记录了流程中的变量信息,包括变量的名称、值和类型。 JBPM4_HIST_DETAIL JBPM4_HIST_DETAIL 表保存 Variable 的变更记录。这张表记录了变量的历史记录,包括变量...
3. **JBPM4_EXECUTION**:此表记录流程实例的执行信息,是JBPM4中取代Token机制的执行实体表。 4. **JBPM4_HIST_ACTINST**:流程活动实例的历史表,记录每个活动实例的详细执行历史。 5. **JBPM4_HIST_DETAIL**:...
- **JBPM4_VARIABLE**:流程变量表,存储流程实例中的变量值。 6. **操作示例** - **发布流程**:使用`DEPLOY`命令将流程定义发布到系统。 - **上传ZIP包**:包含流程定义(PNG和JPDL.XML)的ZIP文件。 - **...
在深入学习和使用JBPM4的过程中,我们可以了解到其核心特性和应用场景,从而更好地理解和应用工作流技术。 ### 一、JBPM4核心概念 1. **工作流定义(Process Definition)**:工作流定义是业务流程的蓝图,用BPMN...
1. **流程定义(Process Definition)**: 在JBPM4中,业务流程以BPMN2(Business Process Model and Notation 2.0)的XML文件形式进行定义,包含了流程图中的各个节点和连接线,如任务(Task)、事件(Event)、网关...
JBPM4_VARIABLE表:存储临时变量信息。 JBPM4_HIST_DETAIL表:存储变量的变更记录。 JBPM4_HIST_VAR表:存储历史的变量信息。 任务历史记录相关数据表 JBPM4_HIST_TASK表:存储任务的历史记录信息。 身份验证和...
- `jbpm_variableinstance`:保存流程中的变量值。 - `jbpm_deployment`:关于部署的详细信息,如部署ID、部署时间等。 2. **表名注释**: 表名注释提供了对每个表功能的简要说明,有助于开发者理解数据库结构...
15. **JBPM4_VARIABLE**:上下文表,保存流程运行时的临时变量,这些变量随着流程的执行而动态变化。 16. **JBPM4_HIST_DETAIL**和**JBPM4_HIST_VAR**:分别保存变量变更的详细记录和历史变量的快照,提供审计和...
变量(Variable)**:变量用于存储工作流执行过程中的数据。jBPM4.1允许在流程定义中声明变量,并且可以在活动之间传递这些变量的值。 **6. 任务(Task)**:任务是活动的一种形式,通常涉及到人工参与。jBPM4.1...
`JBPM4_VARIABLE`表保存流程执行过程中的临时变量,随着流程执行动态变化。 `JBPM4_HIST_DETAIL`和`JBPM4_HIST_VAR`分别记录变量的变更细节和历史状态,为审计和分析提供依据。 最后,`JBPM4_PROPERTY`表存储了...
4. 变量(Variable):在流程中,可以设置和修改变量,它们用于存储流程运行过程中的数据。 5. 工作流引擎(Workflow Engine):jbpm的工作流引擎负责解析流程定义,调度任务,并管理流程实例的生命周期。 二、...
除了上述五个表,jbpm4还包含其他表格,例如用于任务管理的JBPM4_TASK,用于存储流程变量的JBPM4_VARIABLE,以及用于持久化工作流事件的JBPM4_EVENT等。这些表共同构成了jbpm4的数据模型,支持了流程的定义、执行、...
4. jbpm.task.hbm.xml:任务管理是jbpm的核心组件之一,这个文件定义了任务实体的数据库映射,包括任务状态、责任人、参与者等信息,这对于实现工作分配和协作功能至关重要。 5. jbpm.variable.types.xml:jbpm支持...
JBPM4_PVM(Process Virtual Machine)是JBPM框架中的一个核心组件,用于处理流程执行的核心逻辑。本文档将详细解析JBPM4_PVM的源代码结构,重点介绍其中的关键类及其功能。 #### 二、org.jbpm.pvm.internal.ant包 ...
中文用户指南则是为了方便中国用户更好地理解jbpm而准备的,它详细解释了jbpm的各个组件和概念,如流程实例(process instance)、任务(task)、事件(event)和变量(variable)。指南还可能包含实际操作步骤,如...
在jBPM 4中,流程定义是通过流程定义语言(Business Process Definition Language, BPD或BPMN)进行的,这是一套图形化的符号,用于描绘业务流程的各个步骤和决策。流程定义包括以下几个核心概念: 1. **流程定义...