研究了一段時間的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圖: