流程驱动面向服务的架构

来源:百度文库 编辑:神马文学网 时间:2024/04/24 20:25:43
流程驱动面向服务的架构

 

分离关注,松散耦合是软件系统开发的一个目标,Aop & Ioc是这种思想很好的诠释。下面要介绍的SOAWorkflow是这种思想更高层次的应用。

 

传统的软件系统中,业务逻辑没有被分离。直到Workflow引擎的不断开发,业务逻辑才逐渐从整个系统中被单独分离。加上SOA这一概念,让业务逻辑采用松耦合的调用机制,粗粒度的服务也让系统的使用者更易操作。本人将两个概念结合起来,谈如何用Workflow来驱动SOA

 

引言

 

传统的三层架构(表示层,业务逻辑层,数据访问层)应用由于业务流程逻辑被硬编码于程序代码中,并且采用了紧耦合功能调用机制,使得应用系统缺乏敏捷性和互操作性。本文提出了一个流程驱动面向服务的架构,它采用了松耦合web服务调用机制。它使得系统设计不再是以对象,接口和组件等技术术语为中心,而是以流程和服务为中心。它将流程提升到架构的中心地位,形成独立的流程层,采用业务流程管理系统实现流程的独立管理和控制,提升了流程动态调整的能力,从而大大提升了系统的敏捷性。

 

传统的业务流程处理问题

 

传统的两层或者多层应用架构存在以下问题:

 

1.业务流程硬编码于程序中,无法可视化,不利于分析和设计

2.无法方便地修改和调整代码以适应流程变化。

3.流程设计到流程实现需要大量人工转换,效率低,代码可能脱离需求

4.多种应用标准(COM, J2EE)导致互操作和集成困难

5.系统集成采用转有技术,成本高,维护困难

 

新技术的解决之道

 

本文为解决长期以来困扰企业系统建设中存在的系统隔离,缺乏灵活性等问题,提出了一种不同于传统应用架构的新的应用架构,称之为流程驱动面向服务的架构——PdSoA。该架构充分采用了XML, WebServiceBPM(Business Process Management)等新的技术,为构造敏捷的,互操作的应用打下了坚实的基础。

 

首先,XML为数据描述提供了一种通用的,开放的,平台无关的表示方案,它已成为系统间数据交换的标准格式。

 

其次,WebService技术的出现极大的简化了程序功能的调用,特别是跨组织(异构)的远程调用,这对跨组织的应用集成具有重要意义。

 

但是,离散的,孤立的Web服务尚不足以发挥最大的价值,而将各种相关的Web服务组合连结起来,形成完整的业务流程将会给企业带来突破性的效益。此时BPM可以发挥它的威力了。它使得应用开发范式由传统的面向对象的范式转变到以流程为中心的范式,开发人员直接使用与现实世界相符的流程概念进行设计,设计结果可以在BPMS中立即执行,无需复杂的人工转换。

 

PdSoA架构组成

 

由于WebSerive技术的成功,许多厂商提出了SOA的概念,SOA强调了服务(通常由WebService实现)在应用架构中的重要地位。但仅有服务尚不够,所以本文提出了一种新的应用架构PdSoA

 

表示层                                                 用户接口

 

业务流程层                        业务流程,业务规则           |

                                                                              |      (服务注册库)

业务服务接口层                                  业务服务                    |

 

业务服务实现层                 远程调用,业务组件,Web服务

 

数据访问层                          数据访问组件或服务

 

数据源层                                 DB, XML, File

 

 

整个PdSoA架构的运行过程大概是这样的:

 

1.用户通过用户接口启动相应的业务流程(也可以由其他流程或组件启动)

2.业务流程编排调用相应的业务服务(通常实现为Web服务)

3.业务服务代表系统内部功能对外的业务接口,它调用下一层的业务组件

4.业务组件调用数据访问组件访问数据库

5.不同的数据源可以通过数据转换服务形成全局性的联邦数据虚拟视图,供上层调用

 

PdSoA架构不同于传统架构之处在于:

 

1.        首先,它多了一层业务服务接口层(WebService实现)。服务设计面向业务而非技术。该层通常以粗粒度的WebService暴露系统的业务功能,而非传统的细粒度的组件和对象。这样,即使业务人员也可以编排业务服务。

 

