从UML到BPEL

发表于:2007-05-25来源:作者:点击数: 标签:web模型umlBPEL服务
Web服务世界中的模型驱动体系结构 如此多的XML ... BPEL是什么? UML为什么? 自动化业务流程的UML配置文件(Profile) 映射到BPEL4WS UML到BPEL映射验证器 反射 鸣谢 参考资源 关于作者 本文描述了一种新工具,该工具是在alphaWorks网站上发布的Emerging Te
Web服务世界中的模型驱动体系结构
如此多的XML ...
BPEL是什么?
UML为什么?
自动化业务流程的UML配置文件(Profile)
映射到BPEL4WS
UML到BPEL映射验证器
反射
鸣谢
参考资源
关于作者
本文描述了一种新工具,该工具是在alphaWorks网站上发布的Emerging Technologies Toolkit version 1.1 (ETTK),它采取用统一建模语言(Unified Modeling Language,UML)定义的流程并生成相应的BPEL和WSDL文档来实现该流程。这种性能用于突出对象管理组(OMGs)模型驱动体系结构(MDA)创始的一些优点:提高开发过程中的抽象水平,因此获得更高的生产率, 更好的质量,能够隔离于技术的根本改变。

如此多的XML ...

随着面向服务的体系结构(SOA)的出现,应用程序开发经历了一次彻底改变。这种架构合并了基于XML的标准,例如WSDL、简单对象访问协议(SOAP)、统一描述、发现和集成协议(UDDI)和现在的BPEL。然而,当您能做更多的事情时,开发任务的大小和复杂性已经提高,并且开发者会发现他们沉迷于文档和语法中,而迷失了他们工作的主要目标。另外,开发人员的目标在发生变化,标准本身也处在发展之中。因而,为了能快速的采用Web服务,开发者正在寻找解决复杂、高效和技术改变问题的答案。

UML到BPEL的映射工具能够获得用UML工具(例如:IBM Rational的XDE或Rose)开发的流程模型,并且能将它们转换为正确的BPEL和WSDL文档来实现该流程。 Emerging Technologies Toolkit version 1.1 (ETTK)是测试有趣的新技术的环境,并且现在具有两种格式:autonomic和webservices。本文重点介绍后者——webservices。

BPEL是什么?

BPEL提供了一种XML注释和语义,用于指定基于Web服务的业务流程行为。使用合作伙伴的交互方式,定义了该BPEL4WS流程。合作伙伴可以将服务提供给流程,也可以向流程请求服务,或者参与到流程的双向交互中。BPEL通过指定顺序来编排Web服务,这对服务集合的调用来说意义深远。BPEL还针对每个服务分配了合作伙伴的责任。您可以使用它来指定合作伙伴的公共接口和可执行流程的描述。

BPEL 1.1是该规范的最新版本。它除了澄清术语之外,还允许较好的变量范围和附加的事件处理程序。有关该规范的最新版本和BPEL介绍,请参阅最前面的两篇相关内容链接。

为什么使用UML?

UML是一种OMG标准,该标准提供了一种可视化的建模表示法,这对设计和了解复杂的系统很有效。

UML具有下列几种通用优点:它是众所周知的面向对象(Object-Oriented ,oo)建模表示法,具有非常容易理解的图形表示法以及一套丰富的语义集来捕获OO系统的关键特征。 UML广泛地应用于面向对象的软件开发,还常用于定制的、基于组件的软件开发、业务流程建模和系统设计。这使大部分UML经验能被应用到成熟的Web服务技术中。

QCQBB">扩展UML
扩展或定制UML的特性对MDA来说是很必要的;可以通过定制UML来支持系统建模,这种系统是需要完全或部分的部署到Web服务基础架构上。本文主要介绍模板(stereotypes)。模板(stereotypes)是一种对模型的元素进行分类的方法。例如,如果您有一个表示顾客的类,那么您可以附加<<entity>> 模板(stereotypes)来表示它代表一个数据对象(或许是Entity Bean)。这种信息有助于人们对模型的可读性,甚至可以用来改变表示CASE工具(例如Rational Rose)中类的图标。然而,在这种情况下您可以使用它来指导模型的翻译。要记住,您可以将模板(stereotypes)添加到UML模型中的更多元素上。还可以在配置文件(Profile)中结合这些模板(stereotypes)。为了表示特定的兴趣域,UML配置文件(Profiles)用于定义对基本UML的扩展集合。例如那些为CORBA和数据建模(Data Modeling)定义的配置文件(Profiles)。配置文件定义了要使用的UML元素,如何对其进行扩展,以及约束元素集合的良好性规则(well-formedness rules)。

