shark工作流引擎表结构分析.doc_第1页
shark工作流引擎表结构分析.doc_第2页
shark工作流引擎表结构分析.doc_第3页
shark工作流引擎表结构分析.doc_第4页
shark工作流引擎表结构分析.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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 流程流转控制数据管理2 Shark持久层对表的封装表一、 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.xmlHibernateUtilities.hbm.xmlclass= utilities.hibernate.HibernateCounter table=countershibernate.instance.cfg.xmlHibernateEventAudit.hbm.xml class = eventaudit.HibernateEventAudit table=eventauditsHibernateEventType.hbm.xml class=eventaudit.data.HibernateEventType table=eventtypesHibernateActivityStateEventAudit.hbm.xmlclass= eventaudit.data.HibernateActivityStateEventAudit table=activitystateeventauditsHibernateProcessStateEventAudit.hbm.xmlclass eventaudit.data.HibernateProcessStateEventAudit table=processstateeventauditshibernate.repository.cfg.xmlHibernateXPDL.hbm.xmlclass = repositorypersistence.data.HibernateXPDL table=xpdlsHibernateNextXPDLVersion.hbm.xml class= repositorypersistence.data.HibernateNextXPDLVersion table=nextxpdlversionsHibernateXPDLHistory.hbm.xmlclass= repositorypersistence.data.HibernateXPDLHistory table=xpdlhistoryhibernate.user.cfg.xmlHibernateGroup.hbm.xml class= usergroup.HibernateGroup table=grouptableHibernateUser.hbm.xmlclass= usergroup.HibernateUser table=usertablehibernate.participantmapping.cfg.xmlHibernateParticipant.hbm.xmlclass = partmappersistence.data.HibernateParticipant table=participant HibernateGroupUser.hbm.xmlclass = partmappersistence.data.HibernateGroupUser table=groupuserHibernateNormalUser.hbm.xmlclass= partmappersistence.data.HibernateNormalUser table=normaluserHibernateProcessPartMap.hbm.xmlclass= partmappersistence.data.HibernateProcessPartMap table=process HibernatePackage.hbm.xmlclass=partmappersistence.data.HibernatePackage table=package hibernate.appmapping.cfg.xml(比较怪异,文件直接含有 hbm.xml的内容hibernate-mapping) hibernate.applicationmapping.cfg.xmlHibernateApplicationMapping.hbm.xmlclass=com.cs3.workflow.appmappersistence.HibernateApplicationMap table=cesslocking.cfg.xmlHibernateLockEntry.hbm.xmlclass= processlocking.HibernateLockEntry table=locktable表三、独立的 *.hbm.xml文件表对象描述文件描述 (class名称前面缺省com.cs3.workflow.)HibernateActivity.hbm.xmlclass=instancepersistence.HibernateActivity table=activitiesHibernateActivityState.hbm.xmlclass=instancepersistence.data.HibernateActivityState table=activitystatesHibernateActivityVariable.hbm.xmlclass=instancepersistence.HibernateActivityVariable table=activitydataHibernateAndJoinEntry.hbm.xmlclass=instancepersistence.HibernateAndJoinEntry table=andjointableHibernateAssignment.hbm.xmlclass=instancepersistence.HibernateAssignment table=assignmentstableHibernateDeadline.hbm.xmlclass=instancepersistence.HibernateDeadline table=deadlinesHibernateProcess.hbm.xmlclass=instancepersistence.HibernateProcess table=processesHibernateProcessMgr.hbm.xmlclass=instancepersistence.HibernateProcessMgr table=processdefinitionsHibernateProcessRequester.hbm.xmlclass=instancepersistence.HibernateProcessRequester table=processrequestersHibernateProcessState.hbm.xmlclass=instancepersistence.data.HibernateProcessState table=processstatesHibernateProcessVariable.hbm.xmlclass=instancepersistence.HibernateProcessVariable table=processdataHibernateResource.hbm.xmlclass=instancepersistence.HibernateResource table=resourcestable3 功能对应数据库表数据在对数据库表操作的过程中,有两个特殊表 counter,locktablecounter记录引擎启动后,对不同的表主键iddb,产生的最大键值。locktable辅助事务控制的表3.1 启动和登录功能表名以及数据结构启动(加载代码表数据)processstates如果第一次加载,就insert,如果以后加载数据就update目的:指定 过程和活动的状态常量,目前指定了6中状态open.runningopen.not_running.not_startedopen.not_pletedclosed.terminatedclosed.abortedactivitystates同上eventtypes如果第一次加载,就insert,如果以后加载数据就update目的:指定 事件,活动和过程事件 的状态常量packageLoadedpackageUnloadedpackageUpdatedprocessCreatedprocessStateChangedprocessContextChangedactivityStateChangedactivityContextChangedactivityResultChangedactivityAssignmentChangedactivitystateeventaudits数据同activitystatesprocessstateeventaudits数据同processstatescounters辅助生成以上表的iddb值,指定最大值登录查询这些表中是否含有登录用户usertablegrouptablegrouptablegroupgrouptable查询这些表有没有指定用户名和对应组增加一个用户(通过登录界面)grouptable,usertable,usergrouptable添加用户名和密码。用户名到usertable,默认的组名到grouptableresourcestable把这个用户当成资源添加到resourcetable中counters指定对当前引擎启动后,对resourcetable 产生的iddb 的最大值3.2 用户管理功能表名以及数据结构新建grouptableusertableusergrouptable添加用户基本信息到usertable,组名到grouptable删除usertable查询这些表有没有指定用户名和对应组设置usertable修改其他用户相关信息密码usertable改变密码用户映射激活界面usertablegrouptablegroupgrouptableusergrouptable查询出界面中展现当前含有的用户以及用户组选中的参与者不包含在流程中normalusergroupuserpackageparticipantpacklevelparticipantgroupuserpacklevelparticipant指定的参与者只是包级别在这里 groupuser和normaluser是等价的。都和 package 通过中间关联表进行多对多的关联选中的参与者包含在流程中normalusergroupuserpackageprocessparticipantproclevelparticipantuserproclevelparticipant指定的参与者是流程级别跟上一个差别是多了 process通过 proclevelparticipant 和 normaluser或 groupuser 的映射关系3.3 存储库管理功能表名以及数据结构上传包 物理磁盘不涉及后台表删除包物理磁盘不涉及后台表3.4 包管理功能表名以及数据结构装载nextxpdlversions记录当前加载包的版本(加载次数1),在xpdl的版本号属性。提供包管理Xpdls记录加载包的信息Counters针对Processdefinitions中产生的iddb键值,指定最大值Processdefinitions增加包中对流程定义的描述注意:name 字段的构成: 包名#version#流程名xpdlreferences如果包中含有引用包,这个关系在此表中描述卸载participantapplicationmappings删除涉及这个包的相关信息,主要是通过用户映射和应用程序映射来体现的信息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 活动的上下文变化createprocesseventauditsstateeventauditsassignmenteventauditsdataeventauditsneweventauditdataoldeventauditdata根据上面eventaudits记录的事件,通过id字段的关联,在这些表中明细事件前后的信息Stateeventaudits:oldstatenewstateAssignmenteventaudits:oldresource-newresourceDataeventaudits:olddatanewdataActivities实例化流程对应的一个活动activitydata活动运行的上下文信息assignmentstable指派活动的任务,就是 活动对应资源的用户关系查看processdefinitions根据流程的信息,调用jawe的jar包提供接口,浏览流程图描述processes得到流程的描述字段的信息修改定义processdefinitions修改指定流程描述的信息有效processdefinitions对应 字段:state 的信息无效processdefinitions对应 字段:state 的信息3.6 管理工作列表功能表名以及数据结构选择用户,列出这个用户的任务assignmentstableresourcestableactivitiesprocessrequestersactivitystates主要是通过表assignmentstable,找到指定用户的任务,然后再到相关表 resourcestable,activities,processrequesters 得到具体信息是否接受任务(选中任务前面的输入框)activities修改这个活动的状态assignmentstable修改任务的状态Counterseventaudits针对以上两个状态的修改,产生了两个事件:5:processStateChanged 流程状态变化10:activityAssignmentChanged 活动的任务变化stateeventaudits具体描述了变化信息:比如:非运行运行assignmenteventaudits指派的活动由谁来接受点击完成activities修改活动的状态processes修改流程的状态processrequesters修改流程发起的请求人eventaudits针对以上两个状态的修改,产生了两个事件:activityStateChanged:活动的状态变化processStateChanged:流程的状态改变stateeventaudits针对eventaudits增加的事件描述了具体变化的前后信息:活动状态比如:pleted流程状态比如:pletedassignmentstable如果结束,任务信息清除点击更改变量activitydata活动中,扩展属性的变量,引用的流程中参数变量,名称要一致分配指定的任务给其他用户activitiesassignmentstable修改活动任务指派的资源eventaudits添加了活动任务执行人事件activityAssignmentChangedassignmenteventaudits描述eventaudits添加事件的明细信息3.7 应用程序映射功能表名以及数据结构新增applicationmappings将xpdl 中指定的Application节点描述和引擎中指定的工具代理进行映射删除applicationmappings 删除选中的映射记录3.8 流程监控功能表名以及数据结构选中要激活的流程节点processdefinitions得到流程定义的信息选中某个实例化的流程Processactivities在界面中显示当前流程的状态调用jawe的接口,根据流程包含的活动状态进行图形显示点击挂起按钮processes修改了流程状态信息activities修改了活动状态信息,以及时间processrequesters修改流程的发起者eventaudits针对processes,activities的状态改变,产生两种类型事件记录processStateChangedactivityStateChangedstateeventaudits针对eventaudits的两个事件产生对应的明细信息比如:open.runninopen.not_running.suspendedopen.not_running.not_startedopen.not_running.suspended点击重新开始按钮processes修改了流程状态信息activities修改了活动状态信息,以及时间processrequesters修改流程的发起者eventaudits针对processes,activities的状态改变,产生两种类型事件记录processStateChangedactivityStateChangedstateeventaudits针对eventaudits的两个事件产生对应的明细信息比如:open.not_running.suspendedopen.runningopen.not_running.suspendedopen.not_running.not_started点击放弃按钮processes修改了流程状态信息activities修改了活动状态信息,以及时间processrequesters修改流程的发起者eventaudits针对processes,activities的状态改变,产生两种类型事件记录processStateChangedactivityStateChangedstateeventaudits针对eventaudits的两个事件产生对应的明细信息比如:oopen.runningclosed.abortedopen.not_running.not_startedclosed.aborted点击终止按钮processes修改了流程状态信息activities修改了活动状态信息,以及时间processrequesters修改流程的发起者eventaudits针对processes,activities的状态改变,产生两种类型事件记录processStateChangedactivityStateChangedstateeventaudits针对eventaudits的两个事件产生对应的明细信息比如:open.runningclosed.terminatedopen.not_running.not_startedclosed.terminated点击显示历史按钮eventaudits得到流程的历史事件,然后通过关联的明细表,得到事件具体信息点击描述processDefinitionprocesses得到流程的描述信息点击”变量”Processdata更改process的上下文数据点击活动管理挂起activitieseventauditsstateeventaudits修改了 activities 中指定活动的状态通过eventaudits记录修改的事件重新开始activitieseventauditsstateeventaudits同上放弃activitieseventauditsstateeventaudits同上终止activitiesprocessrequesterseventauditsstateeventauditsassignmentstableactivities 修改了状态processrequesters 修改流程的发起者eventaudits 通过eventaudits记录修改状态的事件stateeventaudits assignmentstable 删除这个活动对应的任务手动启动activitiesactivitydataassignmentstableprocessrequesterseventauditsassignmenteventauditsdataeventauditsneweventauditdata针对中止的活动的才进行重新启动增加活动上下文数据 activitydata增加活动指派任务给相应的资源修改流程的发起者产生两种类型的事件指派任务事件活动上下文改变事件4 附录4.1.1 持久对象和表的对应关系表一、持久对象和表的对应关系(过程数据)对象名(前面缺省com.cs3.workflow. instancepersistence)表名HibernateActivityactivities说明:data.HibernateActivityStateactivitystates说明:HibernateActivityVariableactivitydata说明:HibernateAndJoinEntryandjointable说明:HibernateAssignmentassignmentstable说明:HibernateDeadlinedeadlines说明:HibernateProcessprocesses说明:HibernateProcessMgrprocessdefinitions说明:HibernateProcessRequesterprocessrequesters说明:data.HibernateProcessStateprocessstates说明:HibernateProcessVariableprocessdata说明:HibernateResourceresourcestable说明:表二、持久对象和表的对应关系(静态数据)对象名(前面缺省com.cs3.workflow.)表名utilities.hibernate.HibernateCounterCounters说明:eventaudit.HibernateEventAuditEventaudits说明:eventa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论