`
phoenix.clt
  • 浏览: 24702 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JBPM4中的variable

阅读更多

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 的 代码虽然提交了,但还没有完成,也就是说还不能用

 

 

 

分享到:
评论
1 楼 tree_161219 2010-11-02  
需要这样做一下才会启用。createVariable(name, value, type, true)

相关推荐

    JBPM4 常用表结构及其说明

    本文将详细介绍JBPM4中的常用表结构及其用途。 #### 一、资源库与运行时表结构 ##### 1. **JBPM4_DEPLOYMENT** — 流程定义表 - **作用**: 存储已部署流程定义的相关信息。 - **主要内容**: 包括流程定义的ID、...

    JBPM4 表 详细介绍

    下面将详细介绍JBPM4中各个表的作用及相关字段说明。 #### 1. **JBPM4_DEPLOYMENT** - 流程定义表 - **描述**: 此表用于存储部署到系统中的流程定义信息。 - **字段说明**: 通常包括流程ID、名称、版本号等基本信息...

    JBPM4 开发文档 实例 流程

    - **JBPM4_VARIABLE**:流程变量表。 **流程操作举例** - **部署流程**:通过deploy操作,会在相应的表中创建记录,如jbpm4_deployment、jbpm4_deployprop和jbpm4_lob。 - **启动流程实例**:调用...

    JBPM4 每张表对应的含义

    `JBPM4_VARIABLE` 此表记录了流程执行过程中的变量状态。变量是流程中重要的数据载体,它们可以用来传递信息、控制流程分支等。 #### 11. `JBPM4_HIST_DETAIL` `JBPM4_HIST_DETAIL`表存储了历史细节信息,包括...

    JBPM4的17张表说明.docx

    JBPM4_VARIABLE 表存的是进行时的临时变量。这张表记录了流程中的变量信息,包括变量的名称、值和类型。 JBPM4_HIST_DETAIL JBPM4_HIST_DETAIL 表保存 Variable 的变更记录。这张表记录了变量的历史记录,包括变量...

    JBPM4.3中文表结构详解,中文名称、长度等

    3. **JBPM4_EXECUTION**:此表记录流程实例的执行信息,是JBPM4中取代Token机制的执行实体表。 4. **JBPM4_HIST_ACTINST**:流程活动实例的历史表,记录每个活动实例的详细执行历史。 5. **JBPM4_HIST_DETAIL**:...

    JBPM工作原理及表结构详解

    - **JBPM4_VARIABLE**:流程变量表,存储流程实例中的变量值。 6. **操作示例** - **发布流程**:使用`DEPLOY`命令将流程定义发布到系统。 - **上传ZIP包**:包含流程定义(PNG和JPDL.XML)的ZIP文件。 - **...

    JBPM4 学习使用总结

    在深入学习和使用JBPM4的过程中,我们可以了解到其核心特性和应用场景,从而更好地理解和应用工作流技术。 ### 一、JBPM4核心概念 1. **工作流定义(Process Definition)**:工作流定义是业务流程的蓝图,用BPMN...

    一个简单的Jbpm4项目源码

    1. **流程定义(Process Definition)**: 在JBPM4中,业务流程以BPMN2(Business Process Model and Notation 2.0)的XML文件形式进行定义,包含了流程图中的各个节点和连接线,如任务(Task)、事件(Event)、网关...

    jbpm4数据表及字段说明.doc

    JBPM4_VARIABLE表:存储临时变量信息。 JBPM4_HIST_DETAIL表:存储变量的变更记录。 JBPM4_HIST_VAR表:存储历史的变量信息。 任务历史记录相关数据表 JBPM4_HIST_TASK表:存储任务的历史记录信息。 身份验证和...

    jbpm4数据库表名注释以及官方开发手册html_en

    - `jbpm_variableinstance`:保存流程中的变量值。 - `jbpm_deployment`:关于部署的详细信息,如部署ID、部署时间等。 2. **表名注释**: 表名注释提供了对每个表功能的简要说明,有助于开发者理解数据库结构...

    jbpm数据库表结构详解

    15. **JBPM4_VARIABLE**:上下文表,保存流程运行时的临时变量,这些变量随着流程的执行而动态变化。 16. **JBPM4_HIST_DETAIL**和**JBPM4_HIST_VAR**:分别保存变量变更的详细记录和历史变量的快照,提供审计和...

    jBPM4.1中文开发指南

    变量(Variable)**:变量用于存储工作流执行过程中的数据。jBPM4.1允许在流程定义中声明变量,并且可以在活动之间传递这些变量的值。 **6. 任务(Task)**:任务是活动的一种形式,通常涉及到人工参与。jBPM4.1...

    JBPM4.4工作流数据表结构的详解

    `JBPM4_VARIABLE`表保存流程执行过程中的临时变量,随着流程执行动态变化。 `JBPM4_HIST_DETAIL`和`JBPM4_HIST_VAR`分别记录变量的变更细节和历史状态,为审计和分析提供依据。 最后,`JBPM4_PROPERTY`表存储了...

    jbpm中文教程-详细

    4. 变量(Variable):在流程中,可以设置和修改变量,它们用于存储流程运行过程中的数据。 5. 工作流引擎(Workflow Engine):jbpm的工作流引擎负责解析流程定义,调度任务,并管理流程实例的生命周期。 二、...

    jbpm表结构说明.doc

    除了上述五个表,jbpm4还包含其他表格,例如用于任务管理的JBPM4_TASK,用于存储流程变量的JBPM4_VARIABLE,以及用于持久化工作流事件的JBPM4_EVENT等。这些表共同构成了jbpm4的数据模型,支持了流程的定义、执行、...

    jbpm4.3-src.zip

    4. jbpm.task.hbm.xml:任务管理是jbpm的核心组件之一,这个文件定义了任务实体的数据库映射,包括任务状态、责任人、参与者等信息,这对于实现工作分配和协作功能至关重要。 5. jbpm.variable.types.xml:jbpm支持...

    JBPM4_PVM源代码分析.doc

    JBPM4_PVM(Process Virtual Machine)是JBPM框架中的一个核心组件,用于处理流程执行的核心逻辑。本文档将详细解析JBPM4_PVM的源代码结构,重点介绍其中的关键类及其功能。 #### 二、org.jbpm.pvm.internal.ant包 ...

    jbpm教程+中文用户指南

    中文用户指南则是为了方便中国用户更好地理解jbpm而准备的,它详细解释了jbpm的各个组件和概念,如流程实例(process instance)、任务(task)、事件(event)和变量(variable)。指南还可能包含实际操作步骤,如...

    jBPM 4视频教程02管理流程定义

    在jBPM 4中,流程定义是通过流程定义语言(Business Process Definition Language, BPD或BPMN)进行的,这是一套图形化的符号,用于描绘业务流程的各个步骤和决策。流程定义包括以下几个核心概念: 1. **流程定义...

Global site tag (gtag.js) - Google Analytics