监理公司管理系统 | 工程企业管理系统 | OA系统 | ERP系统 | 造价咨询管理系统 | 工程设计管理系统 | 签约案例 | 购买价格 | 在线试用 | 手机APP | 产品资料
X 关闭
泛普博客

当前位置:工程项目OA系统 > 泛普服务体系 > 泛普博客

基于BPEL的业务流程集成技术

申请免费试用、咨询电话:400-8352-114

来源:泛普软件

引言

基于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。

2.1 装配原理

由于目前的BPEL标准属于粗粒度,IBM针对复杂业务流程的实现对该规范进行了扩展,主要定制添加了Human Task和Visual snippets节点。其中Human Task节点完成与人交互,主要包括3种模式:people to machine(由人调用service)、machineto people(人是参与者)、people to people(由人员把工作项分配给另一人员)。使得与人的交互变成组件方式,通过invoke调用外部的服务(再通过回调完成异步调用),通过这种方式完成解耦,外部服务的更改,不会影响这个业务流程。Visual snippets节点使用图形化的方法写iava code,在BPEL编辑下可完成对流程变量的赋值和引用,即完成赋值节点对不同消息的匹配。

BPEL流程需要定义Interface Partners、Reference Partners、Variables、Correlation Sets等。其中:Interface Partners指定该BPEL流程对应的接口;Reference Partners指定流程中Invoke节点需要调用的WSDLPortType接口;Variables中定义流程变量,属于BO(Business 0bject--SDO的子集),BO的实质是一个XML Schema,整个业务员场景中的数据流转都是Bo;Correlation Sets是异步消息处理机制,通过key值来唯一标识消息和BO,并唯一定义每个流程实例(Business Instance),其初始化是在流程中完成的。

通过使用LDAP插件完成BPEL流程的认证和授权,其中human task的权限通过role控制,WlD中默认提供5种角色:Starters、Potential owners、Reader、Editors、Administrator,而人员的选择是通过human task中的Verbs andParameters完成。

2.2 装配实现设计

BPEL流程和WebService交互应用:首先由客户端(JSP)通过消息发起流程,创建流程实例并传入相关参数;流程在Receive节点将参数存入与BPEL流程绑定的WSDL接口的输入变量BO中;添加invoke节点调用外部的WebService,该Web服务可能是由ERP、CRM或者OA等业务系统暴露出的服务接口,WebService根据输入变量BO完成查询数据库、启动其他工作流等相关业务处理并返回输出值给BPEL流程;流程在Reply节点把输出值返回给前台JSP,至此流程结束,如图4。

当业务流程定义完毕后,通过JMS、WebService、BPC方式启动流程,这里BPC是WID提供的业务流程调用模板,也可以根据提供的API自定义流程启动模板。同时SCA Component调用SCA Module中定义的SCA Component应用时可通过Dynamic和Type-Safe方式,对于调用者是非SCA组件时,比如:JSP、servlet,可通过定义的stand—along的reference完成。

BPEL流程分为:微流程(microflow)和长流程(10ng—running)。微流程是瞬时流程,所有的活动都在一次事务中完成,不涉及与数据库或其他业务系统交互;长流程中业务上下文则必须被持久化存储,从而确保即使遇上计划的或意外的系统失败,业务流程也能正确执行,因为这种失败的可能性随着业务流程运行时间的增加而变大。

2.3 相关问题和解决思路

一个健壮灵活的BPEL流程不可避免会涉及到事件处理和出错处理。事件处理的基础是CEI51(Common Event Infrastructure),CEI是一套框架,实现事件源、事件的生成、传输、持久化存储和发布,在业务场景中为事件封装的方式,统一监控调用之间发生的事件。而CEI又是基于CBE(CommonBase Event),通过CBE统一描述事件,把事件的属性用纵表来描述(平常的数据库是横表)。但同时带来的问题是:数据量太大,一个事件可能对应多条记录。对此可预定义事件的优先级,当大于优先级时生成事件记录,并定时清除旧事件记录。这里对事件处理再进行展开:对BPEL的定位是整合Web服务、定义Services的执行顺序和完成流程与模块的交互。但是面临复杂业务流程,特别是人工节点较多的业务流程时,BPEL就显得相形见绌,为此将状态机(BSM—Business Statement Machine)和BPEL结合起来定义业务流程,IBM-BSM是基于状态完成流程变迁的,其内部实现还是BPEL。事件处理是定义在流程的Scope中,而Scope是不能跨BSM和BPEL的。

针对该问题提出的解决方法: 在每个事件中植入事件发生器,通过CBE对自定义事件进行抓取,统一存放。首先将几个活动放在同一个Scope中,当某个活动出现异常时,通过throw或rethrow节点抛出异常,触发相应fault handler,然后通过Compensation补偿节点完成对事物的补偿,从而保证了事物的原子性、一致性和完整性。

3 结语

未来的10年是SOA时代,BPEL作为IBM的WSFL和Microsoft的XLANG的结合物,其主要定位是成为整合WebService的标准。通过使用BPEL把Web服务连接起来并指定怎样共同使用Web服务来实现更复杂的功能,打破了Web服务孤立且不透明的现状,使得异构、跨域且通信协议不同的Web服务能够交互;另外用BPEL驱动的基于流程的应用程序在修改业务流程和调用的Web服务时不会影响程序中的其它Web服务或业务流程所代表的Web服务,为修改应用程序提供了灵活性。随着SOA的广泛认同和快速发展、Web服务标准和基础环境的逐渐成熟,基于BPEL的业务流程动态集成将会成为分布式工作流引擎未来发展的方向。(万方数据)

 

发布:2007-04-27 15:48    编辑:泛普软件 · xiaona    [打印此页]    [关闭]
相关文章:

泛普泛普博客其他应用

泛普OA商务合同 泛普OA需求调研 泛普OA实施方案 泛普OA项目启动 泛普网络硬件配置 泛普OA部署安装 泛普流程模板表单 OA系统二次开发 泛普常见问题解决 泛普OA操作手册 泛普软件项目验收 泛普培训推广上线 泛普OA售后服务 泛普新闻 泛普期刊 泛普博客