研究了一段时间的OSWorkflow,对其表结构做了一些分析,能帮助深入的学习:
以Oracle为例
1.========================================================================================
create table OS_PROPERTYENTRY --存储propertyset的值(具体字段还不清晰以后补充)
(
GLOBAL_KEY varchar(255),
ITEM_KEY varchar(255),
ITEM_TYPE smallint,
STRING_VALUE varchar(255),
DATE_VALUE date,
DATA_VALUE blob,
FLOAT_VALUE float,
NUMBER_VALUE numeric,
primary key (GLOBAL_KEY, ITEM_KEY)
);
2.========================================================================================
create table OS_USER --用户表
(
USERNAME varchar(20), --用户名
PASSWORDHASH varchar(2024),--经过加密的密码
primary key (USERNAME)
);
3.========================================================================================
create table OS_GROUP --组结构表
(
GROUPNAME varchar(20), --组名称
primary key (GROUPNAME)
);
4.========================================================================================
create table OS_MEMBERSHIP --用户与组的关系表
(
USERNAME varchar(20), --用户名
GROUPNAME varchar(20), --组名称
primary key (USERNAME, GROUPNAME),
foreign key (USERNAME) references OS_USER(USERNAME),
foreign key (GROUPNAME) references OS_GROUP(GROUPNAME)
);
5.========================================================================================
create table OS_WFENTRY --工作流主表,存放工作流名称和状态
(
ID number,
NAME varchar(20), --工作流名称
STATE integer, --工作流状态
primary key (ID)
);
6.========================================================================================
create table OS_CURRENTSTEP --当前步骤表,存放当前步骤的数据
(
ID number, --自动编号
ENTRY_ID number, --工作流编号
STEP_ID integer, --步骤编号
ACTION_ID integer, --动作编号
OWNER varchar(20), --步骤的所有者
START_DATE date, --开始时间
FINISH_DATE date, --结束时间
DUE_DATE date, --授权时间
STATUS varchar(20), --当前状态
CALLER varchar(20), --实际执行的用户
primary key (ID),
foreign key (ENTRY_ID) references OS_WFENTRY(ID),
foreign key (OWNER) references OS_USER(USERNAME),
foreign key (CALLER) references OS_USER(USERNAME)
);
7.========================================================================================
create table OS_HISTORYSTEP --历史步骤表,存放当前步骤的数据
(
ID number, --自动编号
ENTRY_ID number, --工作流编号
STEP_ID integer, --步骤编号
ACTION_ID integer, --动作编号
OWNER varchar(20), --步骤的所有者
START_DATE date, --开始时间
FINISH_DATE date, --结束时间
DUE_DATE date, --授权时间
STATUS varchar(20), --状态
CALLER varchar(20), --实际执行的用户
primary key (ID),
foreign key (ENTRY_ID) references OS_WFENTRY(ID),
foreign key (OWNER) references OS_USER(USERNAME),
foreign key (CALLER) references OS_USER(USERNAME)
);
8.========================================================================================
create table OS_CURRENTSTEP_PREV --上一步骤表,存放当前步骤和上一个步骤的关联数据
(
ID number, --当前步骤编号
PREVIOUS_ID number, --上一步骤编号
primary key (ID, PREVIOUS_ID),
foreign key (ID) references OS_CURRENTSTEP(ID),
foreign key (PREVIOUS_ID) references OS_HISTORYSTEP(ID)
);
9.========================================================================================
create table OS_HISTORYSTEP_PREV --上一历史步骤表,存放历史步骤和上一个步骤的关联数据
(
ID number, --当前历史步骤编号
PREVIOUS_ID number, --上一历史步骤编号
primary key (ID, PREVIOUS_ID),
foreign key (ID) references OS_HISTORYSTEP(ID),
foreign key (PREVIOUS_ID) references OS_HISTORYSTEP(ID)
);
ER图: