先说点题外话:如果各位哪位转载我的文章,非常欢迎,但请把出处写上!谢谢!
欢迎讨论:msn:yun15291li@hotmail.com
Osworkflow内置表结构(以mysql的表结构为例),具体需要参看其建表的sql语句,如字段类型、长度等,我在这里做一些必要的分析说明,如果你能够认真看,相信你可以看得懂。经过自己的实践摸索,认为各个表以及表中字段含义如下,从简单的说起:
1、 OS_GROUP:组结构表,如例子中分了bars、bazs、foos三个组。存储在该表的GROUPNAME字段内。
2、 OS_USER:用户表,USERNAME字段存储用户名,PASSWORDHASH是经过加密过的密码。
3、 OS_MEMBERSHIP:用户与组的关系表,USERNAME字段存储用户名,GROUPNAME字段存储组名,表示用户与组之间的关系。
4、 表名:OS_CURRENTSTEP(正在执行的流程信息)
列名
说明
约束
ID
主键
ENTRY_ID
当前执行的工作流的ENTRYID,即如约束所写
OS_WFENTRY表的ID为其外键
STEP_ID
当前执行的STEPID
ACTION_ID
当前执行的ACTIONID
OWNER
需要执行的用户
OS_USER表的USERNAME为其外键
START_DATE
开始时间精确到秒,在初始化工作时候此值被设置。
FINISH_DATE
结束时间
DUE_DATE
这个还不清楚,(猜测是trigger设置的日期,有谁知道请告诉我谢谢!)
STATUS
当前正在实现的step中的具体status
CALLER
实际执行的用户
OS_USER表的USERNAME为其外键
5、 表名:OS_CURRENTSTEP_PREV(合成主键)
如split过程,ID为2,3。PREVIOUS_ID都记录为1。则表示是由1分出2,3;此表实时变化,如一2分支执行完毕,那么就将此条记录删除。
列名
说明
约束
ID
记录当前正在执行的ID
OS_CURRENTSTEP的ID为其外键
PREVIOUS_ID
记录由哪个ID产生的当前正正在执行的信息
OS_HISTORYSTEP的ID为其外键
6、 表名:OS_HISTORYSTEP(此表结构与OS_CURRENTSTEP相同,说明也相同)只是这个表代表的已经被执行过的。
列名
说明
约束
ID
主键
ENTRY_ID
OS_WFENTRY表的ID为其外键
STEP_ID
ACTION_ID
OWNER
OS_USER表的USERNAME为其外键
START_DATE
FINISH_DATE
DUE_DATE
STATUS
CALLER
OS_USER表的USERNAME为其外键
7、 表名:OS_HISTORYSTEP_PREV(联合主键)(记录历史记录表OS_HISTORYSTEP之间的关系,如都执行的1,2。但是2是由1引起发生的。那么ID为2,PREVIOUS_ID为1)
列名
说明
约束
ID
历史记录中的被引发的ID
OS_HISTORYSTEP(ID)
PREVIOUS_ID
历史记录中的主引发的ID
OS_HISTORYSTEP(ID)
8、 表名:OS_PROPERTYENTRY(GLOBAL_KEY, ITEM_KEY联合主键)存储propertyset的值
列名
说明
GLOBAL_KEY
这个值是在JDBCWorkflowStore类的public PropertySet getPropertySet(long entryId) {
HashMap args = new HashMap(1);
args.put("globalKey", "osff_" + entryId);
return PropertySetManager.getInstance("jdbc", args);
}赋值的。
规则如上面代码。Osff+entryid。
ITEM_KEY
Key值,propertyset(“即为key”,……)
ITEM_TYPE
具体参见com.opensymphony.module.propertyset包内properties里的各种value-type。存储对应的数字
STRING_VALUE
String值
DATE_VALUE
Date
DATA_VALUE
Data
FLOAT_VALUE
Float
NUMBER_VALUE
number
9、 表名:OS_STEPIDS
列名
说明
ID
主键,自动增量
10、 名:OS_WFENTRY
列名
说明
ID
主键标志
NAME
工作流名称,如例子中即为example
STATE
CREATED = 0;ACTIVATED = 1;SUSPENDED = 2;KILLED = 3;COMPLETED = 4;UNKNOWN = -1;