基于BPEL的业务流程集成技术2010-03-01 e-works 引言基于WebService,采用SOA(Service Oriented Architecture)架构建立企业业务系统解决方案时,分析明晰企业的业务流程并以适合粒度定义出Web服务。当涉及到跨部门、端对端的业务流程动态集成时,需要把这些Web服务按顺序组合以实现业务流程集成的方法和技术。故在SOA架构下,以BPEL作为业务流程执行语言,对企业部门之间业务流程动态集成的实现方法进行研究。1 BPEL和业务流程编排该研究采用IBM关于SOA的方法论、行业解决方案和相关的技术产品,所以关于BPEL的研究符合IBM关于SOA的核心构件标准SCA/SDO(Service Component Architecture/Service Data Object)。SDO是一种应用程序编程接口(API),可简化和统一对异构数据的访问;SCA是一种全新的、跟语言无关的编程模型,提供了一种统一的调用方式,从而使得客户可以把不同的组件类型通过一种标准的接口来封装和调用。结合SDO的数据模型,这种服务组件的编程模型可简化程序员编程,提高应用的灵活性。该sCA/sDo标准的分层与关系如图1。

其中Business Processes(BPC)是满足SCA规范的组件,SCA通过统一的组件规范实现服务组件层,对内可以是JavaBeans,BPEL—Processes等。 虽然在SCA/SDO标准中,BPC只是其中的一个SCA组件,但是在构建业务流程时不可避免的要和其它SCA组件(如:Human Tasks、Business Rules等)交互,所以不能孤立地研究BPC组件。标准的BPEL规范是从传输、消息、服务发现、QOS(Quality Of Service)和业务流程编排(Business Process Choreography)等方面给出定义,主要关注业务流程编排。在进行业务流程的编排和实现时,首先需要对业务流程进行建模,真实还原当前的业务场景(称为as.is);然后根据业务目标,实现业务流程的优化(称为to-be),再根据实际运行的结果,进行下一轮的优化。这是一个循环迭代的过程,符合SOA的生命周期:建模(model)一装配(assemble)一部署(deploy)一管理(manager),而业务流程编排完全贯穿于整个SOA生命周期。定义BPC组件时,组件接口和引用必须遵循SCA组件规范,可定义Java Interface/Reference或Interface/Reference,而组件的具体实现为Business Processes如图2。

根据BPEL规范,实现BPC组件时,流程的每一步称为一个活动,存在以下基本活动:调用某个Web服务的操作(invoke);等待一条消息来响应由某人从外部进行调用服务接口的操作(receive);生成输入/输出操作的响应(reply);等待一段时间(wait);把数据从一个地方复制到另一个地方(assign);指明某个地方出错(throw);终止整个服务实例(terminate);或者什么也不做(empty)。通过使用BPEL语言所提供的结构化活动,可将这些原语活动组合成更复杂的算法。这些结构化活动提供的能力包括:定义一组步骤有序的序列(sequence);使用“case.statement”方法来产生分支(switch);定义一个循环(while);执行几条可选路径中的一条(pick);指明一组应该并行执行的步骤(flow);在并行执行的一组活动中,可通过使用链接(1ink)来指明执行顺序的约束,并允许递归地组合结构化活动,以表达任意复杂的算法,这些算法表示了服务的实现。2 服务装配使用IBM Websphere Integration Development6.0.1(简称WID)完成SOA Life—style中的服务装配(Service Assemble)。上述的基本活动、结构化活动在WID中得到了一定程度的封装和细节屏蔽,通过WID提供的图形化编辑器完成BPEL流程的编排,如图3。