下面部分,我将介绍一种UML配置文件(Profile),可以通过构建与BPEL4WS(Web服务业务流程执行语言)相对应的一套语义结构来支持建模。同时还将描述BPEL4WS映射,BPEL4WS映射可以从适合配置文件的UML模型自动生成Web服务制品(BPEL、WSDL、XSD)。

下面部分将展示实际的BPEL例子以及UML配置文件(Profile),并重点讲述关键概念。

自动化业务流程的UML配置文件(Profile)

这部分通过一个例子介绍了UML配置文件子集,该例子定义了一个简单本的贷款批准流程。在本例中您将会在ETTK的README文档中发现转换器。它可以被总结为如下所示:

“在收到贷款请求时,将请求的数值与数值(10000)比较。如果请求的数值比较少,那么将调用Assessor服务,否则将将调用Approver服务。如果Aclearcase/" target="_blank" >ccessor认为该请求的风险比较高,它也将被传递给Approver。当Approver完成或者Accessor接受时,将会返回批准信息。”

BPEL流程是有状态的并包含实例,所以在BPEL中,这种情况都会被作为一个LoanApproval流程而实现,对于被处理的每个实际贷款申请,LoanApproval流程都会有一个实例。每个实例都用BPEL变量来捕获它自己的状态。在UML配置文件中,流程被表示为<<Process>>模板类。类的属性与流程的状态相对应(在BPEL4WS 1.0术语中的容器,或者BPEL 1.1中的变量)图1显示了表示贷款批准流程的UML类 。

图 1.用于BPEL流程建模的UML类

通过活动图可以清楚的描述类的行为。图2显示了贷款批准流程的活动图。例如,invokeAssessor活动显示为带有圆角的长方形。执行的操作显示为活动的入口条件;例如,riskAssessment(一个变量)被设置为检查服务的结果。通过UML分区(也作为泳道)来表示流程中通信的合作伙伴:customer、assessor以及approver。每个分区中显示了往合作伙伴发送或者接收信息的活动。箭头表示流程执行活动的顺序。注意分派(assingment)活动没有放到一个分区中;它描绘了发生在它自身流程内的活动,该流程不需要外部服务。

图 2贷款批准流程的活动图

应答(reply)活动向顾客返回响应,完成流程的处理。每个活动都有一个描述性的名称和输入活动来细化活动执行的工作。

映射到BPEL4WS

自动化业务流程的UML配置文件表示可以从UML模型生成完整的可执行BPEL制品。表1 概要的展示了从配置文件到BPEL的映射,覆盖到了本文介绍的配置文件子集。

表 1. UML到BPEL4WS映射概述

配置文件构件 BPEL4WS概念
<<process>>类 BPEL流程定义
<<process>> 类的活动图 BPEL活动级别
<<process>>类属性 BPEL变量
分层结构和控制流 BPEL顺序和流程活动
<<receive>>、 <<reply>>、<<invoke>>活动 BPEL活动

清单1(由于版面空间原因,这里省略了很多细节代码)显示了BPEL文档的缩减版本,该文档是由本文介绍的贷款批准例子生成的。

清单 1.BPEL清单摘录

            <process name="loanApprovalProcess" ...>
            <variables>
            <variable name="request"
            messageType="loandef:creditInformationMessage"/>
            <variable name="riskAssessment"
            messageType="asns:riskAssessmentMessage"/>
            ...
            </variables>
            ...
            <flow>
            <receive name="receive1" partner="customer"
            portType="apns:loanApprovalPT"
            operation="approve" variable="request"
            createInstance="yes">
            <source linkName="receive-to-assess"
            transitionCondition=
            "bpws:getVariableData('request', 'amount')<10000"/>
            <source linkName="receive-to-approval"
            transitionCondition=
            "bpws:getVariableData('request', 'amount')>=10000"/>
            </receive>
            <invoke name="invokeAssessor" partner="assessor"
            portType="asns:riskAssessmentPT"
            operation="check"
            inputVariable="request"
            outputVariable="riskAssessment">
            <target linkName="receive-to-assess"/>
            <source linkName="assess-to-setMessage"
            transitionCondition=
            "bpws:getVariableData('riskAssessment', 'risk')='low'"/>
            <source linkName="assess-to-approval"
            transitionCondition=
            "bpws:getVariableData('riskAssessment', 'risk')!='low'"/>
            </invoke>
            <assign name="assign">
            <target linkName="assess-to-setMessage"/>
            <source linkName="setMessage-to-reply"/>
            <copy>
            <from expression="'yes'"/>
            <to variable="approvalInfo" part="accept"/>
            </copy>
            </assign>
            ...
            <reply name="reply" partner="customer" portType="apns:loanApprovalPT"
            operation="approve" variable="approvalInfo">
            <target linkName="setMessage-to-reply"/>
            <target linkName="approval-to-reply"/>
            </reply>
            </flow>
            </process>
            

参考资料中可以找到完整的配置文件链接。

UML到BPEL映射验证器

从IBM alphaWorks可以获得作为ETTK的一部分的技术验证器,它支持从UML工具(例如Rational XDE)到BPEL4WS运行时间(BPWS4J)的端到端情景。映射实现被构建为Eclipse插件,它采取了UML模型(XMI)交换的工业标准文件格式作为输入。BPEL4WS制品(artifact)同需要的WSDL和XSD制品是一起生成的。

让我们看一下验证器。首先要根据您的需要安装一些先决条件。ETTK页面显示了相关详细信息(参阅参考资料下载链接)。概括起来,您需要下列资源:

  • Rose或XDE(本文采用的是XDE v2003)
  • Eclipse 2.0+或WebSphere Studio Application Developer(WSAD)5.0+
  • WebSphere Application Server (WAS) 5.0+或Apache Tomcat 4.1.24+
  • The ETTK本身(其中包含了BPWS4J)。

假设您已经具有下面需要的合适环境。

验证器随着不同情景的一套样例文档而产生,例如贷款批准或购买订单流程。样例文档将是两种类型:一种是可以由Rose或XDEUML打开和修改的模型文档,另一种是包含UML模型的XMI版本的XML文档,该文档可以通过Rose或XDE进行输出。在图3中可以看到Rose或XDE中相应的模型,或者这些工具的XMI输出的模型。

图3使用一个UML活动图显示了转换文档的全部流程;UML没有用吗?方框表示制品(通常是文档),而椭圆表示一个操作或活动。主要阶段是:

  • 构建UML模型并将其导出到XMI(使用Rose或XDE)
  • 生成BPEL、WSDL和XSD文档
  • 在BPWS4J运行时间部署并运行这些文档—— 测试

图3. 开发一个流程

构建并输出UML模型
如果具有Rose而不没有XDE,则可以打开其中一个UML文档(.mdl或.mdx);在本文中您已经通过贷款批准的例子看到了这些例子。

图 4.使用XDE建模并输出

图4UML模型被输出到XMI——您需要使用XDE v2003或更新版本。注意这种方法的好处是您正在使用的是一般性用途,而不需要修改UML工具和UML的标准扩展机制来构建和输出流程定义。

一旦模型执行完毕,则可以点击File -->Export菜单,选择XMI Export将其输出,如图4所示。

生成BPEL和WSDL文档
在Eclipse(或WebSphere Application Developer (IE))中创建Java Project,然后导入您在前面创建的XMI文档(或使用ETTK提供的XMI样例文档)。最后选择XMI文件并通过右击鼠标菜单选择“Generate BPEL from UML”,如图5所示。

图 5.转换XMI文件

下面为您提供了更改不同前缀的机会;需要对其进行改进来与您的设置相匹配,如果您恰好使用的是ETTK安装,则默认值不需要修改,如图6所示。

图6.设置前缀

单击“Finish”按钮后,许多文档将显示在工程中,其中包括主要的BPEL和WSDL文档,LoanAssessor和LoanApprover服务以及数据定义的WSDL文档。

测试
这时,生成的文档应该准备进行部署。本文中可以部署到Apache Tomcat,但是也同样可以使用WebSphere Application Server。

导航到BPEL4WS部署面板(地址是http://localhost:8080/bpws4j/admin/index.html)),接着在各自的字段输入与主要服务相应的WSDL文档(即 Loan ApprovalProcess.wsdl)和BPEL文档,(即ProcessOrder.bpel),如图 7所示。

图7.部署流程

单击“Continue Deployment”按钮之后,在流程插入不同角色需要的所有文档。在本例中有两个特别的任务:LoanAssessor和LoanApprover。

图 8.部署服务

一旦部署完流程(参阅Figure 8所示),然后运行的例子与BPWS4J例子是相同的:调用与您的操作系统相应的LoanApprovalSample脚本:

LoanApprovalSample [soap-address] first-name last-name amount

例如,

LoanApprovalSample http://localhost:80/bpws4j/soaprpcrouter John Doe 10

根据UML活动图,可以知道数值10000是重要的!

反射

本文介绍了带有UML到BPEL转换器的自动化业务流程UML配置文件。配置文件允许开发者使用常规的UML技巧和工具,开发基于BPEL4WS的Web服务业务流程。这种方法使面向服务的的BPEL4WS组件合并到全面的系统设计,该系统设计利用了现存的软件工程方法。另外,从UML到BPEL4WS的映射容许使用模型驱动开发方法,从UML模型自动生成BPEL4WS可执行的流程。

这种方法着重于了MDA的概念如何能被运用到其它领域以及抽象的更高级别,该方法使得开发者可以隔离于技术的改变。

这里有几种不同的情况,每种情况下这种方法都是有益的:

  • 第一种情况,屏蔽在项目使用的技术版本的更改。BPEL可以(并且已经)更改了版本。如果流程所使用的语义没有发生根本的变化,可以重新生成实现而无需开发人员的干预。这种转换技术也能用来保护开发者在最初开发UML模型的投入:当有UML新版本可用的时候(例如将版本从1.4升级到2版本),UML模型本身也能进行转换。
  • 第二种情况,可以产生UML配置表,使用它能生成其它过程实现,诸如BPML。
  • 第三种方法,可以从单个模型生成多种技术的制品(artifact)。在本例中包括BPEL和WSDL,但不能能生成non-XML输出,诸如Java输出。
  • 最后,转变是双向的--在本例中有一个反向映射来支持现有的BPEL4WS和WSDL制品(artifact)的导入,以及支持BPEL4WS和WSDL制品(artifact)的同步,一方发生的改变能够反映到另一方。

致谢

感谢Gary Flood、Catherine Griffin和Tracy Gardner对本文进行输入和注释工作。

参考资料

 

  • 从IBM alphaWorks下载ETTK

  • 请参阅IBM alphaWorks 上的live running install of the ETTK on developerWorks

  • 阅读James Snell编写的“Implementing Web services with the ETTK”教程。 (developerWorks,2003年4月)

  • 查看OMG上的MDA参考资料页面,那里有很多文章,可以链接到会议和更多信息。

  • 浏览OMG上的UML参考资料,那里有很多文章,可以链接到会议和更多信息。

  • 在<ettk install directory>\\wstk\\services\\demos\\uml2bpel\\docs\\UMLProfileForBusinessProcess1.1.pdf文档中查找UML Profile。

  • 阅读BPEL 1.1规范developerWorks,2003年3月)。

  • 通过阅读Frank Leymann和Dieter Roller编写的“Web服务世界中的业务流程”,,获取优秀的关于BPEL4WS的概述(developerWorks,2002年8月)。

关于作者

Keith在英国的Hursley Park IBM开发基地工作。他目前工作在Model Driven Business Integration小组。他在很多领域进行了应用软件开发工作,其中包括零售业、金融业和保险业,他经常使用UML和其它技术提高品质、效率和股东之间的通讯。 可以在keith_mantell at uk.ibm.com与Keith联系

原文转自:http://www.ltesting.net