0引言
企业应用集成(Enterprise Applications Inte—gration,EAI)是企业在实施各类信息系统后必然的需求。EAI的目的是集中企业的信息系统资源,包括数据资源和功能资源,减少重复投入,降低数据和功能冗余带来的数据冲突和功能冲突。同时,利用EAI技术可以实现企业间的业务集成和企业到企业的电子商务模式(Business to Business,B2B)商务集成。例如,供应链管理、敏捷制造等领域的应用。根据应用系统的不同,EAI的实现方法分以下几个层次:
(1)基于数据的集成。即通过访问数据库的方法来实现系统间的数据集成。这种方案对应用资源的重复使用率低,对同一组数据的类似处理方法会在不同的应用系统中重复开发,引起了系统内的功能冗余。
(2)基于功能的集成。这类方法实现了应用层的集成。但是调用的接口开发是一对一的。如果集成的系统数量比较多,则接口的开发工作量将呈指数增长。同时,功能调用的逻辑顺序,即业务的流程是被固定在相应的应用系统中的,如果需要更改这些流程,必须更改相应的系统程序。
(3)基于代理的集成。在这种方案下,服务代理只能对不同应用的功能调用进行管理,不会对整个业务的执行流程进行管理。同时,代理层的实现对开发技术的要求比较高,不同的中间件技术,例如分布式组件对象模型(Distributed Component Ob—ject Model,DCOM)、NET、公共对象请求代理体系结构(Common Object Request Broker Architecture,CORBA)等又不能相互调用,在技术上受到限制。
(4)面向服务的架构(Serrice-Oriented Archi—tecture,SOA)。基于SOA集成的优点是,它能把各个应用的功能抽象成服务,通过请求/服务的方式来获取跨应用系统的功能调用和数据获取。服务一般只实现了功能和数据的互相集成,而没有对整个业务流程支持。但是,就象没有乐谱和指挥的交响乐团不能协同演奏出动听的音乐那样,如果不引入业务流程管理(Business Process Management,BPM)的技术来管理企业内部的不同应用提供的服务,就不能协调这些服务,完成企业的应用集成。
1 业务流程管理和业务流程执行语言
BPM是基于计算机网络技术、工作流技术、企业应用集成和可扩展标记语言(eXtended MarkupLanguage,XML)技术等,从业务过程的角度对企业进行全方位的管理,并支持业务过程的持续改进,其核心思想是为企业内及企业间的各种业务过程提供一个统一的建模、执行和监控的环境。与传统的应用系统不同,BPM以超越功能模块的方式来保证业务跨部门、用户和组织的边界运行。BPM建立在已经从个人用户和部门生产力所获得的价值上,并把它们扩展到一个组织范围。
业务流程的基本结构是一些相关的活动的集合,它们之间有着逻辑的和数据的依赖关系,同时还包括与活动相关的数据以及活动参与者等。许多组织和企业都提出自己的基于XML的业务流程描述语言。工作流管理联盟(Workflow ManagementCoalition,WfMC)提出了基于XML的流程定义语言(XML Process Definition Language,XPDL)规范,BPMI组织提出的业务过程建模语言(BusinessProcess Modeling Language,BPML) 以及和BEAIntalio、SAP及Sun四家公司联合推出的网络服务编排接口(Web Service Choreography Inter—face,WSCI)等。Web服务的业务流程执行语言(Business Process _execution Language for WebServices,BPEL4WS或BPEL)最初是由IBM与Microsoft联合提出的,它由IBM公司的web服务流程语言(Web Service Flow Language,WSFL)与Microsoft公司的XLANG合并而成,并继承了BPML规范的许多特性,它可以将以Web服务方式提供的业务功能组装成一个业务流程。BPEL是目前业界最为推崇的一个流程语言规范。
BPEL流程模型位于由WSDLl.1 Web服务描述语言(Web Services Descriptive Language,WSDL)所定义的服务模型之上。业务流程定义了怎样协调程实例与其伙伴间的交互。一个BPEL流程定义提供和/或使用一个或多个wSDL定义,还通过web服务接口提供流程实例相对于其伙伴和资源的行为和交互的描述。也就是说,BPEL定义了交互中某个角色的业务流程遵守的消息交换协议。流程主文件的基本结构分成4个部分:
(1)(containers>部分定义了流程使用的数据容器,用WSDL消息类型来提供它们的定义。容器使流程可以根据被交换的消息保存状态数据和流程历史。
(2)(partners>部分定义了在业务流程执行中涉及的Web服务。
(3)部分所包含的故障处理程序定义了在对调用评估和批准服务所产生的故障作出响应时必须执行的活动。
(4)流程正常执行的活动链。例如用(squence>标记包含的一系列串行活动。BPEL支持同步和异步的活动调用。对于流程执行过程中的异步活动是很有必要的,例如,一些人工审批活动节点就需要以异步的方式执行。
2 基于业务流程执行语言的企业应用集成框架
基于SOA的集成方案就是把应用的数据调用和功能调用都封装成服务,目前应用最广泛的是Web服务。然后把这些Web服务发布在企业的Intranet中,或者企业之间的Extranet中。不同应用通过调用这些Web服务完成跨平台的调用。所有的Web服务通过在统一描述、发现和集成协议(Universal Description,Discovery, and Integra—tion,UDDI)服务器上注册,便于其他应用能找到Web服务,同时,Web服务都通过WSDL文件进行自描述。这种实现方案把业务流程都固定在应中,用程序语言固定下来。如果流程发生变化,就需要重新修改源程序。同时,随着集成的应用更多,Web服务平台上会有很多服务组件供调用。过多的Web服务组件会造成调用者的迷惑和维护工作量的剧增。
SOA的核心是服务,从计算机系统开发者和企业业务流程的管理员角度来看服务,其含义和粒度是不同的。对计算机系统开发者来说,服务一般是指细粒度的、包含较少操作的底层服务,例如,用简单对象访问协议(Simple 0jbect Access Protocol,SOAP)技术封装的一个应用系统功能函数的调用。但从业务流程管理员的角度来看,服务是包含一个一串业务流程的、能实现一个基本功能的粗粒度服务。因为从业务流程管理员的角度,他不会涉及很小的底层服务,粗服务内部的业务流程相对固定而不需要进行经常的调整。
图1表示了企业应用系统中服务的不同层次。根据企业业务应用的特点,在企业服务环境中,服务的粒度是不同的。图1中的服务分为业务层,业务服务组件层和原子服务层3层。业务层是企业的最上层的服务,是直接进行人机交互的应用层。业务层的应用就是企业操作人员进行日常操作、完成日常事务的应用系统。该层的实现技术就是利用JSP、C#等应用开发语言,结合BPEL的流程定义,调用不同的业务服务组件来完成的。
图1 企业业务和服务层次关系图
业务层的流程定义可以通过建立BPEL流程定义文档来完成。而构建流程定义的组件就是由下一层——业务服务组件层提供的。
中间层是“业务服务组件层”,也是业务流程管理员需要管理的对象。根据企业的基本业务,该层次定义了一些基本的服务(或者说企业的基本活动)。这些服务当然也是由原子服务按照一定的业务流程组合而成的。例如,产品的三维设计就是一个基本的企业业务服务(或者可以称企业业务活动),它可能包含一系列对企业应用的调用。例如,登录产品数据管理(Product Data Management,PDM)系统获取设计需求、完成设计、再存放入PDM系统、供其他设计人员调用等多个活动。原子服务层是直接封装应用系统不同功能的基本服务层。该层的服务根据应用系统的特点,利用应用系统的开发接口,开发出实现不同功能的服务。这些不同的服务利用UDDI来统一管理,并且可以通过WSDL文件来进行自描述。业务服务组件层可以根据应用的需要,来调用这些原子服务,实现企业的基本业务活动。
通过对不同服务粒度的分析,企业内部不同层次的应用开发人员在实现EAI时,可以分别关心自己的服务组件。例如,应用系统接口开发人员可以设计、开发、实现原子服务层的不同服务,并通过UDDI来统一完成不同服务的注册和发布。业务服务组件层设计人员根据企业基本业务活动特点完成业务服务组件的定义和发布。利用BPEL语言来进行服务流程定义,协调不同的原子服务,形成新的服务,并以Web服务的形式进行注册发布Cal。企业业务流程管理员根据企业业务的需要,设计不同的业务流程,可以利用BPEL工具来对业务流程进行建模、实现、发布和管理。企业业务层的设计人员通过调用不同的业务服务组件来实现企业的不同业务流程。业务流程也可以以Web Service的形式存在于企业应用系统环境中。
图2 基于管理器的应用集成框架
图2中,通过BPEL来协调各个Web服务,定义调用各个Web服务的流程、错误处理和涉及的相关数据等。这样,业务流程从各个应用中独立出来,对于流程的定义,以BPEL文件的格式发布到BPEL管理器中,定义和更改都更加方便。同时,BPEL管理器可以提供对流程实例的执行管理,可以方便地进行业务流程的管理。
利用BPEL定义的Web服务流程是一个新的Web服务,可以再次被新的BPEL作为服务组件来调用,因而方便了企业业务流程的定义。该框架的主要优点是:支持并行的Web服务调用,支持异步的Web服务调用,服务之间的松散耦合和可移植性,使用基于标准的接口公开整个流程定义,能方便地进行流程执行实例的监控。
在BPM和SOA结合的企业应用集成框架中,对BPEL语言进行解释、执行,对业务流程进行管理的应用服务器是集成的核心。由于BPEL是一个事实上的标准,多个公司的应用服务器包含了BPEL的管理器。例如,Microsoft公司的BizTalk,BEA的WebLogic,IBM的Websphere等。下面给出利用0racle BPEL流程管理器作为BPM服务器的实现方案。
3 基于oracle BPEL Process Manager的实现方案
0racle BPEL Process Manager(简称OB—PELPM)是基于BPEL规范的流程建模和执行服务器。它包括基于Java开发平台Jdevelop或Eclipse的流程设计建模和发布工具、BPEL流程执行服务器和基于Web的控制台。控制台包括对流程版本的管理、流程实例查询和审计等。
以某汽车制造公司的制造企业数字化工厂应用系统和企业其他应用系统的集成为例。数字化工厂应用系统是连接企业设计和制造的桥梁。它提供产品可制造性分析工具和仿真平台,为产品的制造工艺、制造过程进行仿真,制定和优化产品制造工艺,帮助确认制造工具和制造系统的相关设计参数。本例中的数字化工厂应用系统是em—Power软件,它由统一的emServer对emPower系统所涉及的工艺平台、物流仿真、工位仿真等数据进行管理,并以组件对象模型(Componet 0bject Model,COM)形式提供相应的数据服务接口。
该公司拟生产新设计的产品Model X,该产品在国外完成设计方案。由于目前该公司拥有的生产线产能过剩,拟对其进行改造,使之能同时生产新的Model X车型。整个生产线改造的流程如图3所示。
图3 新产品投产对生产线改造的业务流程
产品数据由产品开发部统一存放到PDM系统中。同时,PDM系统提供对产品工艺文件和生产设备设计数据的管理。
为了实现新产品的生产线改造,由规划科完成产品工艺设计、生产设备设计和改造方案。这些工作基于eM—Power软件系统完成,包括制定粗工艺计划;针对粗工艺计划的工序仿真、工位仿真和生产线物流仿真;确定具体的工艺数据和工位操作说明;确定生产线的改造方案;完成生产设备设计数据(CAD图纸等)的更新工作。
由于汽车的整车生产涉及冲压、白车身、油漆、总装等多个工艺,汽车生产线往往由相关供应商设计承包。规划部完成粗工艺规划后,具体每条生产线的工位仿真、物流仿真、设备改造方案等都有相关生产线的供应商来完成。完成方案后,向规划部提交数字化工厂(eM—Power)系统的相关仿真结果和设计结果数据文件,由规划部统一整理、审核后,再统一提交给PDM系统和企业资源计划(Enter_prise Resource P1anning,ERP)系统。
图3表示的是一个最上层的业务流程。每个具体的业务又和相关的企业应用系统或者供应商的企业应用系统有关。传统的方法是由人工进行各个阶段业务流程的管理,而不同应用系统的集成也是靠人工进行数据的导入、导出和数据的转换来完成的。由于人工操作和管理,整个业务流程不能进行跟踪监控,企业应用系统之间不能实现数据共享和自动转换。
在Model X的生产线改造阶段,利用WebService和BPEL实现了数字化工厂系统和PDM系统(SmarTeam系统)的部分集成,实现了工作流程的管理和应用的集成,取得了初步效果。集成方案的基础是实现SmarTeam和eM—Power的Web Service。SmarTeam和EM—Power系统都提供COM接口,因此,采用在.NET平台上封装的方法,实现Web Service。
例如,针对PDM的实现方法是,根据集成的要求,利用C#建立一个服务类实现基本的服务功能。图4表示了这个类的部分服务方法。
图4 PDM数据交换类的部分方法
其中,对于GetProductTree(ProductID)等方法返回的String类型,其实是一个XML字符串。XML字符串符合eM—Power系统的XML Schema定义文件,因而方便了从PDM返回的数据信息能直接被eM—Power系统读取。
利用.NET的Web Service发布向导,可以把编写的类发布成SOAP Web Service,并形成WSDL描述文件。每个类的相关方法都被包装成一个Web Service下的不同PortType,而输入输出则是相关SOAP Message。这些Web Service下的不同的PortType就形成了一个个原子服务。
在完成相关的Web Service的建立和发布后,就可以整合相关的原子服务来实现具体的业务——完成图3中所示的基本业务。这部分工作就用BPEL来完成。
例如,针对数字化工厂系统的“产品数据更新”基本业务,具体操作流程是:登录PDM系统和数字化工厂系统一输入需要获取的产品编号一复制产品树信息到数字化工厂系统中一完成更新。利用0racle BPEL设计器,该流程的设计图如图5所示。
图5 产品数据更新业务流程设计视图
利用BPEL的Scope对象,把流程分成几个部分。系统从client获取相关的输入,最后把运行结果输出到client。client可以用JSP应用开发语言来实现,完成人机交互。BPEL流程文件片断如下:
完成了“产品数据更新”基本业务的流程定义后,将它发布到0racle BPEL管理器上。其他相关的基本业务(如确定细工艺数据和工位操作说明书、生产设备设计数据更新等业务)完成定义后也发布到BPEL管理器上。这些业务可以作为一个新Web Service,供上层的业务流程调用。与“产品数据更新”等业务不同,“制定粗工艺数据”、“确定生产线设备改造方案”等业务只涉及数字化工厂软件系统本身,因此不必开发相关的Web Service来完成不同系统之间的数据交互。但是为了统一管理,这些业务作为一个人工干预节点也发布到BPEL管理器上。当业务流程执行到该节点时,由人工输入基本业务的完成状态。如果完成,则按照业务流程定义规则,自动执行下一个基本业务。这样,通过BPEL管理器提供的流程跟踪和管理界面,管理员就能随时跟踪业务流程的进展,并且找到业务流程停滞的节点,查找原因。
如果图3所示的业务流程发生变更。例如,针对“工位仿真”业务,会根据生产线承包商的变化而发生变化,可能有不同的承包商来参与到该流程中,或者该流程由自己的部门来实施。利用BPEL流程管理器能比较方便地根据实际情况进行调整,使整个业务流程符合企业的实际情况。
4 结束语
将BPM和SOA技术相结合来实现企业的EAI,是一个新的应用集成方案。SOA可以跨平台调用的应用Web服务,而利用BPM技术可以协调这些Web服务,完成企业的不同业务。BPEL是BPM领域一个事实上的标准语言,它基于XML格式,能对整个流程进行建模和定义。BPEL能够协调企业的Web服务,并且借助BPEL管理器,自己也以Web服务的方式提供服务。这样,企业内部的应用可以通过对不同粒度的服务进行调用、定义,从而能快速方便地构建企业新的集成应用。