工作流 jbpm(图文并茂)

简介: 工作流 jbpm(图文并茂)

1 工作流概述


工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现” 简单的说,就是将工作的流程通过程序管理起来,以表单审核和任务办理为主体,实现办公自动化


工作流框架,将业务流程管理起来, 所有业务流程操作,围绕工作流框架进行, 基于表单提交和任务办理, 实现工作业务流程 自动流转。 工作流框架有:jBPM、Activiti、OSWorkflow、ActiveBPEL、YAWL等


2 jBPM概述


jBPM: Java Business Process Management(业务流程管理)


jBPM,全称是Java Business Process Management(业务流程管理) 是一款开源的工作流产品,功能强大、小巧灵活 jBPM在2004年10月18日,发布了2.0版本,并在同一天加入了JBoss,成为了JBoss企业中间件平台的一个组成部分,它的名称也改成JBoss jBPM jBPM采用XML结构的流程描述语言JPDL来描述工作流程 jBPM使用Hibernate作为持久层工具,可以在各大主流数据库中使用


jBPM是一种基于Java语言的开源工作流/业务流程管理框架(Framework),它主要包括工作流引擎(WorkflowEngine)和基于Eclipse平台的图形化流程设计器

(GraphProcessDesigner)。jBPM凭借其良好的开放性和扩展性被广泛应用于所有需要“流程”的企业应用系统中,这包括金融、电信、制造业、政府等诸多行业领域。


官网:http://www.jboss.org/jbpm/


版本:该文档采用JBPM4.4


3 jBPM开发环境搭建及其配置


3.1 准备工作


下载jBPM4.4开发包


下载地址: https://sourceforge.net/projects/jbpm/files/jBPM4/jbpm-4.4/


jBPM4.4开发包解压后的目录结构如下图:



3.2 搭建jBPM开发环境


如下操作



继续:



点OK,如下图—全选:



然后next–>next–>accept–>finsh。然后会进入安装,安装完成后重启。


然后在window–>Show View–>other可以找到如下图所示,证明安装成功。



3.3 加入jar包


jbpm解压文件 下的lib文件下的包



4 系统数据库表介绍


4.1 建表


该系统自带18张表,用于支撑该系统的逻辑与流程业务;


建表语句如下:


