分享
 
 
 

详解从UML到BPEL(1)

王朝other·作者佚名  2008-06-01
窄屏简体版  字體: |||超大  

本文描述了一种新工具,该工具是在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服务技术中。

扩展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服务。假如accessor认为该请求的风险比较高,它也将被传递给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文件

QQread.com

推出各大专业服务器评测 linux服务器的安全性能

SUN服务器

HP服务器

DELL服务器

IBM服务器

联想服务器

浪潮服务器

曙光服务器

同方服务器

华硕服务器

宝德服务器

下面为您提供了更改不同前缀的机会;需要对其进行改进来与您的设置相匹配,假如您恰好使用的是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对本文进行输入和注释工作。(责任编辑:铭铭)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有