我这里以mysql5为例 环境jdk1.6 Eclipse(ee版)jbpm4.4
jbpm4 有18张表,简单介绍如下:
JBPM4_DEPLOYMENT 流程定义表
JBPM4_DEPLOYPROP 流程定义属性表
JBPM4_EXECUTION 流程实例表
JBPM4_HIST_ACTINST 流程活动(节点)实例表
JBPM4_HIST_DETAIL 流程历史详细表
JBPM4_HIST_PROCINST 流程实例历史表
JBPM4_HIST_TASK 流程任务实例历史表
JBPM4_HIST_VAR 流程变量(上下文)历史表
JBPM4_ID_GROUP 组表
JBPM4_ID_MEMBERSHIP 用户角色表
JBPM4_ID_USER 用户表
JBPM4_JOB 定时表
JBPM4_LOB 存储表
JBPM4_PARTICIPATION 参与者表
JBPM4_SWIMLANE 泳道表
JBPM4_TASK 任务表
JBPM4_VARIABLE 上下文表
红 色的表为经常使用的表.这里不使用JBPM自己的权限角色定义.
发布一个流程deploy后
jbpm4_deployment新增一条记录
jbpm4_deployprop新增三条记录
jbpm4_lob 新增一条记录
开始一个流程startProcessInstanceByKey后
jbpm4_execution新增一条记录
jbpm4_hist_actinst 新增一条记录
jbpm4_hist_procinst新增一条记录
jbpm4_hist_task新增一条记录
jbpm4_task 新增一条记录
流程定义相关的布署信息就存储在(1) JBPM4_DEPLOYMENT、(2) JBPM4_DEPLOYPROP 及(3)JBPM4_LOB 中。上传一个包含png和jpdl.xml的zip包后,JBPM4_DEPLOYMENT多一条记录JBPM4_DEPLOYPROP 多三条, JBPM4_LOB多两条。
(4)J B PM4_HIST_PROCINST 与(5) JBPM4_HIST_ACTINST 分别存放的是Process Instance、Activity Instance的历史记录。
(6)JBPM4_EXECUTION 主要是存放JBPM4的执行信息,Execution机制代 替了JBPM3的Token机制(详细参阅JBPM4的PVM机制,过段时间我也会进一步分析)。
(7)JBPM4_TASK 存放需要人来完成的Activities,需要人来参与完成的Activity 被称为Task。
(8)JBPM4_PARTICIPATION 存放 Participation的信息,Participation的种类有Candidate、Client、Owner、 Replaced Assignee和Viewer。而具体的Participation既可以是单一用户,也可以是用户组。
(9)JBPM4_SWIMLANE。 Swim Lane是一种Runtime Process Role。通过Swim Lane,多个Task可以一次分配到同一Actor身上。
(10) JBPM4 _VARIABLE 存 的是进行时的临时变量。
(11) JBPM4_HIST_DETAIL 保存 Variable的变更记录。
(12)JBPM4_HIST_VAR 保存历史的变量 。
(13) JBPM4_HIST_TASK Task的历史信 息。
(14)JBPM4_ID_GROUP (15)JBPM_ID_MEMBERSHIP (16)JBPM4_ID_USER 这三张表很常见了,基 本的权限控制,关于用户认证方面建议还是自己开发一套,JBPM4的功能太简单了,使用中有很多需要难以满足。
(17) JBPM4_JOB 存放的是Timer 的定义。
(18) JBPM4_PROPERTY JBPM引擎参数表。
以上来自互联网
连接数据库,首先在mysql中建立一个数据库(jbpmdb)
然后打开jbpm安装目录下..\install\src\db\create\jbpm.mysql.create.sql
文件内容如下 :
create table JBPM4_DEPLOYENT(
DBID_ bigint not null,
NAME_ longtext,
TIMESTAMP_ bigint,
STATE_ varchar(255),
primary key (DBID_)
) type=InnoDB;
create table JBPM4_DEPLOYPROP (
DBID_ bigint not null,
DEPLOYMENT_ bigint,
OBJNAME_ varchar(255),
KEY_ varchar(255),
STRINGVAL_ varchar(255),
LONGVAL_ bigint,
primary key (DBID_)
) type=InnoDB;
create table JBPM4_EXECUTION (
DBID_ bigint not null,
CLASS_ varchar(255) not null,
DBVERSION_ integer not null,
ACTIVITYNAME_ varchar(255),
PROCDEFID_ varchar(255),
HASVARS_ bit,
NAME_ varchar(255),
KEY_ varchar(255),
ID_ varchar(255) unique,
STATE_ varchar(255),
SUSPHISTSTATE_ varchar(255),
PRIORITY_ integer,
HISACTINST_ bigint,
PARENT_ bigint,
INSTANCE_ bigint,
SUPEREXEC_ bigint,
SUBPROCINST_ bigint,
PARENT_IDX_ integer,
primary key (DBID_)
) type=InnoDB;
后面内容略。。。。。
将如上内容在sql编译器中执行,生成18张表。
修改项目文件下的jbpm.hibernate.cfg.xml
org.hibernate.dialect.MySQLInnoDBDialect
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/jbpmdb?characterEncoding=UTF-8
root
wawa
create-drop
true
就是将dialect,driver_class,url,username,password 设置成自己的数据库相关信息。
这样就完成了。测试一下,deploy一个新的流程,在原先建立的数据库中的jbpm4_deployprop表里,可以查看到相应的数据。