工作流模式-工作流数据模式40种

正如语言是人与人之间的沟通方式一样,数据是IT系统之间的沟通方式,语言之间的沟通总 是有效,数据交互却未必,因为除了让计算机理解之外,数据还需要让人理解,IT系统是对现实 生活的映射,也正因为如此,现在数据之间的沟通也在向语言靠拢即语义化(REST/语义网)。

在WfMC的工作流模型里,工作流数据被分为了3类,如图C-1所示。

图C-1 WfMC的工作流数据分类

  1. 工作流控制数据:工作流系统管理的内部控制数据,这些数据包括了与流程实例和活动 实例相关的执行数据和状态数据,例如流程实例的状态、执行时间、工作项的执行者、 执行时间、状态、紧急程度等。
  2. 工作流相关数据:工作流系统使用工作流相关数据确定流程实例的流转条件,并选择下 一个将执行的活动,这些数据由业务系统访问并修改。例如报销流程中的“报销金额”, 这个数据会决定该流程的审批路径;再例如为活动设置的超时时间,这个数据会触发活 动的取消。这些数据是工作流系统需要依赖进行流程流转的业务应用数据。
  3. 工作流应用数据:业务系统管理的业务数据,工作流系统不能访问。

我们遵循WfMC的工作流数据分类,区别是将工作流相关数据根据应用场景进一步细化为3 类并重新定义,如图C-2所示。

图C-2 工作流数据分类

我们将工作流相关数据泛化为为工作流系统能够访问并使用的业务应用数据,分为3类:

  1. 连接业务系统的关联数据:工作流系统与业务系统进行关联的数据,例如特定于Web系统,工作流系统会在每个流程/活动实例里保持有导航至对应业务表单的URL。
  2. 传递作用的业务应用数据:当流程跨越多个业务模块时,需要在模块间传递数据,此时 会利用工作流系统进行传递,在工作流系统里暂时存储或转换这些业务数据。在面向服 务的软件架构中(SOA),工作流系统作为重要的中间件负责服务之间的调用编排,业务应用数据被封装为SDO通过工作流系统在不同Web服务(业务系统)间传递。
  3. 影响路由的业务应用数据:和WfMC对工作流相关数据的定义一致。

流程、数据和组织是工作流应用中最重要的三个方面,它们紧紧地依赖在一起,如图C-3 所示。

图C-3 流程、数据与组织

在以流程为核心模型的软件架构里,系统功能通过流程进行协调,流程面向组织,如图C-4所示。

图C-4 面向组织的流程

流程作为整个应用的入口,流程模型中包含组织模型(部门/人员/角色),流程通过活动定义 界定出应用的各个业务上下文,并由此界定组织中部门/人员/角色的职责、权限和互相协作的规则。

以流程为核心的软件架构有2种应用场景:独立业务应用系统的工作流嵌入式使用和业务应 用系统的企业内集成。

在独立业务应用系统的工作流嵌入式使用中,工作流系统作为内部组件对应用系统进行流程 逻辑的横切。试想一个需要多人处理的电力缴费流程,在引入工作流系统之前,我们需要为每个 业务表单设置一个状态位,以此来进行业务处理状态的跟踪。如果流程固定,那么这样做并没有 什么不好,例如财务软件、海关报关软件等,它们的流程虽然复杂但是不常改变,此时就没有必 要引入工作流系统。但是对于另外一些情况,例如制造业的订单处理、库存管理、政府的协同办 公等,流程经常需要定制修改,此时如果继续由业务应用系统自己处理流程逻辑那么成本将会很 高,如图C-5所示。

图C-5 嵌入工作流的独立应用系统

在使用工作流进行企业内应用系统的集成时,工作流系统作为独立的服务部署。在上规模的 企业里,很多流程会涉及不同的业务功能,例如报价、订单审核、资产核准、绩效评估等,这些 流程经常会跨越不同的部门和业务应用系统。工作流系统此时扮演的就是集成角色,由其通过定 制流程将这些业务应用系统撮合起来,实现企业内各部门的信息流动和协作。此时,用户登录门 户,通过工作流系统推送的统一活动列表导航到各个业务应用系统进行工作,所有应用系统使用 统一的组织模型,如图C-6所示。

图C-6 使用工作流进行企业内应用系统的集成

在以数据为核心模型的软件架构里,流程面向数据,系统功能分散在各个应用系统中,流程 通过编排服务,在不同应用系统间传递/同步数据,以数据进行业务的驱动。流程模型不包含组 织模型,流程的本质是数据流,反映数据的流向,如图C-7所示。

图C-7 面向数据的流程

以数据为核心的软件架构同样有两种应用场景:业务应用系统的企业内集成和企业间集成。

用户登录门户,进入各个业务应用系统进行工作,应用系统之间的数据同步由工作流系统完 成,活动的触发由各个应用系统自己负责,如图C-8所示。

图C-8 使用工作流同步数据进行企业内应用系统的集成

企业间进行应用系统集成,如B2C、B2B流程,需要在企业间同步传递数据。此时,数据的传递是核心,如图C-9所示。

图C-9 使用工作流进行企业间的应用系统集成

以流程为核心模型和以数据为核心模型之间最大的区别在于流程面向的对象。流程面向组织 反映出组织职责的可视化,出发点是企业的管理;流程面向数据反映出跨不同应用系统的业务数 据流,在处理企业间的业务流程时是唯一的选择。实际应用时,经常混搭两种架构风格,例如使 用工作流同步数据进行企业内应用系统的集成,同时在单个应用系统里使用嵌入式工作流。

工作流数据模式共有40种,根据关注点的不同,分为4组:数据可见性模式、数据交互模式、 数据传递模式和基于数据的路由模式。数据可见性模式关注工作流数据的作用范围,讨论到的数 据包括连接业务系统的关联数据和传递作用的业务应用数据;交互模式关注工作流系统各组件以 及外部环境之间可能存在的数据交互种类,讨论到的数据包括工作流控制数据和工作流相关数 据;传递模式关注数据在工作流系统各组件以及外部环境之间的传递方式,讨论到的数据包括工 作流控制数据和工作流相关数据;基于数据的路由模式关注数据影响工作流流程执行的方式,讨 论的数据为影响路由的业务应用数据,如图C-10所示。

图C-10 工作流数据模式的分类

出于统一的目的,我们对工作流数据进行约定:我们使用def var ${变量名}定义变量,同时 def var ${变量名}的声明位置决定了该变量的作用范围。图C-11中,我们在活动B上定义了一个名 为M的变量,表明它的作用范围为活动B,即在一个流程实例里仅活动B的实例可见。我们使用 use(${变量名})表明对该变量的使用;使用pass(${变量名})表明该变量值的传递。图C-11里,变 量M的值被从活动B传递至活动C。

图C-11 工作流数据的约定

对于数据类型,典型的有string、integer、float、boolean、date和time,很多工作流系统使用序列化和反序列化支持存储任意类型的数据类型,如数组、集合和对象。

本文来源:http://www.cnblogs.com/x3d/,转载请注明。
原文地址:https://www.cnblogs.com/x3d/p/15450961.html