了解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) |
|