2.        其次,它将业务流程抽象出来,形成一种独立,可视化的业务流程层。

 

a)          流程可以由业务人员(而非技术人员)可视化设计。例如可以用BPMN可视化建模。

 

b)          设计好的流程几乎可以直接部署执行,解决了传统上从设计到实现的转换问题。建好的模型可以由BPMS自动转化为一种非可视的模型(BPEL4WS)来表达的,然后BPMS可以解释相应的BPEL4WS并执行之。

 

c)          极大地提高了流程动态调整的能力。由于流程可以以可视化方式表达(BPMN),不再固化于程序代码中,业务人员可以方便的以可视化方式修改流程并由BPMS执行,整个过程在最好的情况下甚至无需编码。这就为业务人员调整流程打开了新的途径,动态调整流程以适应业务变化已不再是业务人员和技术人员的梦魇。

 

d)          更好地控制业务流程。使用流程服务可以提供一个中心服务,该中心服务控制器它服务的交互,从而可以查询运作信息和管理信息,这将进一步改善系统的管理和维护。

 

e)          减少依赖项的数量。当许多服务直接交互时,这些服务必须辨别出彼此的服务接口。这样,在合并更多服务时,依赖项数量将按服务数的指数增长。而利用流程服务提供的中心管理点,则可以形成星形拓扑,其在系统中保留的依赖项总数与涉及的服务呈线性比例关系。

 

f)           简化外部通信。仅向外部公开一个入口点,即流程服务入口点。

 

g)          简化异常处理。

PdSoA中,以BPEL4WS表达的业务流程本身也可以作为一个Web服务对外展示自己,供其它系统以一致的方式调用,这种基于业务流程的服务称为流程服务。不管是业务服务还是流程服务都可以将自己注册到服务注册库,供其它系统查找。业务流程层的业务规则是流程执行时所遵循的规则,由BPMS维护。

 

BPMS

 

如上所述,PdSoA架构将业务流程提升到架构的中心地位,专门增加了一个流程抽象层来表达和管理流程,但这需要一类特定的软件系统来管理和控制业务流程,这就是业务流程管理系统BPMS。在BPMS中,业务流程成为新的数据类型,它不仅可以被IT人员理解和操纵,而且可以直接被业务人员理解和操纵,在BPMS中创建的流程模型几乎不需任何编码就可以立即执行。BPMS应该具有的基本功能包括:定义业务流程,运行业务流程,监控业务流程,集成人,流程和应用,仿真业务流程,实现业务流程规则引擎。

 

应用开发范式的转变

 

随着企业开发的业务服务越来越多,业务服务将成为企业最重要的基础设施和资产。

 

传统开发范式

建立业务模型 -à 系统设计(业务模型转化为设计模型) -à 系统实现(编码)-à 系统部署与执行。

 

基于PdSoA架构的开发范式

建立业务模型(主要是业务流程模型) -à 直接部署与执行。

 

对比上面两种开发范式,可以看出,基于PdSoA架构的应用开发范式由于采用了BPM技术,其业务模型在设计好后可以通过BPMS直接部署和执行,而无需象传统范式那样经过繁琐的业务模型到设计模型的转换以及后续地编码,这就极大的简化了开发过程,提高了开发效率。

 

PdSoA架构支持标准

 

PdSoA架构相对于传统三层架构实际上增加了两个技术层次,一是业务服务接口层,二是业务流程层。目前,业界已开发了比较成熟的技术标准支持这两个层次,从而使PdSoA架构具有了广泛应用的可能性,支持这两层的技术标准栈如图所示

 

流程符号         BPMN

流程实施         BPML        (BPML4WS)

流程接口         BPQL,UDDI,WSCI,WS-Security,WS-Transaction,WS-Coordination

服务描述         WSDL

服务传输         SOAP

 

结语

 

传统的三层架构应用由于流程逻辑硬编码与程序代码中,使得程序难以动态调整以适应业务流程的变化,缺乏敏捷性;又因为采用了紧耦合的技术,使得程序互操作性差,难以有效集成。而流程驱动的面向服务地架构采用了松耦合的Web服务技术,大大提高了系统的互操作性,同时,由于采用了现代BPM技术,将流程独立出来,实现了对流程的独立管理和控制,使得流程的动态调整得以实现,系统敏捷性得到巨大提升。