工作流-JBPM(2)

来源:互联网 发布:php开发直播系统 编辑:程序博客网 时间:2024/06/16 22:04
        上篇博客中简单的介绍了工作流的概念以及JBPM中一些基本概念的理解,理论理解后结合着数据库中的表和表中的字段对这些抽象的概念进一步理解。下面内容中数据库表中的字段只是选择部分说明。

        流程定义:一个流程的说明,在实际应用的就是将用户画的流程图及生成的xml部署到JBPM解析器中,这个过程对应了四张表。

           JBPM4_DEPLOYMENT:部署表,用来描述一次部署
字段说明
DBID_: 主键,部署ID
STATE: 状态   active

  JBPM4_LOB:仓库表,存放了流程定义文档(xml,png)
字段说明
DBID_:主键
BLOB_VALUE_:文件转为二进制的存储
DEPLOYMENT_:部署ID  ( 外键 )
NAME_:  xml或者png的文件路径

  JBPM4_DEPLOYPROP:部署属性表,存放流程定义信息(一个部署4条记录)

如果pdkey发生改变,则是一个全新的名称,所以版本号应该从1开始计算  
这是一张比较直观的数据库中的原数据图
 
  JBPM_PROPERTY :版本表,记录版本,一般不会使用

        流程定义中如果某一步任务的执行人可以有多个候选人,且任何一个人接受并完成任务即可,这就出现了组任务的情况。这种情况就设计到了另一张数据库表——
          JBPM4_PARTICIPATION:存储组任务候选人,但这张表是一张临时表,任务完成后表中的相关数据会被删除。


        流程实例:当某个用户发起一次流程,就是启动一次流程实例。涉及到5张表。

 JBPM4_EXECUTION:表示当前正在执行的流程实例
字段
DBID_:主键
ID_:流程实例ID,即piid(process instance),该值是唯一的
ACTIVITYNAME_:当前流程实例活跃的节点名
PROCDEFID_:流程定义ID,即JBPM4_DEPLOYPROP表中的pdid  

 JBPM4_HIST_PROCINST:表示历史的流程实例,但是当前正在运行的流程实例也在这里
字段
DBID_:主键
ID_:流程实例ID
START_:整个流程实例的开始时间
END_:流程实例的结束时间,如果该流程实例为当前正在运行的流程则,该值为空
STATE:表示流程实例的状态  如果是正在运行,为active  如果流程实例结束  为ended  

JBPM4_TASK:表示当前正在执行的任务
说明:任务是jbpm流程图的一个节点
字段
DBID_:主键、任务ID
NAME_:任务名称
ASSIGNEE_:任务的执行人  
EXECUTION_ID_:JBPM_EXECUTION表中的ID_,相当于是piid 

JBPM4_HIST_TASK:表示历史的任务,但是当前正在执行的任务也在这里
字段
类似正在执行的任务,注意以下两个
STATE_:如果一个任务被完成以后,值为completed
end_:任务的结束时间有值了
JBPM4_HIST_ACTINST:表示历史的节点
字段
TYPE_:节点类型  


        流程变量:流程执行过程中的数据,涉及到两张表

       JBPM4_VARIABLE:存放流程变量
当一个流程实例结束以后,关于该流程实例的流程变量也被删除了
该表也是一个临时表,临时存放流程变量

JBPM4_HIST_VAR:永久存放流程变量的表
但是如果用jbpm4的方法把流程变量持久化,那么就意味着所有的数据的数据结构按照JBPM的表定死了,如果将来需要比较复杂的查询统计,jbpm4本身的表由于存储信息较少是无法满足需求的。

流程控制的表和数据结构的表分开,存储数据的表按照系统的需求设计


小结:
         结合数据库表理解JBPM中的概念容易很多,表结构整理清楚在程序中可灵活调用方法查询自己想要的信息。

0 0