create database jbpmdb;
use jbpmdb;
DROP TABLE IF EXISTS `jbpm4_deployment`;
CREATE TABLE IF NOT EXISTS `jbpm4_deployment` (
 `DBID_` bigint(20) NOT NULL,
 `NAME_` longtext,
 `TIMESTAMP_` bigint(20) DEFAULT NULL,
 `STATE_` varchar(255) DEFAULT NULL,
 PRIMARY KEY (`DBID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `jbpm4_deployprop`;
CREATE TABLE IF NOT EXISTS `jbpm4_deployprop` (
 `DBID_` bigint(20) NOT NULL,
 `DEPLOYMENT_` bigint(20) DEFAULT NULL,
 `OBJNAME_` varchar(255) DEFAULT NULL,
 `KEY_` varchar(255) DEFAULT NULL,
 `STRINGVAL_` varchar(255) DEFAULT NULL,
 `LONGVAL_` bigint(20) DEFAULT NULL,
 PRIMARY KEY (`DBID_`),
 KEY `IDX_DEPLPROP_DEPL` (`DEPLOYMENT_`),
 KEY `FK_DEPLPROP_DEPL` (`DEPLOYMENT_`),
 CONSTRAINT `FK_DEPLPROP_DEPL` FOREIGN KEY (`DEPLOYMENT_`) REFERENCES `jbpm4_deployment` (`DBID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `jbpm4_execution`;
CREATE TABLE IF NOT EXISTS `jbpm4_execution` (
 `DBID_` bigint(20) NOT NULL,
 `CLASS_` varchar(255) NOT NULL,
 `DBVERSION_` int(11) NOT NULL,
 `ACTIVITYNAME_` varchar(255) DEFAULT NULL,
 `PROCDEFID_` varchar(255) DEFAULT NULL,
 `HASVARS_` bit(1) DEFAULT NULL,
 `NAME_` varchar(255) DEFAULT NULL,
 `KEY_` varchar(255) DEFAULT NULL,
 `ID_` varchar(255) DEFAULT NULL,
 `STATE_` varchar(255) DEFAULT NULL,
 `SUSPHISTSTATE_` varchar(255) DEFAULT NULL,
 `PRIORITY_` int(11) DEFAULT NULL,
 `HISACTINST_` bigint(20) DEFAULT NULL,
 `PARENT_` bigint(20) DEFAULT NULL,
 `INSTANCE_` bigint(20) DEFAULT NULL,
 `SUPEREXEC_` bigint(20) DEFAULT NULL,
 `SUBPROCINST_` bigint(20) DEFAULT NULL,
 `PARENT_IDX_` int(11) DEFAULT NULL,
 PRIMARY KEY (`DBID_`),
 UNIQUE KEY `ID_` (`ID_`),
 KEY `IDX_EXEC_SUPEREXEC` (`SUPEREXEC_`),
 KEY `IDX_EXEC_INSTANCE` (`INSTANCE_`),
 KEY `IDX_EXEC_SUBPI` (`SUBPROCINST_`),
 KEY `IDX_EXEC_PARENT` (`PARENT_`),
 KEY `FK_EXEC_PARENT` (`PARENT_`),
 KEY `FK_EXEC_SUBPI` (`SUBPROCINST_`),
 KEY `FK_EXEC_INSTANCE` (`INSTANCE_`),
 KEY `FK_EXEC_SUPEREXEC` (`SUPEREXEC_`),
 CONSTRAINT `FK_EXEC_INSTANCE` FOREIGN KEY (`INSTANCE_`) REFERENCES `jbpm4_execution` (`DBID_`),
 CONSTRAINT `FK_EXEC_PARENT` FOREIGN KEY (`PARENT_`) REFERENCES `jbpm4_execution` (`DBID_`),
 CONSTRAINT `FK_EXEC_SUBPI` FOREIGN KEY (`SUBPROCINST_`) REFERENCES `jbpm4_execution` (`DBID_`),
 CONSTRAINT `FK_EXEC_SUPEREXEC` FOREIGN KEY (`SUPEREXEC_`) REFERENCES `jbpm4_execution` (`DBID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `jbpm4_hist_actinst`;
CREATE TABLE IF NOT EXISTS `jbpm4_hist_actinst` (
 `DBID_` bigint(20) NOT NULL,
 `CLASS_` varchar(255) NOT NULL,
 `DBVERSION_` int(11) NOT NULL,
 `HPROCI_` bigint(20) DEFAULT NULL,
 `engine_` varchar(255) DEFAULT NULL,
 `EXECUTION_` varchar(255) DEFAULT NULL,
 `ACTIVITY_NAME_` varchar(255) DEFAULT NULL,
 `START_` datetime DEFAULT NULL,
 `END_` datetime DEFAULT NULL,
 `DURATION_` bigint(20) DEFAULT NULL,
 `TRANSITION_` varchar(255) DEFAULT NULL,
 `NEXTIDX_` int(11) DEFAULT NULL,
 `HTASK_` bigint(20) DEFAULT NULL,
 `TYPE_` varchar(255) DEFAULT NULL,
 PRIMARY KEY (`DBID_`),
 KEY `IDX_HACTI_HPROCI` (`HPROCI_`),
 KEY `IDX_HTI_HTASK` (`HTASK_`),
 KEY `FK_HACTI_HPROCI` (`HPROCI_`),
 KEY `FK_HTI_HTASK` (`HTASK_`),
 CONSTRAINT `FK_HACTI_HPROCI` FOREIGN KEY (`HPROCI_`) REFERENCES `jbpm4_hist_procinst` (`DBID_`),
 CONSTRAINT `FK_HTI_HTASK` FOREIGN KEY (`HTASK_`) REFERENCES `jbpm4_hist_task` (`DBID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `jbpm4_hist_detail`;
CREATE TABLE IF NOT EXISTS `jbpm4_hist_detail` (
 `DBID_` bigint(20) NOT NULL,
 `CLASS_` varchar(255) NOT NULL,
 `DBVERSION_` int(11) NOT NULL,
 `USERID_` varchar(255) DEFAULT NULL,
 `TIME_` datetime DEFAULT NULL,
 `HPROCI_` bigint(20) DEFAULT NULL,
 `HPROCIIDX_` int(11) DEFAULT NULL,
 `HACTI_` bigint(20) DEFAULT NULL,
 `HACTIIDX_` int(11) DEFAULT NULL,
 `HTASK_` bigint(20) DEFAULT NULL,
 `HTASKIDX_` int(11) DEFAULT NULL,
 `HVAR_` bigint(20) DEFAULT NULL,
 `HVARIDX_` int(11) DEFAULT NULL,
 `MESSAGE_` longtext,
 `OLD_STR_` varchar(255) DEFAULT NULL,
 `NEW_STR_` varchar(255) DEFAULT NULL,
 `OLD_INT_` int(11) DEFAULT NULL,
 `NEW_INT_` int(11) DEFAULT NULL,
 `OLD_TIME_` datetime DEFAULT NULL,
 `NEW_TIME_` datetime DEFAULT NULL,
 `PARENT_` bigint(20) DEFAULT NULL,
 `PARENT_IDX_` int(11) DEFAULT NULL,
 PRIMARY KEY (`DBID_`),
 KEY `IDX_HDET_HACTI` (`HACTI_`),
 KEY `IDX_HDET_HPROCI` (`HPROCI_`),
 KEY `IDX_HDET_HVAR` (`HVAR_`),
 KEY `IDX_HDET_HTASK` (`HTASK_`),
 KEY `FK_HDETAIL_HPROCI` (`HPROCI_`),
 KEY `FK_HDETAIL_HACTI` (`HACTI_`),
 KEY `FK_HDETAIL_HTASK` (`HTASK_`),
 KEY `FK_HDETAIL_HVAR` (`HVAR_`),
 CONSTRAINT `FK_HDETAIL_HACTI` FOREIGN KEY (`HACTI_`) REFERENCES `jbpm4_hist_actinst` (`DBID_`),
 CONSTRAINT `FK_HDETAIL_HPROCI` FOREIGN KEY (`HPROCI_`) REFERENCES `jbpm4_hist_procinst` (`DBID_`),
 CONSTRAINT `FK_HDETAIL_HTASK` FOREIGN KEY (`HTASK_`) REFERENCES `jbpm4_hist_task` (`DBID_`),
 CONSTRAINT `FK_HDETAIL_HVAR` FOREIGN KEY (`HVAR_`) REFERENCES `jbpm4_hist_var` (`DBID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `jbpm4_hist_procinst`;
CREATE TABLE IF NOT EXISTS `jbpm4_hist_procinst` (
 `DBID_` bigint(20) NOT NULL,
 `DBVERSION_` int(11) NOT NULL,
 `ID_` varchar(255) DEFAULT NULL,
 `PROCDEFID_` varchar(255) DEFAULT NULL,
 `KEY_` varchar(255) DEFAULT NULL,
 `START_` datetime DEFAULT NULL,
 `END_` datetime DEFAULT NULL,
 `DURATION_` bigint(20) DEFAULT NULL,
 `STATE_` varchar(255) DEFAULT NULL,
 `ENDACTIVITY_` varchar(255) DEFAULT NULL,
 `NEXTIDX_` int(11) DEFAULT NULL,
 PRIMARY KEY (`DBID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `jbpm4_hist_task`;
CREATE TABLE IF NOT EXISTS `jbpm4_hist_task` (
 `DBID_` bigint(20) NOT NULL,
 `DBVERSION_` int(11) NOT NULL,
 `EXECUTION_` varchar(255) DEFAULT NULL,
 `OUTCOME_` varchar(255) DEFAULT NULL,
 `ASSIGNEE_` varchar(255) DEFAULT NULL,
 `PRIORITY_` int(11) DEFAULT NULL,
 `STATE_` varchar(255) DEFAULT NULL,
 `CREATE_` datetime DEFAULT NULL,
 `END_` datetime DEFAULT NULL,
 `DURATION_` bigint(20) DEFAULT NULL,
 `NEXTIDX_` int(11) DEFAULT NULL,
 `SUPERTASK_` bigint(20) DEFAULT NULL,
 PRIMARY KEY (`DBID_`),
 KEY `IDX_HSUPERT_SUB` (`SUPERTASK_`),
 KEY `FK_HSUPERT_SUB` (`SUPERTASK_`),
 CONSTRAINT `FK_HSUPERT_SUB` FOREIGN KEY (`SUPERTASK_`) REFERENCES `jbpm4_hist_task` (`DBID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `jbpm4_hist_var`;
CREATE TABLE IF NOT EXISTS `jbpm4_hist_var` (
 `DBID_` bigint(20) NOT NULL,
 `DBVERSION_` int(11) NOT NULL,
 `PROCINSTID_` varchar(255) DEFAULT NULL,
 `EXECUTIONID_` varchar(255) DEFAULT NULL,
 `VARNAME_` varchar(255) DEFAULT NULL,
 `VALUE_` varchar(255) DEFAULT NULL,
 `HPROCI_` bigint(20) DEFAULT NULL,
 `HTASK_` bigint(20) DEFAULT NULL,
 PRIMARY KEY (`DBID_`),
 KEY `IDX_HVAR_HPROCI` (`HPROCI_`),
 KEY `IDX_HVAR_HTASK` (`HTASK_`),
 KEY `FK_HVAR_HPROCI` (`HPROCI_`),
 KEY `FK_HVAR_HTASK` (`HTASK_`),
 CONSTRAINT `FK_HVAR_HPROCI` FOREIGN KEY (`HPROCI_`) REFERENCES `jbpm4_hist_procinst` (`DBID_`),
 CONSTRAINT `FK_HVAR_HTASK` FOREIGN KEY (`HTASK_`) REFERENCES `jbpm4_hist_task` (`DBID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `jbpm4_id_group`;
CREATE TABLE IF NOT EXISTS `jbpm4_id_group` (
 `DBID_` bigint(20) NOT NULL,
 `DBVERSION_` int(11) NOT NULL,
 `ID_` varchar(255) DEFAULT NULL,
 `NAME_` varchar(255) DEFAULT NULL,
 `engine_` varchar(255) DEFAULT NULL,
 `PARENT_` bigint(20) DEFAULT NULL,
 `TYPE_` varchar(255) DEFAULT NULL,
 PRIMARY KEY (`DBID_`),
 KEY `IDX_GROUP_PARENT` (`PARENT_`),
 KEY `FK_GROUP_PARENT` (`PARENT_`),
 CONSTRAINT `FK_GROUP_PARENT` FOREIGN KEY (`PARENT_`) REFERENCES `jbpm4_id_group` (`DBID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `jbpm4_id_membership`;
CREATE TABLE IF NOT EXISTS `jbpm4_id_membership` (
 `DBID_` bigint(20) NOT NULL,
 `DBVERSION_` int(11) NOT NULL,
 `USER_` bigint(20) DEFAULT NULL,
 `GROUP_` bigint(20) DEFAULT NULL,
 `NAME_` varchar(255) DEFAULT NULL,
 PRIMARY KEY (`DBID_`),
 KEY `IDX_MEM_USER` (`USER_`),
 KEY `IDX_MEM_GROUP` (`GROUP_`),
 KEY `FK_MEM_GROUP` (`GROUP_`),
 KEY `FK_MEM_USER` (`USER_`),
 CONSTRAINT `FK_MEM_GROUP` FOREIGN KEY (`GROUP_`) REFERENCES `jbpm4_id_group` (`DBID_`),
 CONSTRAINT `FK_MEM_USER` FOREIGN KEY (`USER_`) REFERENCES `jbpm4_id_user` (`DBID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `jbpm4_id_user`;
CREATE TABLE IF NOT EXISTS `jbpm4_id_user` (
 `DBID_` bigint(20) NOT NULL,
 `DBVERSION_` int(11) NOT NULL,
 `ID_` varchar(255) DEFAULT NULL,
 `PASSWORD_` varchar(255) DEFAULT NULL,
 `GIVENNAME_` varchar(255) DEFAULT NULL,
 `FAMILYNAME_` varchar(255) DEFAULT NULL,
 `BUSINESSEMAIL_` varchar(255) DEFAULT NULL,
 PRIMARY KEY (`DBID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `jbpm4_job`;
CREATE TABLE IF NOT EXISTS `jbpm4_job` (
 `DBID_` bigint(20) NOT NULL,
 `CLASS_` varchar(255) NOT NULL,
 `DBVERSION_` int(11) NOT NULL,
 `DUEDATE_` datetime DEFAULT NULL,
 `STATE_` varchar(255) DEFAULT NULL,
 `ISEXCLUSIVE_` bit(1) DEFAULT NULL,
 `LOCKOWNER_` varchar(255) DEFAULT NULL,
 `LOCKEXPTIME_` datetime DEFAULT NULL,
 `EXCEPTION_` longtext,
 `RETRIES_` int(11) DEFAULT NULL,
 `PROCESSINSTANCE_` bigint(20) DEFAULT NULL,
 `EXECUTION_` bigint(20) DEFAULT NULL,
 `CFG_` bigint(20) DEFAULT NULL,
 `SIGNAL_` varchar(255) DEFAULT NULL,
 `EVENT_` varchar(255) DEFAULT NULL,
 `REPEAT_` varchar(255) DEFAULT NULL,
 PRIMARY KEY (`DBID_`),
 KEY `IDX_JOBRETRIES` (`RETRIES_`),
 KEY `IDX_JOB_CFG` (`CFG_`),
 KEY `IDX_JOB_PRINST` (`PROCESSINSTANCE_`),
 KEY `IDX_JOB_EXE` (`EXECUTION_`),
 KEY `IDX_JOBLOCKEXP` (`LOCKEXPTIME_`),
 KEY `IDX_JOBDUEDATE` (`DUEDATE_`),
 KEY `FK_JOB_CFG` (`CFG_`),
 CONSTRAINT `FK_JOB_CFG` FOREIGN KEY (`CFG_`) REFERENCES `jbpm4_lob` (`DBID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `jbpm4_lob`;
CREATE TABLE IF NOT EXISTS `jbpm4_lob` (
 `DBID_` bigint(20) NOT NULL,
 `DBVERSION_` int(11) NOT NULL,
 `BLOB_VALUE_` longblob,
 `DEPLOYMENT_` bigint(20) DEFAULT NULL,
 `NAME_` longtext,
 PRIMARY KEY (`DBID_`),
 KEY `IDX_LOB_DEPLOYMENT` (`DEPLOYMENT_`),
 KEY `FK_LOB_DEPLOYMENT` (`DEPLOYMENT_`),
 CONSTRAINT `FK_LOB_DEPLOYMENT` FOREIGN KEY (`DEPLOYMENT_`) REFERENCES `jbpm4_deployment` (`DBID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `jbpm4_participation`;
CREATE TABLE IF NOT EXISTS `jbpm4_participation` (
 `DBID_` bigint(20) NOT NULL,
 `DBVERSION_` int(11) NOT NULL,
 `GROUPID_` varchar(255) DEFAULT NULL,
 `USERID_` varchar(255) DEFAULT NULL,
 `engine_` varchar(255) DEFAULT NULL,
 `TASK_` bigint(20) DEFAULT NULL,
 `SWIMLANE_` bigint(20) DEFAULT NULL,
 `TYPE_` varchar(255) DEFAULT NULL,
 PRIMARY KEY (`DBID_`),
 KEY `IDX_PART_TASK` (`TASK_`),
 KEY `FK_PART_SWIMLANE` (`SWIMLANE_`),
 KEY `FK_PART_TASK` (`TASK_`),
 CONSTRAINT `FK_PART_SWIMLANE` FOREIGN KEY (`SWIMLANE_`) REFERENCES `jbpm4_swimlane` (`DBID_`),
 CONSTRAINT `FK_PART_TASK` FOREIGN KEY (`TASK_`) REFERENCES `jbpm4_task` (`DBID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `jbpm4_property`;
CREATE TABLE IF NOT EXISTS `jbpm4_property` (
 `KEY_` varchar(255) NOT NULL,
 `VERSION_` int(11) NOT NULL,
 `VALUE_` varchar(255) DEFAULT NULL,
 PRIMARY KEY (`KEY_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `jbpm4_swimlane`;
CREATE TABLE IF NOT EXISTS `jbpm4_swimlane` (
 `DBID_` bigint(20) NOT NULL,
 `DBVERSION_` int(11) NOT NULL,
 `NAME_` varchar(255) DEFAULT NULL,
 `ASSIGNEE_` varchar(255) DEFAULT NULL,
 `EXECUTION_` bigint(20) DEFAULT NULL,
 PRIMARY KEY (`DBID_`),
 KEY `IDX_SWIMLANE_EXEC` (`EXECUTION_`),
 KEY `FK_SWIMLANE_EXEC` (`EXECUTION_`),
 CONSTRAINT `FK_SWIMLANE_EXEC` FOREIGN KEY (`EXECUTION_`) REFERENCES `jbpm4_execution` (`DBID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `jbpm4_task`;
CREATE TABLE IF NOT EXISTS `jbpm4_task` (
 `DBID_` bigint(20) NOT NULL,
 `CLASS_` char(1) NOT NULL,
 `DBVERSION_` int(11) NOT NULL,
 `NAME_` varchar(255) DEFAULT NULL,
 `DESCR_` longtext,
 `STATE_` varchar(255) DEFAULT NULL,
 `SUSPHISTSTATE_` varchar(255) DEFAULT NULL,
 `ASSIGNEE_` varchar(255) DEFAULT NULL,
 `FORM_` varchar(255) DEFAULT NULL,
 `PRIORITY_` int(11) DEFAULT NULL,
 `CREATE_` datetime DEFAULT NULL,
 `DUEDATE_` datetime DEFAULT NULL,
 `PROGRESS_` int(11) DEFAULT NULL,
 `SIGNALLING_` bit(1) DEFAULT NULL,
 `EXECUTION_ID_` varchar(255) DEFAULT NULL,
 `ACTIVITY_NAME_` varchar(255) DEFAULT NULL,
 `HASVARS_` bit(1) DEFAULT NULL,
 `SUPERTASK_` bigint(20) DEFAULT NULL,
 `EXECUTION_` bigint(20) DEFAULT NULL,
 `PROCINST_` bigint(20) DEFAULT NULL,
 `SWIMLANE_` bigint(20) DEFAULT NULL,
 `TASKDEFNAME_` varchar(255) DEFAULT NULL,
 PRIMARY KEY (`DBID_`),
 KEY `IDX_TASK_SUPERTASK` (`SUPERTASK_`),
 KEY `FK_TASK_SWIML` (`SWIMLANE_`),
 KEY `FK_TASK_SUPERTASK` (`SUPERTASK_`),
 CONSTRAINT `FK_TASK_SUPERTASK` FOREIGN KEY (`SUPERTASK_`) REFERENCES `jbpm4_task` (`DBID_`),
 CONSTRAINT `FK_TASK_SWIML` FOREIGN KEY (`SWIMLANE_`) REFERENCES `jbpm4_swimlane` (`DBID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `jbpm4_variable`;
CREATE TABLE IF NOT EXISTS `jbpm4_variable` (
 `DBID_` bigint(20) NOT NULL,
 `CLASS_` varchar(255) NOT NULL,
 `DBVERSION_` int(11) NOT NULL,
 `KEY_` varchar(255) DEFAULT NULL,
 `CONVERTER_` varchar(255) DEFAULT NULL,
 `HIST_` bit(1) DEFAULT NULL,
 `EXECUTION_` bigint(20) DEFAULT NULL,
 `TASK_` bigint(20) DEFAULT NULL,
 `LOB_` bigint(20) DEFAULT NULL,
 `DATE_VALUE_` datetime DEFAULT NULL,
 `DOUBLE_VALUE_` double DEFAULT NULL,
 `CLASSNAME_` varchar(255) DEFAULT NULL,
 `LONG_VALUE_` bigint(20) DEFAULT NULL,
 `STRING_VALUE_` varchar(255) DEFAULT NULL,
 `TEXT_VALUE_` longtext,
 `EXESYS_` bigint(20) DEFAULT NULL,
 PRIMARY KEY (`DBID_`),
 KEY `IDX_VAR_EXESYS` (`EXESYS_`),
 KEY `IDX_VAR_TASK` (`TASK_`),
 KEY `IDX_VAR_EXECUTION` (`EXECUTION_`),
 KEY `IDX_VAR_LOB` (`LOB_`),
 KEY `FK_VAR_LOB` (`LOB_`),
 KEY `FK_VAR_EXECUTION` (`EXECUTION_`),
 KEY `FK_VAR_EXESYS` (`EXESYS_`),
 KEY `FK_VAR_TASK` (`TASK_`),
 CONSTRAINT `FK_VAR_EXECUTION` FOREIGN KEY (`EXECUTION_`) REFERENCES `jbpm4_execution` (`DBID_`),
 CONSTRAINT `FK_VAR_EXESYS` FOREIGN KEY (`EXESYS_`) REFERENCES `jbpm4_execution` (`DBID_`),
 CONSTRAINT `FK_VAR_LOB` FOREIGN KEY (`LOB_`) REFERENCES `jbpm4_lob` (`DBID_`),
 CONSTRAINT `FK_VAR_TASK` FOREIGN KEY (`TASK_`) REFERENCES `jbpm4_task` (`DBID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


4.2 数据库逻辑关系


18张表简介:



4.2.1 资源库与运行时的表



4.2.2 历史数据表



4.3 表结构


表JBPM4_DEPLOYMENT


表名 流程定义表
列名 数据类型(精度范围) 空/非空 约束条件 中文名
DBID_ NUMBER(19) N PK 流程模版标识
NAME_ CLOB Y 流程模版名称
TIMESTAMP_ NUMBER(19) Y 时间戳
STATE_ VARCHAR2(255 CHAR) Y 可用状态
补充说明 一条 jbpm4_deployment 记录需要对应4 条jbpm4_deployprop 记录


表JBPM4_DEPLOYPROP


表名 流程定义属性表
列名 数据类型(精度范围) 空/非空 约束条件 中文名
DBID_ NUMBER(19) N PK 主键
DEPLOYMENT_ NUMBER(19) Y FK(JBPM4_DEPLOYMENT, DBID_) 流程ID
OBJNAME_ VARCHAR2(255 CHAR) Y 流程名称
KEY_ VARCHAR2(255 CHAR) Y 类型
STRINGVAL_ VARCHAR2(255 CHAR) Y 类型是字符串时的值
LONGVAL_ NUMBER(19) Y 类型是数值时的值

补充说明

① 一条jbpm4_deployment 记录需要对应4 条jbpm4_deployprop 记录,存储在KEY_里面:Langid 标识解析流程定义使用的 jpdl 的版本Pdid 流程定义的 id , 唯一标识一个流程Pdkey 流程的 key ,标识同一类流程Pdversion 标识流程的版本






表JBPM4_EXECUTION


表名 流程实例表
列名 数据类型(精度范围) 空/非空 约束条件 中文名
DBID_ NUMBER(19) N PK 流程实例ID
CLASS_ VARCHAR2(255 CHAR) N 类型
DBVERSION_ NUMBER(10) N 步骤版本
ACTIVITYNAME_ VARCHAR2(255 CHAR) Y 节点名称
PROCDEFID_ VARCHAR2(255 CHAR) Y 流程定义ID
HASVARS_ NUMBER(1) Y 是否有变量值
NAME_ VARCHAR2(255 CHAR) Y 名称
KEY_ VARCHAR2(255 CHAR) Y
ID_ VARCHAR2(255 CHAR) Y UK 令牌ID
STATE_ VARCHAR2(255 CHAR) Y 令牌状态
SUSPHISTSTATE_ VARCHAR2(255 CHAR) Y 保存暂停之前状态
PRIORITY_ NUMBER(10) Y 优先级
HISACTINST_ NUMBER(19) Y 历史活动实例ID
PARENT_ NUMBER(19) Y FK(JBPM4_EXECUTION, DBID_) 父实例
INSTANCE_ NUMBER(19) Y FK(JBPM4_EXECUTION, DBID_) 流程实例
SUPEREXEC_ NUMBER(19) Y FK(JBPM4_EXECUTION, DBID_) 父令牌
SUBPROCINST_ NUMBER(19) Y FK(JBPM4_EXECUTION, DBID_) 子流程实例
PARENT_IDX_ NUMBER(10) Y 父实例序号
补充说明 驱动流程运行,记录流程实例运行必须的信息


表JBPM4_HIST_ACTINST


表名 流程活动(节点)实例表
列名 数据类型(精度范围) 空/非空 约束条件 中文名
DBID_ NUMBER(19) N PK 标识
CLASS_ VARCHAR2(255 CHAR) N activity类型
DBVERSION_ NUMBER(10) N 版本
HPROCI_ NUMBER( 19) Y FK(JBPM4_HIST_PROCINST, DBID_) 历史流程实例
TYPE_ VARCHAR2(255 CHAR) Y 活动实例类型
EXECUTION_ VARCHAR2(255 CHAR) Y 令牌
ACTIVITY_NAME_ VARCHAR2(255 CHAR) Y 活动实例名称
START_ TIMESTAMP(6) Y 开始名称
END_ TIMESTAMP(6) Y 结束时间
DURATION_ NUMBER(19) Y 节点停留时间
TRANSITION_ VARCHAR2(255 CHAR) Y 迁移路径
NEXTIDX_ NUMBER(10) Y
HTASK_ NUMBER(19) Y FK(JBPM4_HIST_TASK, DBID_) 对应的定义任务
补充说明 流程运行中执行过的节点的记录,包括Task和State节点


JBPM4_HIST_DETAIL


表名 流程历史详细表
列名 数据类型(精度范围) 空/非空 约束条件 中文名
DBID_ NUMBER(19) N PK 流程模版标识
CLASS_ VARCHAR2(255 CHAR) N
DBVERSION_ NUMBER(10) N 版本
USERID_ VARCHAR2(255 CHAR) Y 用户ID
TIME_ TIMESTAMP(6) Y 时间
HPROCI_ NUMBER(19) Y FK(JBPM4_HIST_PROCINST, DBID_) 对应的历史流程实例
HPROCIIDX_ NUMBER(10) Y
HACTI_ NUMBER(19) Y FK(JBPM4_HIST_ACTINST, DBID_) 对应的历史活动实例ID
HACTIIDX_ NUMBER(10) Y
HTASK_ NUMBER(19) Y FK(JBPM4_HIST_TASK, DBID_) 对应的任务
HTASKIDX_ NUMBER(10) Y
HVAR_ NUMBER(19) Y FK(JBPM4_HIST_VAR, DBID_) 对应的变量值
HVARIDX_ NUMBER(10) Y
MESSAGE_ CLOB Y 消息
OLD_STR_ VARCHAR2(255 CHAR) Y 老的String类型的值
NEW_STR_ VARCHAR2(255 CHAR) Y 新的String类型的值
OLD_INT_ NUMBER(10) Y
NEW_INT_ NUMBER(10) Y
OLD_TIME_ TIMESTAMP(6) Y
NEW_TIME_ TIMESTAMP(6) Y
PARENT_ NUMBER(19) Y 变量的父变量
PARENT_IDX_ NUMBER(10) Y 变量的父变量序号
补充说明 历史信息的详细表,跟其他的历史表进行关联


JBPM4_HIST_PROCINST


表名 流程实例历史表
列名 数据类型(精度范围) 空/非空 约束条件 中文名
DBID_ NUMBER(19) N PK 标识
DBVERSION_ NUMBER(10) N 版本
ID_ VARCHAR2(255 CHAR) Y
PROCDEFID_ VARCHAR2(255 CHAR) Y 流程定义ID
KEY_ VARCHAR2(255 CHAR) Y
START_ TIMESTAMP(6) Y 开始时间
END_ TIMESTAMP(6) Y 结束时间
DURATION_ NUMBER(19) Y 停留时间
STATE_ VARCHAR2(255 CHAR) Y 流程实例状态(活动,完成)
ENDACTIVITY_ VARCHAR2(255 CHAR) Y 是否完成
NEXTIDX_ NUMBER(10) Y
补充说明 历史流程实例相关信息


JBPM4_HIST_TASK


表名 流程任务实例历史表
列名 数据类型(精度范围) 空/非空 约束条件 中文名
DBID_ NUMBER(19) N PK 标识
DBVERSION_ NUMBER(10) N 版本
EXECUTION_ VARCHAR2(255 CHAR) Y 令牌
OUTCOME_ VARCHAR2(255 CHAR) Y 路径名称
ASSIGNEE_ VARCHAR2(255 CHAR) Y 处理人
PRIORITY_ NUMBER(10) Y 优先级
STATE_ VARCHAR2(255 CHAR) Y 完成情况
CREATE_ TIMESTAMP(6) Y 创建时间
END_ TIMESTAMP(6) Y 完成时间
DURATION_ NUMBER(19) Y 任务节点停留时间
NEXTIDX_ NUMBER(10) Y
SUPERTASK_ NUMBER(19) Y FK(JBPM4_HIST_TASK, DBID_) 父任务
补充说明 历史任务相关信息,与jbpm4_hist_actinst关联,单独的表减少了state节点相应字段的空闲和空间浪费


JBPM4_HIST_VAR


表名 流程变量(上下文)历史表
列名 数据类型(精度范围) 空/非空 约束条件 中文名
DBID_ NUMBER(19) N PK 流程模版标识
DBVERSION_ NUMBER(10) N 版本
PROCINSTID_ VARCHAR2(255 CHAR) Y 对应运行的流程实例
EXECUTIONID_ VARCHAR2(255 CHAR) Y 活动实例ID
VARNAME_ VARCHAR2(255 CHAR) Y 变量名称
VALUE_ VARCHAR2(255 CHAR) Y
HPROCI_ NUMBER(19) Y FK(JBPM4_HIST_PROCINST, DBID_) 历史流程实例
HTASK_ NUMBER(19) Y FK(JBPM4_HIST_TASK, DBID_) 历史任务
补充说明 历史变量相关信息


JBPM4_ID_GROUP


表名 组表
列名 数据类型(精度范围) 空/非空 约束条件 中文名
DBID_ NUMBER(19) N
DBVERSION_ NUMBER(10) N
ID_ VARCHAR2(255 CHAR) Y
NAME_ VARCHAR2(255 CHAR) Y
TYPE_ VARCHAR2(255 CHAR) Y
PARENT_ NUMBER(19) Y
补充说明


JBPM4_ID_MEMBERSHIP


表名 用户角色表
列名 数据类型(精度范围) 空/非空 约束条件 中文名
DBID_ NUMBER(19) N
DBVERSION_ NUMBER(10) N
USER_ NUMBER(19) Y
GROUP_ NUMBER(19) Y
NAME_ VARCHAR2(255 CHAR) Y
补充说明


JBPM4_ID_USER


表名 用户表
列名 数据类型(精度范围) 空/非空 约束条件 中文名
DBID_ NUMBER(19) N
DBVERSION_ NUMBER(10) N
ID_ VARCHAR2(255 CHAR) Y
PASSWORD_ VARCHAR2(255 CHAR) Y
GIVENNAME_ VARCHAR2(255 CHAR) Y
FAMILYNAME_ VARCHAR2(255 CHAR) Y
BUSINESSEMAIL_ VARCHAR2(255 CHAR) Y
补充说明


JBPM4_JOB


表名 定时表
列名 数据类型(精度范围) 空/非空 约束条件 中文名
DBID_ NUMBER(19) N PK 标识
CLASS_ VARCHAR2(255 CHAR) N 版本
DBVERSION_ NUMBER(10) N
DUEDATE_ TIMESTAMP(6) Y 到期时间
STATE_ VARCHAR2(255 CHAR) Y 状态
ISEXCLUSIVE_ NUMBER(1) Y 是否可执行
LOCKOWNER_ VARCHAR2(255 CHAR) Y 锁定的参与者
LOCKEXPTIME_ TIMESTAMP(6) Y 锁定释放时间
EXCEPTION_ CLOB Y 活动实例
RETRIES_ NUMBER(10) Y 重复次数
PROCESSINSTANCE_ NUMBER(19) Y 流程实例
EXECUTION_ NUMBER(19) Y 异常信息
CFG_ NUMBER(19) Y FK(JBPM4_LOB, DBID_) 配置
SIGNAL_ VARCHAR2(255 CHAR) Y 信号
EVENT_ VARCHAR2(255 CHAR) Y 事件
REPEAT_ VARCHAR2(255 CHAR) Y 重复
补充说明 作业相关


JBPM4_LOB


表名 存储表
列名 数据类型(精度范围) 空/非空 约束条件 中文名
DBID_ NUMBER(19) N PK 主键
DBVERSION_ NUMBER(10) N 版本
BLOB_VALUE_ BLOB Y 流程定义文件(xml、img、class)
DEPLOYMENT_ NUMBER(19) Y FK(JBPM4_DEPLOYMENT, DBID_) 流程模版标识ID
NAME_ CLOB Y 流程定义文件名
补充说明 保存根据流程定义 xml 形成的二进制数据


JBPM4_PARTICIPATION


表名 参与者表
列名 数据类型(精度范围) 空/非空 约束条件 中文名
DBID_ NUMBER(19) N PK 标识
DBVERSION_ NUMBER(10) N 版本
GROUPID_ VARCHAR2(255 CHAR) Y 组ID
USERID_ VARCHAR2(255 CHAR) Y 用户ID
TYPE_ VARCHAR2(255 CHAR) Y 类型
TASK_ NUMBER(19) Y FK(JBPM4_SWIMLANE, DBID_) 任务ID
SWIMLANE_ NUMBER(19) Y FK(JBPM4_TASK,DBID_) 对应泳道
补充说明 办理人相关信息


JBPM4_PROPERTY


表名 序列表
列名 数据类型(精度范围) 空/非空 约束条件 中文名
KEY_ VARCHAR2(255 CHAR) N
VERSION_ NUMBER(10) N
VALUE_ VARCHAR2(255 CHAR) Y
补充说明 为运行时需要持久化的对象生成dbid,其记录当前所有对象实例的最大值,每次需要生成dbid时,需要先获取该值,然后递增返回。


JBPM4_SWIMLANE


表名 泳道表
列名 数据类型(精度范围) 空/非空 约束条件 中文名
DBID_ NUMBER(19) N PK 标识
DBVERSION_ NUMBER(10) N 版本
NAME_ VARCHAR2(255 CHAR) Y 泳道名
ASSIGNEE_ VARCHAR2(255 CHAR) Y 处理人
EXECUTION_ NUMBER(19) Y FK(JBPM4_EXECUTION, DBID_) 活动实例
补充说明 泳道相关信息


JBPM4_TASK


表名 任务表
列名 数据类型(精度范围) 空/非空 约束条件 中文名
DBID_ NUMBER(19) N PK 主键
CLASS_ CHAR(1 CHAR) N 类型
DBVERSION_ NUMBER(10) N 版本
NAME_ VARCHAR2(255 CHAR) Y 活动节点名称
DESCR_ CLOB Y 描述
STATE_ VARCHAR2(255 CHAR) Y 状态
SUSPHISTSTATE_ VARCHAR2(255 CHAR) Y 保存暂停之前状态
ASSIGNEE_ VARCHAR2(255 CHAR) Y 处理人
FORM_ VARCHAR2(255 CHAR) Y 表单地址
PRIORITY_ NUMBER(10) Y 优先级
CREATE_ TIMESTAMP(6) Y 创建时间
DUEDATE_ TIMESTAMP(6) Y 任务持续时间,表明任务应在多长时间内完成
PROGRESS_ NUMBER(10) Y 活动实例名
SIGNALLING_ NUMBER(1) Y 签收
EXECUTION_ID_ VARCHAR2(255 CHAR) Y 活动实例ID
ACTIVITY_NAME_ VARCHAR2(255 CHAR) Y 活动实例名称
HASVARS_ NUMBER(1) Y 是否有流程变量
SUPERTASK_ NUMBER(19) Y FK(JBPM4_TASK, DBID_) 父任务
EXECUTION_ NUMBER(19) Y 活动实例
PROCINST_ NUMBER(19) Y 流程实例
SWIMLANE_ NUMBER(19) Y FK(JBPM4_SWIMLANE, DBID_) 对应的泳道
TASKDEFNAME_ VARCHAR2(255 CHAR) Y 任务定义名
补充说明 记录任务的相关信息


JBPM4_VARIABLE


表名 上下文表
列名 数据类型(精度范围) 空/非空 约束条件 中文名
DBID_ NUMBER(19) N PK 标识
CLASS_ VARCHAR2(255 CHAR) N 版本
DBVERSION_ NUMBER(10) N 变量类型
KEY_ VARCHAR2(255 CHAR) Y 变量索引
CONVERTER_ VARCHAR2(255 CHAR) Y 数值转换器
HIST_ NUMBER(1) Y 对应的流程实例
EXECUTION_ NUMBER(19) Y FK(JBPM4_EXECUTION, DBID_) 活动实例
TASK_ NUMBER(19) Y FK(JBPM4_TASK, DBID_) 对应的任务
LOB_ NUMBER(19) Y FK(JBPM4_LOB, DBID_)
DATE_VALUE_ TIMESTAMP(6) Y 当值为date类型时,存值
DOUBLE_VALUE_ FLOAT Y 当值为double类型时,存值
CLASSNAME_ VARCHAR2(255 CHAR) Y 变量类名
LONG_VALUE_ NUMBER(19) Y 当值为long类型时,存值
STRING_VALUE_ VARCHAR2(255 CHAR) Y 当值为String类型时,存值
TEXT_VALUE_ CLOB Y 当值为date类型时,存值
EXESYS_ NUMBER(19) Y FK(JBPM4_EXECUTION, DBID_)
补充说明 记录传给流程的变量的相关信息


相关文章
|
12月前
|
存储 XML Java
Activiti7(图文并茂)
Activiti7(图文并茂)
|
18天前
|
API
工作流JBPM流程图说明
工作流JBPM流程图说明
18 0
|
18天前
|
XML 消息中间件 监控
工作流 jbpm概述
工作流 jbpm概述
17 0
|
18天前
|
XML 数据库 数据格式
工作流JBPM画图与配置
工作流JBPM画图与配置
16 0
|
9月前
|
SQL Java 关系型数据库
Activiti工作流框架学习笔记(二)之springboot2.0整合工作流Activiti6.0
Activiti工作流框架学习笔记(二)之springboot2.0整合工作流Activiti6.0
133 0
|
9月前
|
XML Oracle Java
Flowable工作流入门看这篇就够了
Flowable工作流入门看这篇就够了
1331 0
|
12月前
|
XML 存储 API
工作流 jbpm(图文并茂)(下)
工作流 jbpm(图文并茂)
|
12月前
|
XML 存储 供应链
史上最全 Activiti 学习教程,一文搞定最强工作流引擎!(1)
史上最全 Activiti 学习教程,一文搞定最强工作流引擎!
|
消息中间件 供应链 JavaScript
万字详解:Activiti 工作流引擎(一)
万字详解:Activiti 工作流引擎(一)
万字详解:Activiti 工作流引擎(一)