NetBPM工作流的架构设计及实现浅析工作流的架构设计及实现浅析
NetBPM组件接口
NetBPM由一系列的组件构成,每一个组件都实现一个核心接口(采用Facade Pattern)。不同组件各自负责的核心功能根据
WfMC规范而来。
NetBPM接口图:
为流程开发者提供的接口(Process Developer):该接口负责加载流程定义到NetBpm引擎。首先,流程开发者依照nPdl创
建一个流程定义,并将其打包成流程定义压缩包(该包包含一个业务流程的所有信息),然后通过NetBPM Web界面或者是
其他方式把流程定义压缩包加载到NetBPM引擎,在加载过程中流程定义压缩包将会被解析被保存到NetBPM数据库中。
为用户提供的接口(User):这里用户表示执行流程的人。流程运行主要有2种行为:开始一个流程和执行一个活动
(activity)。开始一个流程将创建该流程的一个流程实例,一个流程实例对应流程定义的一次执行。一个流程实例包含了一
个或多个并行的flow-of-execution(见flow)。对于处在activity-state(活动节点,见nPdl)的flow,系统一定会指派一个具体的
人(或者组)或者第三方来执行活动(activity)。执行活动是Execution Interface的第二种行为。当然了,运转接口还会实现
一些其他的方法如获取任务列表,获取有效流程定义列表等。
外部IT系统(External IT Systems)和NetBpm引擎之间的接口:外部IT系统能以2种方式实现和NetBPM的交互。
系统发起交互:系统直接和外部IT系统交互。当系统想要触发流程中的某一个action时,它必须使用上面提到的Execution
Interface。
流程发起交互:对于流程发起交互这种类型来说,需要有Interactors。这些Interactors是流程定义的一部分,它包含在流程定
义包内(实际上Interactors就是能够访问FlowContext的.NET程序集,也就是我们后面要说到的包含委托类的程序集合)。
Interactors在FlowContext(FLOW运行上下文环境)和外部IT系统之间建立起了通信渠道。
组织架构数据(Organisational Datastore)和NetBpm之间的接口:仔细想想,NetBpm是不是还缺了点什么,没错,那就是
组织架构的信息:比如说人、团队、部门、角色等。因为在现实情况中,对于不同的组织结构,组织架构信息可能被保存在不
同类型的数据库中,如LDAP系统,关系型数据库等。为了让NetBPM能够在一个现实的组织架构中实现快速部署,NetBPM
把所有的组织架构信息都聚集在一个组件(Organisation Component)中。这种做法也就是我们通常说道会话门面模式
(Session Fa?ade Pattern),它使得NetBPM访问来自不同数据源的组织架构信息变得更为简单。
下面我们逐步介绍NetBPM的各个组件,下面是NetBpm组件结构图: