BPM向左,工作流向右(二)工作流系统杂谈

当 面对一个完整的工作流系统时,你可能会被它众多的功能所困惑:流程流转模式、时间服务、组织适配、表单权限等等。但是如果我们转换一种思路,首先从用户使 用的角度来进行分析,工作流系统的组成就会变得异常清晰。实际在现实开发中,整个系统也是由用户的业务需求一步步迭代而来。

 

一、        从用户的角度分析工作流系统的组成

这里的用户分为两类:一类是应用系统开发人员(以后简称开发人员),一类是应用系统的最终用户(以后简称最终用户)。对于最终用户而言,工作流系统往往是不能直接使用的,它需要由 IT 部门的开发人员嵌入到应用系统中。开发人员才是工作流系统的直接使用者,这造成了问题:工作流系统更多关注于开发人员的需求,例如如何快速开发、如何更好的嵌入业务逻辑等等,而最终用户的需求被或多或少的忽略了。


这里从最终用户的角度进行分析。

 

1、                    面向开发人员的流程设计器

最 终用户通过流程设计器对业务流程进行描述,实际是一个流程建模的过程。理论上,业务分析师完成这个业务流程建模的过程,并且业务分析师往往被假定为非技术 人员。对于业务分析而言,流程建模通常是抽象的,一定程度上是模糊的,建模的目的在于通过图形的形式向其他人解释一个业务的过程,图形只是一种方式,采用 它只是它更易于理解和易于沟通,实际类似于 DSL 。实际上企业的规章制度、文字描述的执行流程都是对业务流程具体的描述方式。

 

对于工作流而言,这个建模所产生的流程是需要被引擎执行的。这就要求流程中每一个节点的定义都是要有明确含义的,它需要被计算机明确而准确的解释。同时,出于集成业务系统的需要,流程模型定义往往带有很多额外的属性。

 

所以现实中的流程设计器往往属性配置繁多。导致最终用户在打开设计器后根本无从修改和建模,他需要关注很多与业务无关的配置,无意中的修改往往产生流程无法运行的后果。

 

2、                    工作项列表

即 任务列表。工作流系统通过工作项列表进行人工任务的分配。最终用户通过该列表签收、处理每天的工作,工作以工作项的形式展现。对于工作项,用户有着多种业 务操作:签收、完成提交、收回、回退等等。对于分配给他人的工作项,也存在着多种业务操作:催办、提醒、时间限定等等。

 

3、                    流程追踪

用户在处理工作项时,对该工作在流程中所处的位置进行查看,了解当前流程的状态和执行情况。一般情况下,流程追踪以图形化的方式展现。用户通过不同的图标和标示来区分流程中各个节点的状态和参与者信息。

 

4、                    流程实例管理

包括流程实例、节点实例、工作项实例的管理。改变状态,包括了挂起、重新启动、终止、跳转等等。主要目的在于对流程人为执行错误进行人工干预以及对流程信息的监控。

 

二、        系统架构

从用户的角度分析完工作流系统的组成,这里从开发人员的角度分析工作流系统的架构。系统架构里的每一部分是如何与用户使用的部分进行对应,以及每一部分在实现时需要注意的事项。

 

1、                    整体构成

如图,各模块分层组织,位于上层的模块依赖于底层的模块。正如你所看到的,流程定义模型位于整个工作流系统的最低层,因为它是整个工作流系统的基础。


 

流程定义模型:定义对流程进行描述的所有对象。因为对流程进行描述的本质就是利用这些模型进行建模,所以这些模型对象的实现直接决定着工作流系统对流程的描述能力。

 

组 织结构适配器:工作流系统在与业务系统进行集成时,需要进行组织适配,通过这一过程将业务系统里的组织机构导入到工作流系统里。具体实现时,工作流系统需 要建立起自己的组织机构模型(包含在流程定义模型里),要适应多种业务系统,往往需要建立多套模型,根据具体情况进行切换。有多种方式完成这个适配,最简 单的方式是利用 SQL 配置读取数据进行语义转换。

 

流程设计器:供用户使用的可视化图形工具。每种图形都对应着一种流程定义模型。具体的实现有 Swing SWT ,但是基于 AJAX WEB 设计器无疑会提供更好的可用性。

 

流程执行引擎:将流程定义模型解释为流程实例模型。利用这些流程实例模型完成流程的调度和执行。在工作流系统里,执行引擎是整个系统的核心。实现时不仅需要考虑各种流程调度的实现,还要考虑执行的效率、缓存、日志等等。

 

工作项引擎:解析参与者定义模型和工作项定义模型,生成相应的工作项。对用户对工作项的操作作出响应。

 

WEB 应用:工作流系统的 WEB 展现。包括了工作项列表、流程追踪以及流程实例管理的操作和显示。

 

流程仿真:对建立好的流程模型进行运行仿真,模拟流程模型的执行过程。目的在于发现流程建模过程中的疏漏,发现由此导致的流程不能运行。

 

时间服务:提供对整个流程实例执行时间和任务执行时间的控制,根据规则触发相应的时间事件,例如任务超时、任务预警等等。根据规则自动触发启动新的流程实例。

 

业务集成:提供工作流系统与业务系统的契合方式。典型的实现包括通过注册事件监听器和提供接口抽象类调用业务系统代码、提供 API 给业务系统调用、工作项驱动业务表单和脚本引擎执行业务逻辑脚本等等。特定于工作项驱动业务表单,为方便开发,绝大多数的工作流厂商都提供了电子表单的实现。

 

2、                    基于事件的流程执行引擎

流程执行引擎的主要职责就是负责流程的调度和执行。

 

首先需要将流程定义模型解释为流程实例模型,在定义模型和实例模型之间建立起对应关系。一个简单的对应关系如下图所示:


 

执行引擎将流程定义模型的属性读取到相应的实例模型里,由实例模型完成流程的调度和执行。当然,上图只是一个简单的描述,实际情况要复杂的多,特别是节点定义( ActivityDefinition ),根据实际应用,往往存在着多种类型,典型的有开始节点( StartDefinition )、任务节点( TaskDefinition )、自动节点( AutoDefinition )、分裂节点( SplitDefinition )、汇聚节点( JoinDefinition )、结束节点( EndDefinition ) 等等。这些节点的实例根据类型的不同执行不同的逻辑。其中,分裂节点实例和汇聚节点实例负责流程的调度,它们决定流程的流向,通常情况下,它们会调用一个 脚本引擎执行一段脚本来决定流程的流向,同时,也会提供对外暴露的接口,由业务系统实现,接口返回的结果决定流程的流向。任务节点实例和自动节点实例则负 责流程的执行,为保证流程执行引擎职责的清晰以及对外围设施的松耦合,它们只是发布相关的事件,通过事件发布 / 订阅机制来触发具体的逻辑执行。


 

典型的事件有流程启动事件、流程结束事件、进入节点事件、离开节点事件、时间事件等。例如,任务节点实例的进入节点事件将会触发工作项引擎生成工作项( Workitem ),并触发时间服务器开始计时。

 

3、                    基于充血模型的工作项引擎

对最终用户而言,大部分的业务操作都集中在对工作项的操作上。常见的包括工作项的提交、收回、委派、追加和退回。这些操作从系统设计的角度不仅涉及到工作项( Workitem )对象内部状态的变化,而且影响到流程执行引擎的调度以及相关的其他工作项对象状态。

 

工作项引擎的职责包括两部分。第一,监听任务节点实例的进入事件,生成工作项实例。第二,处理上面提到的各种工作项操作。


 

实现时,工作项生成器根据任务参与者的执行模式典型的分为四种情况:

 

竞争参与, 当有多个参与者参与该任务时,产生竞争,谁先开始这项工作,就由谁负责完成该工作。此时,工作项生成器生成多个工作项实例,在某个工作项完成时会终止其余工作项。

顺序参与, 多个参与者按照指定的顺序完成该工作。 A完成之后由 B完成, B完成之后再交给 C完成。此时,工作项生成器生成多个工作项实例,根据顺序依次激活各个工作项。

共同参与, 多个参与者同时对工作进行处理。此时,工作项生成器生成多个工作项实例并全部激活。

智能决策, 存在多个参与者的情况下, 工作项生成器 能够根据一定的指标(由数据分析,例如人员的处理效率,工作负载等等)和规则来决定该节点的参与者并为其生成相应工作项。这里涉及到算法。

 

