2022年Joinwork工作流引擎总体设计 .pdf
《2022年Joinwork工作流引擎总体设计 .pdf》由会员分享,可在线阅读,更多相关《2022年Joinwork工作流引擎总体设计 .pdf(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Joinwork 工作流引擎总体设计上海携创软件技术有限公司名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 24 页 - - - - - - - - - 2 目录Joinwork 工作流引擎总体设计. 3流程模板定义. 3模板定义类关系图. 3流程模板文件的存储. 4流程模板XML 文件格式说明. 5数据变量定义. 10 模板定义语法检查. 11 用户和组织机构管理. 11 设计目标 . 11 Party 模型 . 11 用户、组织与组织类别. 11 相关类图 . 13
2、参与者权限管理. 14 相关类图 . 14 引擎的运行 . 15 流程引擎 . 15 流程实例 . 16 流程实例的存储. 17 运行中模板管理. 18 任务管理 . 18 任务管理器 . 18 任务的生成和分配. 19 任务代理人信息. 19 任务的存储 . 20 任务日志记录. 21 消息管理 . 21 消息定义 . 21 消息处理 . 22 定时管理 . 23 动作组件 . 23 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 24 页 - - - - - - -
3、- - 3 Joinwork 工作流引擎总体设计流程模板定义模板定义类关系图BPMObjectBPMAbstractNodeBPMPoliciesBPMPolicypolicies1.10.nBPMActivityBPMActorBPMActorsactors1.10.nBPMAndRouterBPMConRouterBPMStatusBPMEndBPMEventActivityMessageNodeBPMHumenActivityBPMNoteBPMParamBPMParticipantTypeBPMParticipantBPMProcessBPMStartBPMSubProcessBPMT
4、imeActivityBPMTransitionBPMObject 是所有流程模板类的基类;BPMObjec. getBPMObjectType() 方法所有基类必须重载,以返回模板类代表的模板元素类型代码。各模板元素类型代码如下表:模板类类型代码BPMProcess 0 BPMActivity 1 BPMAndRouter 2 BPMConRouter 3 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 24 页 - - - - - - - - - 4 BPMEnd 4
5、 BPMEventActivity 5 BPMHumenActivity 6 BPMPolicy 7 BPMStart 8 BPMStatus 9 BPMTimeActivity 10 BPMTransition 11 BPMSubProcess 12 BPMActor 13 BPMActors 14 BPMNote 15 BPMDataField 16 BPMAbstractNode 是所有流程节点类的基类;BPMActivity是所有活动类节点的基类;BPMProcess 类也是 BPMActivity的子类。BPMStatus 是所有状态类节点的基类;动作脚本运行规则类( BPMPoli
6、cy ,BPMPolicies ) 、参与者定义类 (BPMActor ,BPMActor ),标注类( BPMNote ) 、迁移类( BPMTransition )作为 BPMObject 的直接派生类。流程模板文件的存储BPMDefinitionManagerObjectTypeTree(from util)BPMProcessprocessMap1.10.nProcessDefManager(from wapi)ProcessDefManagerFileImpl(from processdef)devProcessreadyProcessWAPIFactory(from wapi)de
7、fManagerMap1.10.n模板文件以XML 文本文件形式存储在文件系统中,文件后缀为.process。每个模板类都有toXML() 和 fromXML() 方法;通过调用BPMProcess 的 fromXML() 完成流程模板XML文件到流程类对象的装配,调用BPMProcess 的 toXML() 完成流程对象到XML 文件的存储;BPMDefintionManager负责完成流程模板的加载和存储动作。模板文件分为开发中模板和可执行模板,流程模板管理器ProcessDefManagerFileImpl 类对象存储了一个流程引擎中的所有开发中和可执行的流程模板。ProcessDefM
8、anager 对外提供统一的流程模板访问接口。WAPIFactory 根据配置文件完成多个流程引擎的流程模板管理器的装配。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 24 页 - - - - - - - - - 5 流程模板 XML 文件格式说明流程模板 XML 文件不作为对外接口,只是用于流程引擎内部。为扩展方便和解析效率,没有定义对应的XML Schema 。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - -
9、- - 名师精心整理 - - - - - - - 第 8 页,共 24 页 - - - - - - - - - 9 。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 24 页 - - - - - - - - - 10 数据变量定义DataTypeManagerDataTypeMeta1dataTypeMap0.ndataTypeConfigread/writeDateDataFieldFileDataFieldIntDataFieldNumberDataFieldSele
10、ctDataFieldTextDataFieldCustomDataFieldBPMAbstractNode(from definition)DataField11metadata0.ndataFields1流程节点中的变量定义都是DataField 派生类对象,DataField 派生类的类型由元数据DataTypeMeta 对象描述。 DataTypeManager 负责元数据对象的存储管理。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 24 页 - - - -
11、- - - - - 11 模板定义语法检查在流程模板定义文件加载、从流程设计器传入时,有时需要检查流程定义是否完整合法,此功能通过 ProcessChecker类对象和模板定义类提供的check()方法完成。用户和组织机构管理设计目标业务流程中的人工任务如何分配给具体的组织或个人执行,根据业务系统面对的行业以及功能范围不同会有很大的区别。作为通用型组件的工作流引擎,需要一个抽象的模型来统一解决以上问题。Party 模型Party(参与者)模型是现有比较成熟的解决以上问题的用户对象模型。在Party 模型中各种不同类型的组织和个人都被抽象为参与者(Party) ,从而能够在系统内部方便的对这些对
12、象进行统一的控制。用户、组织与组织类别为了方便理解和使用,Joinwork的 OrgManager 接口对外使用了:用户(User)/组织(Group) /组织类别( GroupType)三个概念:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 24 页 - - - - - - - - - 12 可以通过例子来看看业务系统的现有组织对象模型如何映射到用户、组织和组织类别这三个概念上。假设业务系统由一个机构管理模块负责维护组织的部门人员结构信息,如果有业务流程在运行中需要
13、使用这些信息做任务分派的话,我们就需要在定制的OrgManager 实现类中将部门人员结构信息提供给引擎。通过新建一个“Department”的组织类别,然后将所有的部门转换成组织(类别为Department) ,部门中的员工作为组织中的人员即可。如果同时业务系统内还有一个角色管理系统,某些业务流程的任务分派需要使用角色信息来完成。 那我们可以再定义一个新的“Role” 组织类别, 把具体的角色 (如系统管理员/xxx岗位)作为组织导入工作流系统即可。通过类似的方式我们能把多个组织对象模型同时映射到引擎的参与者模型上,供流程模板设计时和流程运行时使用。对一个具体的任务分配我们也可以实现跨不同的
14、对象模型,比原有对象模型灵活了许多。比如:执行任务A 的用户可以指定是部门A 和角色 A 的集合。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 24 页 - - - - - - - - - 13 相关类图GroupType(from resource.api)OrgUserUser(from resource.api)Group(from resource.api)OrgGroupDAOOrgGroupTypeDAOOrgManagementImplOrgDataUt
15、ilDataUtil(from database)OrgGroupUserDAOOrgManagement2(from resource.api)OrgManagement(from resource.api)OrgChangeListner(from resource.api)listners1.10.nWAPIFactory(from wapi)OrgMap1.10.nOrgManagement 接口只提供了对组织信息访问的只读接口。而 OrgManagement2 是组织管理的可编辑接口,此接口由管理控制台使用。希望通过管理控制台页面改变组织信息的组织管理模块可继承此类OrgManage
16、mentImpl 是组织机构管理的具体实现类,它通过OrgDataUtil 实现组织和用户 信 息 的 数 据 库 存 储 操 作 。 OrgUser 、 OrgGroupDAO、 OrgGroupTypeDAO和OrgGroupUserDAO分 别 是 用 户 表 (org_user) 、 组 织 表 ( org_group ) 、 组 织 类 型 表(org_grouptype )和用户组织关系表(org_groupuser)的映射类。对于流程引擎来说,OrgManagement 接口的实现类起一个适配器(Adapter)的作用,外部系统的各种用户或人员的组织形式(组织机构/岗位 /角色等
17、),都可以通过此Adapter 映射到 Joinwork 引擎使用的参与者(Party)模型。这样业务系统各种特定的组织类型就可以通过编写定制的适配器( OrgManager 实现类)将外部用户对象模型提供给流程引擎使用。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 24 页 - - - - - - - - - 14 流程引擎在启动时或者外部系统通知引擎重新加载参与者信息时,引擎会通过OrgManagement 实现类将参与者信息加载一次,在正常运行过程中,引擎使用C
18、ache的信息以提高性能。参与者权限管理相关类图在 运行 时 , 流程 模 板 定义 中 的BPMAbstractNode类的派生类名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 24 页 - - - - - - - - - 15 (BPMHumenActivity/BPMProcess/BPMStart等)中的Acl 对象,会根据节点中的参与者定义信息和角色权限的配置信息生成一张访问控制列表acl。RoleManager 类对象负责存储和加载配置文件中的角色权限,并为
19、访问角色信息提供接口方法。引擎的运行流程引擎ProcessEngineImplProcessEngine(from wapi)CaseManagerRoleManager(from role)LicenseManager(from license)ProcessPoolExecutListnerListcaseManager1.11.1processRoleManager1.11.1taskRoleManager1.11.1LicenseManager1.11.1processPool1.11.1listener1.11.1ExecuteListener(from api)Dispatcher
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年Joinwork工作流引擎总体设计 2022 Joinwork 工作流 引擎 总体 设计
限制150内