了解JBPM是如何运作的,还是要从表结构下手,真正理解后,才能明白每一个步操作的真实含义。
以JBPM4.4为例,在oracle中的表结构如下,一共18张表,共分为四大模块:
引擎属性数据表
JBPM4_PROPERTY 属性表
KEY_ | VARCHAR2(255) |
|
VERSION_ | NUMBER(10) |
|
VALUE_ | VARCHAR2(255) |
|
查看数据,可以看到类似下面的信息:
key_ version_ value_
next.dbid 1 10001
从这里可以看出来,为了适应各种数据库,对于主键的自增,采用了自定义主键生成器的方式
具体实现可以查看org.jbpm.pvm.internal.id.PropertyImpl这个类
流程定义资源与实例运行时数据表
JBPM4_DEPLOYMENT 流程定义表
DBID_ | NUMBER(19) | 主键 |
NAME_ | CLOB |
|
TIMESTAMP_ | NUMBER(19) |
|
STATE_ | VARCHAR2(255) |
|
|
|
|
JBPM4_DEPLOYPROP流程定义属性表
DBID_ | NUMBER(19) | 主键 |
DEPLOYMENT_ | NUMBER(19) | 外键 JBPM4_DEPLOYMENT.DBID_ |
OBJNAME_ | VARCHAR2(255) | 发布的名称 |
KEY_ | VARCHAR2(255) | Langid,pdid,pdkey,pdversion等信息 |
STRINGVAL_ | VARCHAR2(255) | value存放字符串类型 |
LONGVAL_ | NUMBER(19) | value存放数字类型 |
JBPM4_LOB 大对象表 (流程定义的相关属性 包括jpdl xml 图片 用户代码等)
DBID_ | NUMBER(19) | 主键 |
DBVERSION_ | NUMBER(10) |
|
BLOB_VALUE_ | BLOB |
|
DEPLOYMENT_ | NUMBER(19) | 外键 JBPM4_DEPLOYMENT.DBID_ |
NAME_ | CLOB |
|
发布一个流程后
jbpm4_deployment新增一条记录
jbpm4_deployprop新增四条记录
jbpm4_lob 新增二条记录
JBPM4_EXECUTION 流程实例表
DBID_ | NUMBER(19) | 主键 |
CLASS_ | VARCHAR2(255) |
|
DBVERSION_ | NUMBER(10) |
|
ACTIVITYNAME_ | VARCHAR2(255) |
|
PROCDEFID_ | VARCHAR2(255) |
|
HASVARS_ | NUMBER(1) |
|
NAME_ | VARCHAR2(255) |
|
KEY_ | VARCHAR2(255) |
|
ID_ | VARCHAR2(255) |
|
STATE_ | VARCHAR2(255) |
|
SUSPHISTSTATE_ | VARCHAR2(255) |
|
PRIORITY_ | NUMBER(10) |
|
HISACTINST_ | NUMBER(19) |
|
PARENT_ | NUMBER(19) |
|
INSTANCE_ | NUMBER(19) |
|
SUPEREXEC_ | NUMBER(19) |
|
SUBPROCINST_ | NUMBER(19) |
|
PARENT_IDX_ | NUMBER(10) |
|
JBPM4_TASK 任务表
DBID_ | NUMBER(19) | 主键 |
CLASS_ | CHAR(1) |
|
DBVERSION_ | NUMBER(10) |
|
NAME_ | VARCHAR2(255) |
|
DESCR_ | CLOB |
|
STATE_ | VARCHAR2(255) |
|
SUSPHISTSTATE_ | VARCHAR2(255) |
|
ASSIGNEE_ | VARCHAR2(255) |
|
FORM_ | VARCHAR2(255) |
|
PRIORITY_ | NUMBER(10) |
|
CREATE_ | DATE |
|
DUEDATE_ | DATE |
|
PROGRESS_ | NUMBER(10) |
|
SIGNALLING_ | NUMBER(1) |
|
EXECUTION_ID_ | VARCHAR2(255) |
|
ACTIVITY_NAME_ | VARCHAR2(255) |
|
HASVARS_ | NUMBER(1) |
|
SUPERTASK_ | NUMBER(19) |
|
EXECUTION_ | NUMBER(19) |
|
PROCINST_ | NUMBER(19) |
|
SWIMLANE_ | NUMBER(19) |
|
TASKDEFNAME_ | VARCHAR2(255) |
|
JBPM4_PARTICIPATION 参与者表
DBID_ | NUMBER(19) |
|
DBVERSION_ | NUMBER(10) |
|
GROUPID_ | VARCHAR2(255) |
|
USERID_ | VARCHAR2(255) |
|
TYPE_ | VARCHAR2(255) |
|
TASK_ | NUMBER(19) |
|
SWIMLANE_ | NUMBER(19) |
|
JBPM4_SWIMLANE 泳道表
DBID_ | NUMBER(19) |
|
DBVERSION_ | NUMBER(10) |
|
NAME_ | VARCHAR2(255) |
|
ASSIGNEE_ | VARCHAR2(255) |
|
EXECUTION_ | NUMBER(19) |
|
JBPM4_JOB 异步活动或定时器表
DBID_ | NUMBER(19) |
|
CLASS_ | VARCHAR2(255) |
|
DBVERSION_ | NUMBER(10) |
|
DUEDATE_ | DATE |
|
STATE_ | VARCHAR2(255) |
|
ISEXCLUSIVE_ | NUMBER(1) |
|
LOCKOWNER_ | VARCHAR2(255) |
|
LOCKEXPTIME_ | DATE |
|
EXCEPTION_ | CLOB |
|
RETRIES_ | NUMBER(10) |
|
PROCESSINSTANCE_ | NUMBER(19) |
|
EXECUTION_ | NUMBER(19) |
|
CFG_ | NUMBER(19) |
|
SIGNAL_ | VARCHAR2(255) |
|
EVENT_ | VARCHAR2(255) |
|
REPEAT_ | VARCHAR2(255) |
|
JBPM4_VARIABLE 变量表
DBID_ | NUMBER(19) |
|
CLASS_ | VARCHAR2(255) |
|
DBVERSION_ | NUMBER(10) |
|
KEY_ | VARCHAR2(255) |
|
CONVERTER_ | VARCHAR2(255) |
|
HIST_ | NUMBER(1) |
|
EXECUTION_ | NUMBER(19) |
|
TASK_ | NUMBER(19) |
|
LOB_ | NUMBER(19) |
|
DATE_VALUE_ | DATE |
|
DOUBLE_VALUE_ | FLOAT |
|
CLASSNAME_ | VARCHAR2(255) |
|
LONG_VALUE_ | NUMBER(19) |
|
STRING_VALUE_ | VARCHAR2(255) |
|
TEXT_VALUE_ | CLOB |
|
EXESYS_ | NUMBER(19) |
|