shark工作流引擎表结构分析.docx
- 文档编号:30299258
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:26
- 大小:173.62KB
shark工作流引擎表结构分析.docx
《shark工作流引擎表结构分析.docx》由会员分享,可在线阅读,更多相关《shark工作流引擎表结构分析.docx(26页珍藏版)》请在冰豆网上搜索。
shark工作流引擎表结构分析
SHARK工作流引擎的表结构
背景:
Shark作为一个满足XPDL规范的开源工作流引擎,由于有JAWE作为定义工具,现有的很多流程表达,接口的定义都比较丰富。
在数据库的数据结构表达和代码结构上也有很多优点。
当然,Shark还是在传统的关系数据库的基础上,提出了一个适用于关键业务开发的基于关系结构的工作流引擎的表结构。
关键词:
表结构、工作流引擎、shark、数据结构
1数据库表的关系图
Shark中共含有44个表,分别表达不同的数据结构,对应表数据内容和功能的对应关系,分为用户管理、事件管理、包管理、流程流转的控制数据管理等部分。
1.1用户管理
系统的用户和用户组的基本信息
1.2事件管理
在流程运转过程中,针对流程启动和结束,上下文数据,状态数据的改变,任务结束等事件,都记录了变化的前后过程。
1.3包管理
1.4映射表
1.4.1在流程定义的参与者和系统真正用户之间有对应关系
1.4.2应用和调用工具类之间的映射
1.5辅助表
1.6流程流转控制数据管理
2Shark持久层对表的封装
表一、shark持久层中对表结构用Hibernate的封装
配置文件分布
描述
含有8个模块
每个模块对应一个*.cfg.xml文件,
见表二
表对象描述文件
Shark持久层(Hibernate)中,目前含有29个表描述文件(*.hbm.xml)
在上面指定的模块文件(*.cfg.xml)中共指定了17个hbm.xml文件
对于29个*.hbm.xml中,有17个在启动的时候要加载,其他的12是动态加载
17个*.hbm.xml自动加载的是一些基础数据(用户,参与者,应用,事件过程类型等)
12个*.hbm.xml是一些过程数据(见表三)
表二、模块以及对应的表对象描述文件
模块
含有的表对象描述文件
Class的名称前面缺省(com.cs3.workflow.)
hibernate.utilities.cfg.xml
HibernateUtilities.hbm.xml
class="utilities.hibernate.HibernateCounter"
table="counters"
hibernate.instance.cfg.xml
HibernateEventAudit.hbm.xml
class="eventaudit.HibernateEventAudit"
table="eventaudits"
HibernateEventType.hbm.xml"
class="eventaudit.data.HibernateEventType"
table="eventtypes"
HibernateActivityStateEventAudit.hbm.xml
class="eventaudit.data.HibernateActivityStateEventAudit"
table="activitystateeventaudits"
HibernateProcessStateEventAudit.hbm.xml
class="eventaudit.data.HibernateProcessStateEventAudit"
table="processstateeventaudits"
hibernate.repository.cfg.xml
HibernateXPDL.hbm.xml"
class="repositorypersistence.data.HibernateXPDL"
table="xpdls"
HibernateNextXPDLVersion.hbm.xml"
class="repositorypersistence.data.HibernateNextXPDLVersion"
table="nextxpdlversions"
HibernateXPDLHistory.hbm.xml"
class="repositorypersistence.data.HibernateXPDLHistory"
table="xpdlhistory"
hibernate.user.cfg.xml
HibernateGroup.hbm.xml
class="usergroup.HibernateGroup"
table="grouptable"
HibernateUser.hbm.xml
class="usergroup.HibernateUser"
table="usertable"
hibernate.participantmapping.cfg.xml
HibernateParticipant.hbm.xml
class="partmappersistence.data.HibernateParticipant"
table="participant"
HibernateGroupUser.hbm.xml
class="partmappersistence.data.HibernateGroupUser"
table="groupuser"
HibernateNormalUser.hbm.xml
class="partmappersistence.data.HibernateNormalUser"
table="normaluser"
HibernateProcessPartMap.hbm.xml"
class="partmappersistence.data.HibernateProcessPartMap"
table="process"
class="partmappersistence.data.HibernatePackage"not-null="true"/> class="partmappersistence.data.HibernateProcessLevelParticipant"/> HibernatePackage.hbm.xml class="partmappersistence.data.HibernatePackage" table="package" hibernate.appmapping.cfg.xml (比较怪异,文件直接含有hbm.xml的内容 hibernate.applicationmapping.cfg.xml HibernateApplicationMapping.hbm.xml class="com.cs3.workflow.appmappersistence.HibernateApplicationMap"table="applicationmappings" hibernate.processlocking.cfg.xml HibernateLockEntry.hbm.xml class="processlocking.HibernateLockEntry" table="locktable" 表三、独立的*.hbm.xml文件 表对象描述文件 描述(class名称前面缺省com.cs3.workflow.) HibernateActivity.hbm.xml class="instancepersistence.HibernateActivity"table="activities" HibernateActivityState.hbm.xml class="instancepersistence.data.HibernateActivityState"table="activitystates" HibernateActivityVariable.hbm.xml class="instancepersistence.HibernateActivityVariable"table="activitydata" HibernateAndJoinEntry.hbm.xml class="instancepersistence.HibernateAndJoinEntry"table="andjointable" HibernateAssignment.hbm.xml class="instancepersistence.HibernateAssignment"table="assignmentstable" HibernateDeadline.hbm.xml class="instancepersistence.HibernateDeadline" table="deadlines" HibernateProcess.hbm.xml class="instancepersistence.HibernateProcess" table="processes" HibernateProcessMgr.hbm.xml class="instancepersistence.HibernateProcessMgr"table="processdefinitions" HibernateProcessRequester.hbm.xml class="instancepersistence.HibernateProcessRequester"table="processrequesters"> HibernateProcessState.hbm.xml class="instancepersistence.data.HibernateProcessState"table="processstates"> HibernateProcessVariable.hbm.xml class="instancepersistence.HibernateProcessVariable"table="processdata" HibernateResource.hbm.xml class="instancepersistence.HibernateResource"table="resourcestable" 3功能对应数据库表数据 在对数据库表操作的过程中,有两个特殊表counter,locktable counter 记录引擎启动后,对不同的表主键iddb,产生的最大键值。 locktable 辅助事务控制的表 3.1启动和登录 功能 表名以及数据结构 启动 (加载代码表数据) processstates 如果第一次加载,就insert,如果以后加载数据就update 目的: 指定过程和活动的状态常量,目前指定了6中状态 open.running open.not_running.not_started open.not_running.suspended pleted closed.terminated closed.aborted activitystates 同上 eventtypes 如果第一次加载,就insert,如果以后加载数据就update 目的: 指定事件,活动和过程事件的状态常量 packageLoaded packageUnloaded packageUpdated processCreated processStateChanged processContextChanged activityStateChanged activityContextChanged activityResultChanged activityAssignmentChanged activitystateeventaudits 数据同activitystates processstateeventaudits 数据同processstates counters 辅助生成以上表的iddb值,指定最大值 登录 查询这些表中是否含有登录用户 usertable grouptable grouptable groupgrouptable 查询这些表有没有指定用户名和对应组 增加一个用户(通过登录界面) grouptable, usertable, usergrouptable 添加用户名和密码。 用户名到usertable,默认的组名到grouptable resourcestable 把这个用户当成资源添加到resourcetable中 counters 指定对当前引擎启动后,对resourcetable产生的iddb的最大值 3.2用户管理 功能 表名以及数据结构 新建 grouptable usertable usergrouptable 添加用户基本信息到usertable,组名到grouptable 删除 usertable 查询这些表有没有指定用户名和对应组 设置 usertable 修改其他用户相关信息 密码 usertable 改变密码 用户映射 激活界面 usertable grouptable groupgrouptable usergrouptable 查询出界面中展现当前含有的用户以及用户组 选中的参与者不包含在流程中 normaluser groupuser package participant packlevelparticipant groupuserpacklevelparticipant 指定的参与者只是包级别 在这里groupuser和normaluser是等价的。 都和package通过中间关联表进行多对多的关联 选中的参与者包含在流程中 normaluser groupuser package process participant proclevelparticipant userproclevelparticipant 指定的参与者是流程级别 跟上一个差别是多了process通过proclevelparticipant和normaluser或groupuser的映射关系 3.3存储库管理 功能 表名以及数据结构 上传包 物理磁盘 不涉及后台表 删除包 物理磁盘 不涉及后台表 3.4包管理 功能 表名以及数据结构 装载 nextxpdlversions 记录当前加载包的版本(加载次数+1),在xpdl的版本号属性。 提供包管理 Xpdls 记录加载包的信息 Counters 针对Processdefinitions中产生的iddb键值,指定最大值 Processdefinitions 增加包中对流程定义的描述 注意: name字段的构成: 包名#version#流程名 xpdlreferences 如果包中含有引用包,这个关系在此表中描述 卸载 participant applicationmappings 删除涉及这个包的相关信息,主要是通过用户映射和应用程序映射来体现的信息 processdefinitions 删除此包定义的流程描述 xpdlhistory 增加要删除的包进行记录(包括版本,内容) xpdls 真正删除此包的信息 更新 xpdls 增加这个包信息 nextxpdlversions 修改这个包的版本(加载次数+1) processdefinitions 增加报定义的流程信息 3.5流程化实例管理 功能 表名以及数据结构 选中要进行实例化流程的树节点,在界面右面显示流程的基本信息 processdefinitions 流成定义的基本信息 实例化 processes 实例化这个流程的信息 Id字段的组成: iddb_packageid_processid 这里iddb是通过counter生成的 processdata 流程启动的参数输入,可以通过界面的变量输入 processrequesters 根据登录信息(用户id)指定流程的发起者(对应的资源resourcetable) eventaudits 实例化过程共产生五类事件,表eventaudits记录了所发生的事件类型和时间等信息 4: processCreated产生流程 6: processContextChanged上下文信息变化 5: processStateChanged流程状态变化 10: activityAssignmentChanged活动的任务变化 8: activityContextChanged活动的上下文变化 createprocesseventaudits stateeventaudits assignmenteventaudits dataeventaudits neweventauditdata oldeventauditdata 根据上面eventaudits记录的事件,通过id字段的关联,在这些表中明细事件前后的信息 Stateeventaudits: oldstatenewstate Assignmenteventaudits: oldresource->newresource Dataeventaudits: olddatanewdata Activities 实例化流程对应的一个活动 activitydata 活动运行的上下文信息 assignmentstable 指派活动的任务,就是活动对应资源的用户关系 查看 processdefinitions 根据流程的信息,调用jawe的jar包提供接口,浏览流程图 描述 processes 得到流程的描述字段的信息 修改定义 processdefinitions 修改指定流程描述的信息 有效 processdefinitions 对应字段: state的信息 无效 processdefinitions 对应字段: state的信息 3.6管理工作列表 功能 表名以及数据结构 选择用户,列出这个用户的任务 assignmentstable resourcestable activities processrequesters activitystates 主要是通过表assignmentstable,找到指定用户的任务,然后再到相关表resourcestable,activities ,processrequesters得到具体信息 是否接受任务(选中任务前面的输入框) activities 修改这个活动的状态 assignmentstable 修改任务的状态 Counters eventaudits 针对以上两个状态的修改,产生了两个事件: 5: processStateChanged流程状态变化 10: activityAssignmentChanged活动的任务变化 stateeventaudits 具体描述了变化信息: 比如: 非运行—〉运行 assignmenteventaudits 指派的活动由谁来接受 点击完成 activities 修改活动的状态 processes 修改流程的状态 processrequesters 修改流程发起的请求人 eventaudits 针对以上两个状态的修改,产生了两个事件: activityStateChanged: 活动的状态变化 processStateChanged: 流程的状态改变 stateeventaudits 针对eventaudits增加的事件 描述了具体变化的前后信息: 活动状态 比如: open.running—〉pleted 流程状态 比如: open.running—〉pleted assignmentstable 如果结束,任务信息清除 点击更改变量 activitydata 活动中,扩展属性的变量,引用的流程中参数变量,名称要一致 分配指定的任务给其他用户 activities assignmentstable 修改活动任务指派的资源 eventaudits 添加了活动任务执行人事件 activityAssignmentChanged assignmenteventaudits 描述eventaudits添加事件的明细信息 3.7应用程序映射 功能 表名以及数据结构 新增 applicationmappings 将xpdl中指定的Application节点描述和引擎中指定的工具代理进行映射 删除 applicationmappings 删除选中的映射记录 3.8流程监控 功能 表名以及数据结构 选中要激活
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- shark 工作流 引擎 结构 分析