对于工作流系统而言,各种流程实例对象都是充血模型。特定于各种工作项操作的处理,此时的工作项对象亦设计为充血模型,将业务逻辑封装到领域模型里,简化领域模型之间的交互,省去频繁的 get/set 。由领域模型再委派到具体的处理类里。

Client->(Business Facade)->Domain Model->service->Data Access(DAO)

 

4、                    工作项驱动业务表单的业务集成方式

最终用户对任务的处理,必然由工作项对应着某一业务表单。用户在工作项列表里选择自己需要办理的工作项,由工作项导航到业务表单。

 

特定于 WEB 系统,业务表单的导航由 url 完成。在流程定义模型设计时,将 url 设置入节点属性,生成工作项时将此 url 保存在工作项对象属性里。点击工作项详细信息时即打开该 url ,完成到业务表单的导航。业务表单页面通常需要引入处理工作项逻辑的父页面或者导入定制的 js 库,这些父页面或 js 库由工作流产品提供。这样,对于业务表单编写,工作流逻辑是透明的。

FlowPortal BPM 流程管理 FlowPortal采用微软.net技术,能进行可视化免编程的业务流程管理(BPM)平台,经上海易正信息技术有限公司经过10年研发而成。 现该系统已广泛应用于政府、制造、零售、服务、地产等行业领域。 一、能自实施的BPM系统平台 借助内置的微软asp. net规格的表单设计器XForm Designer及其附带的丰富的表单控件元素,IT人员无需编程就可以快速实现表单的电子化迁移,并且制作出来的电子表单使用友好,功能丰富具有专业水准。 一体化完整的BPM解决方案,彻底的免编程设计,从拖拉式流程设计器、表单设计器、报表设计器均符合免编程设计原则,并且,所有产品包括组织结构管理,电子表单、流程设计、报表设计全部符合微软产品用户已有的使用习惯。 基于为广大IT人员熟悉的通用标准,流程描述语言使用微软C#标准,表单使用微软asp. net标准。 、充分整合现有资源 FlowPortal. net开放的体系架构允许将企业现有IT系统中的组织架构、用户信息,整合到BPM系统使用,不管他们是位于AD、HR还是位于特有的IT系统内。 业务流转时,可以集合存储在不同系统中的数据建立复合业务实体,比如:存储在ERP中的客户、产品信息,存储在HR系统中的人事信息等等 自动化不同系统中业务数据的处理,比如:采购审批通过时,自动在ERP中生成PR单,人事入职流程中,自动在各个系统中建立用户信息。 借助可插拔的体系架构,通过第三方开发,实现对现有信息和系统的利用,比如利用企业特有业务系统存储在InfoSys数据库内的信息。 通过可嵌入的组件,将BPM集成到SharePoint、企业现有IT系统的框架内。 三、实现无限可能 流程定义时,赋予企业用户使用微软C#扩展流程功能的能力,比如用C#表达逻辑实现一个会签表决规则,又如:流程提交时使用HR系统中的数据验证申请合法性。 表单设计上,借助微软asp. net技术,扩展表单功能,由于表单设计器生成的是标准的asp. net表单,使得企业可以借助微软asp. net的强大功能实现复杂的需求。 可插拔的体系架构,允许企业将BPM体统和企业现有业务系统整合到一起,比如:利用企业现有的弹出式消息系统发送BPM通知消息。 四、有效保障流程管理工作持续、深入开展 可靠、稳定、高效的系统使得BPM系统深入人心 快速实施能力、良好的最终用户使用体验让IT部门轻松,使用者满意,会促使更多的流程需求被建议并实施优异的可扩展能力,为确保IT部门始终有能力满足最终用户的各种需求提供保障。 FlowPortal. net的客户都在持续深入得使用BPM系统,新的流程需求被持续提出并实施上线,不断拓展到新的工厂、事业部门、甚至拓展到集团内其它国家和地区的工厂、企业。 五、随时随地获得所需信息 企业可以使用内置的报表工具按需定制报表,实时查看企业关键业务数据。 FlowPortal. net的报表可以执行数据的钻取,渐入式分析,查询,图形化展示。 FlowPortal. net的报表可以跟据流程的权限定义,使得每个部门的领导只看到各自管辖部门内员工所发起业务的统计数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值