基于SCA的ERP系统架构研究
2009-12-11谢天张丹松
谢 天 张丹松
中图分类号:F270 文献标识码:A
内容摘要:本文分析了传统企业资源计划(ERP)系统的局限性,阐述了服务组件架构(SCA)的内涵、构成和特点,最后利用SCA、Web服务、企业服务总线(ESB)和业务流程执行语言(BPEL)等技术对ERP系统的架构重新设计,并提出基于SCA的ERP系统架构。
关键词:ERP 面向服务架构(SOA) 服务组件架构(SCA)
现有ERP系统的局限性
ERP是由美国的Gartner Group Inc公司提出的。ERP的概念原本十分狭窄,仅仅局限在制造业的企业资源计划方面,但是随着供需链管理(SCM)和企业业务流程重组(BRP)等管理理论的引入,ERP所管理的对象包括了企业人、财、物、信息等所有的资源和产、供、销等所有业务。ERP扩展了企业内部各种管理功能的信息集成,而且超出了企业本身的范围,实现了整个供需链上所有相关业务的信息集成。随着全球经济已逐渐从以制造经济为主的工业社会进入以服务经济为主的后工业社会,市场经济下客户对产品和服务的个性化需求的增加,企业随需应变、按需服务的能力变得越发重要。以产品为中心的传统ERP系统在面临迅速变化的服务经济下全球市场时,凸显出局限性,主要表现为:
设计架构僵化,系统业务灵活性差。传统的ERP系统设计是从结构化、基于组件结构以及三层架构等程序分析设计架构发展而来的,是建立在企业固定的职能组织结构上的。这种僵化的非流程的组织结构固化了ERP系统的系统结构,限制了系统的灵活性。
异构系统之间没有统一的集成标准规范,产生信息孤岛。信息孤岛的产生导致供应链中的节点企业无法进行信息资源整合与共享,影响了竞争力的提升。所以,传统的ERP系统必须在完善内部集成的同时,实现和供应链上下游、协作企业和客户信息的外部集成。
系统维护和二次开发困难。从维护和二次开发的角度看,目前各个ERP软件提供商提供的成品软件功能固定,很难根据新管理模式下的业务要求重新构建符合要求的ERP系统。要实现ERP功能,无论是由原来的软件提供商进行二次开发,还是购买新的ERP软件,成本都很高昂。
为了解决现有ERP系统不能灵活地支持供应链管理功能,难以与企业之外的供应商、分销商集成的问题,以及异构系统之间的互操作,本文提出了基于SCA的ERP系统体系结构。
SCA的内涵、构成及特点
(一)SCA的内涵
SCA(Service Component Architecture,服务组件架构)是一个规范,它描述用于使用SOA构建应用程序和系统的模型。SOA(Service Oriented Architecture,面向服务架构)指面向服务的企业应用体系结构,是一种分布式的软件架构模型。在该模型中,任何业务功能都被作为提供的一个服务使用,应用程序的不同功能(服务)通过这些服务之间定义的结构和合约联系,应用系统可以看作是一系列服务的集成。ERP系统由财务、资产、人力资源、客户关系、生产、成本、销售、供应链等多个子系统组成。子系统可以单独存在,完成业务需要;也可以相互之间联系,互相提供信息来完成。基于ERP系统的这种特性,本文利用SOA架构将各个模块中的业务处理抽象为服务组件,不仅本组织的ERP系统可以互相使用该服务组件,而且外部组织同样可以在授权的情况下使用,达到组织间的协同。
SCA是一个用于构建SOA应用和解决方案的编程模型,在应用集成上不但发展了Web服务技术,还能较好地解决集成过程中的服务组装问题。它的基本思想是:业务功能总是由一系列的服务组成,这些服务装配在一起就构成了能满足一定商业需求的应用和解决方案。而这些服务既包含专门为该应用创新的新服务,也包含来自既有系统和应用的可重用业务功能。SCA的目标是为这种基于服务的系统建立一个简单的模型。
(二)SCA的构成
SCA是基于Component(组件)的复用,组件是其最主要的组成部分。在SCA规范中,相对较为独立的组件只有三个,粒度由小到大分别是Component、Composite和Domain,分别对应系统的三个不同层面。Component是SCA规范中最基本的元素,是粒度最小的执行单元或者实现单元。一个SCA组件由四部分构成。
服务(services)表示由本组件提供给其他组件使用的业务功能;实现(implementation)指提供了特定业务功能的代码段;属性(properties)是一些影响业务功能的数据值,可以通过设置这些属性值对实现进行配置;引用(references)表示本组件的实现所依赖的由其他组件提供的服务。
一个Composite构件内部的组件彼此连接,如同创建一个运行在同一进程中的紧耦合的应用程序。构件包含0...n个Component, Service, Reference, Wire, Property, 以及包含其他的Composite。一个构件由若干组件组合而成,这些组件之间通过连接(Wire)相连。构件通过提升(promote)内部组件的服务、引用和属性来形成自己的服务、引用和属性。一个服务是以接口(interface)的方式提供的,比如Java接口和WSDL端口类型。而一个服务的访问方式是用绑定(binding)来描述的。类似地,引用也通过绑定和接口去调用它所依赖的服务。
(三)SCA的特点
1.松耦合。SCA中服务的定义、实现和使用是相分离的。组件和构建以接口的方式提供服务,服务的调用者只需要看到服务接口,而无须知道组件和构建的内部细节。组件在提供指定服务的前提下可以任意选择合适的实现技术,并且可以更换实现而不影响服务调用者。同一个服务还可以通过不同的绑定,也就是连接方式,供不同的客户端使用。这种松耦合的结构使得SCA应用灵活而易于扩展,适应多变的现实,实现对应用部件的按需调整和扩展。
2.异构。SCA提供了统一的调用方式,支持宽泛的用于服务组件实现和连接的各种技术。在服务实现方面,SCA支持众多的编程语言,包括传统语言如Java,C++和BPEL,脚本语言如PHP和JavaScript,以及声明性语言如XQuery和SQL。对这些语言的支持还包括支持其所使用的框架和环境。在服务连接方面,SCA支持常见的通信和服务访问技术,如Web服务、消息系统和RPC。
3.重用。SCA组件和构件是SCA应用的构建单元,就好比堆积木一样,组件和构件这些“积木块”可以用不同的组合方式构成不同的应用,而既有的非SCA系统也可以通过作为SCA组件实现的方式很方便地加入到SCA系统,成为构建其他应用的“积木块”;或通过一定的方式连接到SCA系统,成为服务的提供者和消费者。
基于SCA的ERP系统体系结构设计
按照SOA架构模型,结合ERP系统的业务需求,本文提出了基于SCA技术的ERP系统架构(见图1)。该架构主要包括6个服务模块,每一模块又包含一些有特定业务功能的SCA业务服务组件和构件。
首先,在流程自动化方面,用BPEL描述的主要业务流程定义为SCA服务组件类型,通过BPEL引擎的运行来动态编排和引用其他模块中需要的服务组件(构件)。其次,在用户交互方面,模型提供了用户交互服务。最后,在实现服务集成和数据传输方面,企业服务总线(Enterprise Services Bus,ESB)支持各种服务在消息总线上的热插拔(可通过多种传输方式,如MQ、MQ JMS、JMS、Web Service、HTTP、SCA、SOAP等),完成格式转换、消息路由等功能。而对数据源的访问,主要是通过SDO数据图的方式进行的(SDO是SCA的姐妹规范,SCA主要负责服务的标准化,SDO主要负责数据标准化)。
对于系统原有的遗留子系统功能模块,只需利用WSDL文档描述为标准接口,通过绑定功能将其导成SCA型服务组件,再由BPEL描述和执行的主流程组件直接调用,从而对现有系统的重构和业务流程重组,最终实现灵活的业务流程管理。
遗留系统中包括ERP系统现有的许多子系统,如生产管理系统、销售管理系统、库存管理系统等。为了实现对这些系统功能按业务流程灵活的应用,本文提出基于SCA技术的ERP系统详细逻辑架构(见图2)。
通过绑定和利用WSDL文档标准化接口,把现有子系统按各自业务功能封装为粗粒度SCA服务构件(服务模块);把子系统的内部子功能封装为细粒度的SCA服务组件。一个粗粒度的SCA服务构件由多个细粒度的SCA服务组件组合而成,如销售管理构件包括销售报价、客户订单、客户出货等组件。同时,每个服务组件客户端按照SDO标准通过DAS(Data Access Service,数据访问服务)访问本地或网络数据库(即使是异构数据源—关系数据库RDB、XML数据等),并对数据库表进行查找、更新、保存和删除等操作。
综上所述,基于SCA的ERP系统架构,把ERP系统模块利用WSDL文档描述为标准接口,通过绑定功能将其导成不同粒度的SCA服务组件和构件,再由BPEL描述和执行的主流程组件直接调用,从而实现对现有系统的重构和业务流程重组。同时,通过企业服务总线完成格式转换、消息路由等功能,最终实现供应链内灵活的业务流程管理。
参考文献:
1.陈启申.知己知彼知理知用[M].电子工业出版社,2007
2.王紫瑶,南俊杰,段紫辉等.SOA核心技术和应用[M].电子工业出版社,2008
3.曾志常.基于SCA模型的应用集成架构研究[D].广东工业大学,2007