以文本方式查看主题 - 计算机科学论坛 (http://bbs.xml.org.cn/index.asp) -- 『 Web Services & Semantic Web Services 』 (http://bbs.xml.org.cn/list.asp?boardid=10) ---- 转:商业流程开发新纪元--BPEL4WS语言介绍 第1部分: 特点介绍及使用技巧提示 (http://bbs.xml.org.cn/dispbbs.asp?boardid=10&rootid=&id=37454) |
-- 作者:luccy -- 发布时间:8/31/2006 2:15:00 PM -- 转:商业流程开发新纪元--BPEL4WS语言介绍 第1部分: 特点介绍及使用技巧提示 (资料是比较老了,BPEL1.1版的,但对于初学者来说,是个不错的入门材料。比直接看标准容易理解) 转自 http://www-128.ibm.com/developerworks/cn/webservices/ws-bpel/part1/index.html 级别: 初级 2003 年 3 月 01 日 王 强, 软件工程师, 日本富士施乐(FujiXerox) 商业流程执行语言BPEL4WS(Business Process Execution Language For Web Services)是专为整合Web Services而制定的一项规范标准。它从本质上来说是IBM的WSFL和Microsoft的XLANG的结合物,目前已经成为业界标准。WSFL 支持图形化的流程,而XLANG在结构化构造方面有独到的方法,而BPEL4WS正是吸取了两者的优点,同时摒弃了一些复杂繁琐的部分,形成了一种较为自然的描述商业活动的抽象高级语言。 1.BPEL4WS语言的特点 3.BPEL4WS语言利用外部Web服务的技巧提示。 结束语 |
-- 作者:luccy -- 发布时间:8/31/2006 2:20:00 PM -- BPEL4WS语言介绍,第2部分: 如何有针对性的利用RUP来规范开发流程 级别: 初级 王强, 软件工程师 商业流程执行语言BPEL4WS(Business Process Execution Language For Web Services)是专为整合Web Services而制定的一项规范标准。它从本质上来说是IBM的WSFL和Microsoft的XLANG的结合物,目前已经成为业界标准。WSFL 支持图形化的流程,而XLANG在结构化构造方面有独到的方法,而BPEL4WS正是吸取了两者的优点,同时摒弃了一些复杂繁琐的部分,形成了一种较为自然的描述商业活动的抽象高级语言。 引言 (注:对于BPEL4WS的基本语法介绍以及RUP的详细内容由于篇幅原因并没有包括在本文中,读者可以参阅附录中的相关资料介绍;在文中出现的"BPEL4WS系统"与"用BPEL4WS语言开发的商业系统"同义。)
利用BPEL4WS语言进行系统开发时所应注意的一些问题 〈一〉并行操作; BPEL4WS语言中的并行操作是由〈flow〉完成的。这种并行是通过同时调用Internet上位于不同地方(不同城市甚至是国家)的Web Services进行各种商业处理来完成的。就如图1所示,当处理流程开始后,进入〈flow〉结构,在〈flow〉中同时开始执行两个并行的〈sequence〉操作,〈flow〉操作也只有等到这两个〈sequence〉操作都完成后才可以结束。正是由于BPEL4WS具有这种并行特性,所以在建模的时候就要着重参照并发模型的建模方法。 图1:并行操作〈flow〉示例 〈二〉弱数据处理能力; 由于BPEL4WS语言在实际操作中不涉及到商业数据的存储和处理,也就是说所有有关于数据库的操作都隐式的由其调用的外部Web服务来完成,这些数据库操作不论对于开发人员和用户来说都是透明的。正因如此,在BPEL4WS中并没有出现复杂的数据结构和数据类型,也没有关于数据存储和持久化的操作,涉及到显式数据操作的地方就是〈container〉结构的使用了,而在〈container〉中的数据没有那么复杂的数据类型,因此我们可以说BPEL4WS语言是弱数据处理能力的。正是由于它的弱数据处理能力,决定了针对BPEL4WS语言的建模方法不太适合采用面向数据流的分析设计方法和针对算法的建模,因此面向对象的分析设计方法以及面向对象的建模自然而然就成为了最好的选择。 〈三〉分布式系统架构; BPEL4WS的诞生,完全是由于分布式技术的飞速发展,SOAP,XML以及Web Services的出现为BPEL4WS语言的出现奠定了坚实的基础。在BPEL4WS中一个最重要的概念恐怕就是"伙伴"〈partner〉结构了,BPEL4WS中的主要操作都要指定相应的〈partner〉,〈portType〉和〈operation〉。〈partner〉实际上就指明调用了哪一个Web服务,〈portType〉指明了调用这个Web服务上的哪一个端口类型,〈operation〉指明了调用的具体操作(可类似看作调用一个函数)是〈portType〉中的哪一个。由于指定的"伙伴" 所位于的各个节点机可以为异构系统,且与这些"伙伴"之间进行的通信可以基于各种通信协议(只要符合SOAP协议),所以决定了对于系统构件模型(component model)和系统实施模型(deploy model)的建模就变得相当的重要。只有在系统的分析和设计中清晰地体现出所有与系统相关的外部Web服务的有关信息,才能算是对系统的整体架构有一个完整的描述。
针对BPEL4WS语言的特点,合理结合成熟软件过程RUP进行系统开发 由于BPEL4WS语言自身所具有的特点,决定了在结合RUP使用的时候不能完全生硬的照搬RUP的整个过程,在一些方面要做一些适当的修改,这主要体现在以下几点: 〈一〉项目阶段重点的适度转移 从管理的观点来说,Rational Unified Process 的软件生命周期随着时间分为四个依次进行的阶段(初始、细化、构造和移交),每个阶段的结束都有一个主要里程碑,这些里程碑实际上就是每一阶段工作成果的输出。针对普通的项目开发来说,每一阶段的工作量大致可划分为: 先启 精化 构建 产品化 先启 精化 构建 产品化 在RUP中,项目开发可以包含几个主要的核心工作流程,包括业务建模、需求、分析设计、实施、测试、部署、配置与变更管理、项目管理和环境。在这里要特别注意的除了实施(上面已经介绍过)以外,测试和配置与变更管理对于BPEL4WS系统来说是非常重要的。 测试: 测试的目的在于核实对象之间的交互、核实软件的所有构件是否正确集成、核实所有需求是否已经正确实施、确定缺陷并确保在部署软件之前将缺陷解决。在很多组织中,软件测试占软件开发费用的 30% 到 50%。但大多数人仍然认为软件在交付之前没有进行充分的测试。这个矛盾主要来自两个方面的原因,第一个,测试软件十分困难。给定程序具有无数的不同行为方式。第二个,测试通常是在没有明确的方法,不采用必须的自动化手段和工具支持的情况下进行的。由于软件的复杂性,无法实现完全测试,但采用周密的方法和最新技术水平的工具可以明显提高软件测试的生产率和有效性。 由于BPEL4WS系统的特点决定了我们应该在整个软件生命周期的早期就启动执行良好的测试,这将明显降低完成和维护软件的开支,关键是它还可以大大降低与部署质量低劣的软件相关的责任或风险。由于外部WEB服务具有一些不确定性(接口的可变性等),我们应该将初期测试的重点放在对于那些与外部WEB服务接口相关联的模块的测试上,要尽早建立合理的测试用例进行测试,而且一定要将测试用例和测试结果进行文档化,这样可以在最后进行整合测试时作为十分有价值的参考。 维护阶段的测试显得更加的重要,对于BPEL4WS系统来说,其系统维护成本通常要占到总成本的40%左右,而且维护成本会受到用户数目的严重影响,这是因为用户越多,所发现的错误也越多。在这里要专门提到的是有关于在发生在系统维护阶段的程序缺陷修复活动,有时看上去很轻微的错误,比如调用WSDL中提供的<operation>时,从<container>中取出的数据的数据类型与<operation>中的<message>的数据类型不符,本来应该是长整数,结果错用成整数,这类错误虽然很难发现,但一旦在维护阶段的实际使用中暴露出来后,修复工作还是较简单的(只限于这个子系统)。由于维护人员常常不是编写代码的开发人员,而是一些初级程序员或者新手,结果更大范围的修复工作常常会被忽视,尤其是涉及到其他子系统时。所以在BPEL4WS系统的维护阶段,测试变得更加的重要。每次发现错误修复后,必须重新运行先前的所有测试用例,这样才可以确保系统不会以更隐蔽的方式被破坏。 配置与变更管理: 在配置与变更管理中,最重要的是一个组织的配置与变更请求管理系统(CM 系统),因为在CM系统中存放了有关该组织的产品开发、部署和维护流程等的重要信息,并且保留了执行这些流程时产生的阶段成果。CM 系统是整个开发流程中的核心部分,它必不可少。对于BPEL4WS系统,我们已经注意到与我们息息相关的外部WEB服务具有无法避免的易变性(这是由于商业系统本身就是一个易变的系统,各种商业活动的规范和流程都可能随时改变,因此导致所提供服务的改变,正像《人月传说》中说的那样"不变只是愿望,变化才是永恒"),因此对于这些易变性的捕捉就变得十分的重要,这可能在开发阶段体现的还不是很明显,但在系统维护阶段就变得显而易见了,没人能保证自己系统用到的外部WEB服务的接口不会变,也没有人可以预测什么时候变,所以对于我们来说只能以不变应万变,做好配置与变更管理,而且要把重点放在系统中所调用的外部WEB服务的接口规则上,一定要保持同时更新,保证所涉及的每一个子系统能同步得到最新的变更通知。 〈三〉新的人员角色的增加 在RUP中,所有的人员按角色划分可分为分析员、开发人员、测试人员、经理、其他角色。由于在BPEL4WS系统中外部WEB服务对我们来说是最重要的问题,我们的一切操作都要依靠它们,所以我们必须针对它们提供专门的人员角色来负一些重要的活动。 对于分析员角色,我们应该设置专职人员负责外部WEB服务的调查工作(如接口规则以及性能特点的调查),他还要在测试阶段和测试人员合作一起负责相关测试用例的生成,这类人员的工作可以为系统的设计和测试提供充足的参考。我们可以把这类人员角色称为"外部服务审核员"。 对于其他角色,如果人力资源准许的话,应该增加专职的文档管理员来专门负责有关整个系统所涉及的所有外部WEB服务的相关文档的收集和整理,我们可以把这类角色称为"外部服务文档管理员","外部服务文档管理员"的工作应该和"外部服务审核员"的工作紧密联系,并且这两种人员角色的工作与测试、配置与变更管理这两个系统核心流程紧密相关,如图2所示(这并不是说与其他的核心流程就没有关系了,这只是说与这两个核心流程的关系更加紧密罢了,这也是由BPEL4WS系统的特点所决定的)。 以上两种人员角色的工作十分的重要,他们的工作降低了复杂的外部Web服务可能对系统开发带来的干扰性程度,因此我们在作系统开发时要尽量分配专职人员负责这些工作。 图2:新增人员角色
给开发者的建议
结束语 在本篇文章中,如有任何错误或者不够完善的地方请您与我联系,我的邮箱地址是: qwang@mb1.ksp.fujixerox.co.jp,十分感谢您的反馈意见。 另外,由于我目前正在从事BPEL4WS语言的集成开发环境的设计和开发,如果您对这方面有什么好的建议也可以直接来信和我联系,谢谢。
参考资料 |
-- 作者:luccy -- 发布时间:8/31/2006 2:25:00 PM -- BPEL4WS语言介绍,第3部分: 利用UML对BEPL4WS系统进行建模 级别: 初级 王强, 软件工程师 商业流程执行语言BPEL4WS(Business Process Execution Language For Web Services)是专为整合Web Services而制定的一项规范标准。它从本质上来说是IBM的WSFL和Microsoft的XLANG的结合物,目前已经成为业界标准。WSFL 支持图形化的流程,而XLANG在结构化构造方面有独到的方法,而BPEL4WS正是吸取了两者的优点,同时摒弃了一些复杂繁琐的部分,形成了一种较为自然的描述商业活动的抽象高级语言。 引言 (注:对于BPEL4WS的基本语法介绍以及UML的详细语言规范由于篇幅原因并没有包括在本文中,读者可以参阅附录中的相关资料介绍;在文中出现的"BPEL4WS系统"与"用BPEL4WS语言开发的商业系统"同义)
正文 一切事情都是有因有果的,为了更好的学习如何对BPEL4WS系统建模,还是在一开始先让我们来看看我们之所以要利用UML对BPEL4WS系统进行建模的原因是什么,也就是看看用UML对BPEL4WS系统建模的重要性在哪里。 为什么要对BPEL4WS系统建模 建模是开发优秀软件的所有活动中的核心部分,其目的是把所要设计的结构和系统的行为沟通起来,并对系统的体系结构进行可视化和控制。我们对一个正在构建的BPEL4WS系统建模是为了能更好地理解它,而且对BPEL4WS系统建模还有可能为我们提供简化系统和复用组件的机会,同时我们为BPEL4WS系统建模可以更好的管理系统中潜在的风险。不成功的软件项目失败的原因各不相同,而所有成功的项目的成功原因在很多方面都是相似的。任何一个成功的软件组织有很多成功的因素,其中共同的一点就是对建模的采用。BPEL4WS系统模型是对现实商业流程的简化,BPEL4WS系统模型为我们提供了整个系统运作的蓝图。在BPEL4WS系统模型中既应该包括详细的计划,也应该包括从很高的抽象层次考虑系统的总体计划。通常来说,一个好的模型应包括那些与系统有紧密关系的主要元素,而忽略那些教松散的次要元素。每个BPEL4WS系统都可以从不同的方面用不同的模型来描述,而且每个模型都是一个在语义上闭合的系统抽象。我们所建立的模型应该既可以体现出BPEL4WS系统的结构性,强调整个系统的组织特性;同时也应该可以体现出BPEL4WS系统的行为性,即强调系统的动态方面。 也许有的开发者会问,BPEL4WS使用起来并不复杂,而且也没有复杂的数据结构和数据处理,那么我们为什么还要对BPEL4WS系统建模呢?BPEL4WS本身确实不是很复杂,但复杂的是千变万化的商业流程和商业行为,复杂的是分布在Internet上的大量的Web服务以及它们所提供的接口,我们对BPEL4WS系统建模是为了能够更好地理解我们正在开发的系统。我们通过对BPEL4WS系统建模,至少要达到以下四个目的: 可以明确地讲,由于现在的商业系统变得越来越大、流程也越来越复杂,建模的重要性也相应的就越变越大,因为我们不能仅凭想象来完整地理解一个十分复杂的商业流程系统,所以我们要通过对它建模来使我们更好的了解它。 为什么选用UML作为BPEL4WS系统的建模语言 UML(Unified Modeling Language)即统一建模语言,是一种绘制软件蓝图的标准语言,它可以贯穿于软件开发的每一个阶段。虽然UML和RUP都是Rational公司的产品,但实际上UML是独立于具体的过程的,也就是说我们也可以采用其他的软件过程,但由于UML和RUP在某些概念方面是相同的(关于结合RUP的一些内容,在上一篇文章中有所介绍),所以结合RUP使用UML对系统建模可以达到事半功倍的效果。正像UML的一位创始人说的那样:"在未来的5年内,UML与RUP将变成每一个软件开发人员都应了解和掌握的技术",所以我认为不论你使不使用它们,你都应该了解他们,因为它们是无数前辈的经验总结,站在巨人的肩膀上成长进步又何乐而不为呢。对于我们来说最重要的是当我们利用UML对BPEL4WS系统建模时,我们可以很好的描述出BPEL4WS系统的静态特性和动态特性,而且还可以体现出BPEL4WS系统本身所具有的一些特点,这正是我们所需要的。 对于软件系统,有几种建模的方法。最普通的两种方法是从算法的角度建模和从面向对象的角度建模。传统的软件开发往往是从算法的角度进行建模,所有的软件都用过程或函数作为其主要构造块。这种观点导致开发人员把精力集中在控制流程和对大的算法进行分解上。除了用这种方法建立的模型是脆弱的之外,采用这种方法没有其他本质上的害处。但当需求发生变化以及系统增长时,用这种方法建造的系统就会变得难以维护。现代的软件开发采用面向对象的角度进行建模,所有软件系统都用对象或类作为其主要构造块,而且当前的大多数程序语言、操作系统和工具在一定的方式上都是面向对象的。所以我们可以肯定地说,面向对象方法是软件开发方法的主流部分,其原因很简单,因为事实已经证明,它适合于在各种问题域中建造各种规模程度和复杂度的系统,这也就是说我们也可以采用面向对象方法来对BPEL4WS系统进行设计和开发。其实这是显而易见的,因为整个BPEL4WS系统从本质上来说完全是基于面向对象技术和组件技术的。目前业界中最好最完备的面向对象建模语言就是UML(Unified Modeling Language)了,我们利用UML可以对要构建的系统进行可视化、详述、构造和文档化,而这几个方面也正是对BPEL4WS系统建模的主要目的。所以自然而然的,UML就成为了我们最佳的选择。 学习用UML建模要注意什么 整个UML语言规范是相当复杂的,所以我们学习时一定不能贪多贪快,要一边学习一边理解,要结合着UML的特点和构成结构来学习。 首先我们要知道,虽然我们在系统开发的过程中要使用UML,但是UML是独立于过程的,我们最好把它用于以用况为驱动,以体系结构为中心,迭代及增量的过程中,这样才能最大程度的发挥出它的特长。我们在整个系统的开发过程中,UML可以完成的工作包括:可视化;详述;构造;文档化,而这些工作正是任何一个系统开发过程中(当然包括BPEL4WS系统)最重要的工作,所以我们可以把UML用于复杂的软件密集型系统。 其次,我们在学习时要牢记构成整个UML的三个要素: 只有完全掌握了每个UML元素的用法和特点,才能在对BPEL4WS系统建模的过程中做到心中有数,临阵不慌。 <二>用UML来构架BPEL4WS系统的体系结构。 系统体系结构或许是最重要的制品,它可以驾驭我们不同的观点,并且在整个项目的生命周期内控制对系统的迭代和增量式开发。随着软件过程的不断发展,体系结构这个名词已经变得越来越流行起来,那么到底什么是体系结构呢?总的来说,我们可以把体系结构描述成是一组有关下述内容的重要决策: (注:软件体系结构不仅关心结构和行为,而且还关心用法、功能、性能、弹性、复用、可理解性、经济技术约束及其折衷,甚至还要涉及到审美的考虑) 在我们对一个复杂的系统建模时,最好用5个互连的视图来描述这个系统的体系结构。每一个视图是在一个特定的方面对系统的组织和结构进行的投影,针对不同的系统,每个视图的重要性是不同的。比如说对于一般的MIS系统来说,用况视图和设计视图是最重要的部分,相比之下,其它视图如实现视图和实施视图就显得不是至关重要的了;而对于BPEL4WS系统来说,除了用况视图和设计视图很重要外,实现视图和实施视图对于整个BPEL4WS系统建模来说是十分十分重要的,这是由于BPEL4WS系统对存在于Internet上的Web服务的依赖性所造成的,只有构建好完整详细的实现视图和实施视图,我们才能在最大的程度上保证整个BPEL4WS系统建模的完整性和可靠性,才能最大程度的减少潜在的风险。 下面简要介绍一下这5种视图的特点: 用况视图(Use case view):--〉包含用况 用况视图实际上并没有描述软件系统的组织,而是描述了形成系统体系结构的动力。对BPEL4WS系统建模时,整个用况视图的静态方面由用况图表现;动态方面由交互图、状态图和活动图表现。对于BPEL4WS系统来说,一个完备的用况视图可以在最大程度上体现出商业用户的需求,而且可以为系统开发后期的review和测试活动提供很好的参考,也是测试用例编写的基础。 设计视图(Design view):--〉包含类、接口、协作 这种视图主要支持系统的功能需求,即系统提供给最终用户的服务。对BPEL4WS系统建模时,整个设计视图的静态方面由类图和对象图表现;动态方面由交互图、状态图和活动图表现。对于任何系统的建模活动来说,评价建模水平的标准归根结底还是主要由设计视图体现的,这是因为开发人员正是利用这个视图来完成所有的用户功能需求,而用户所关心的恰恰就是所建立的系统是否能满足用户的所有功能需求。 进程视图(Process view):--〉包含形成系统并发与同步机制的线程和进程。 进程视图主要是针对系统的性能、可伸缩性和系统的吞吐量。对BPEL4WS系统建模时,整个进程视图的静态和动态方面的表现与设计视图基本相同,但进程视图注重于描述线程和进程的主动类,而在BPEL4WS系统中最重要的主动类就是流程本身了(整个流程本身被抽象成主动类),所以对于流程本身的描述,包括流程进程的并发和同步机制等内容,都要在进程视图中很好的体现出来。 实现视图(Implementation):--〉包含用于装配与发布物理系统的构件和文件。 在BPEL4WS系统中,整个实现视图的静态方面由构件图表现;动态方面由交互图、状态图和活动图表现。在构建实施视图时要多注意构件图的构建,要利用构建图来体现出BPEL4WS系统所独有的特点。(具体对构件图建模的介绍在下一篇文章中) 实施视图(Deployment view):--〉包含了形成系统拓扑结构的节点。 在BPEL4WS系统中,我们利用实施视图来描述对组成整个物理系统的部件的分布、交付和安装。整个实施视图的静态方面由实施图表现;动态方面由交互图、状态图和活动图表现。任何一个系统最终都是要交付用户使用的,而实施视图正是系统交付使用的基础,而且BPEL4WS系统在系统发布上的特点正是由实施图来体现的。(具体对实施图建模的介绍在下一篇文章中) 以上这5种视图每一种都可以单独使用,也可以互相作用,互相交互。在BPEL4WS系统中,我们一定要把体系结构作为一个重要的建模制品,并且要使UML注重于对整个BPEL4WS系统体系结构的不同视图进行建模。
给开发者的建议
结束语 在本篇文章中,如有任何错误或者不够完善的地方请您与我联系,我的邮箱地址是: 国内邮箱: wq7961@263.net公司邮箱: wang.qiang@fujixerox.co.jp(如果用中文的话,最好发到国内信箱,谢谢) 十分期望收到您的反馈意见。 另外,由于我目前正在从事BPEL4WS语言的集成开发环境的设计和开发,如果您对这方面有什么好的建议也可以直接来信和我联系,谢谢。
参考资料 UML(Unified Modeling Language)语言规范 v.1.5 RUP(Rational Unified Process)语言规范 |
-- 作者:luccy -- 发布时间:8/31/2006 2:28:00 PM -- BPEL4WS语言介绍,第4部分: 有针对性的利用UML核心架构 级别: 初级 王强, 软件工程师, 日本富士施乐(FujiXerox) 商业流程执行语言BPEL4WS(Business Process Execution Language For Web Services)是专为整合Web Services而制定的一项规范标准。它从本质上来说是IBM的WSFL和Microsoft的XLANG的结合物,目前已经成为业界标准。WSFL 支持图形化的流程,而XLANG在结构化构造方面有独到的方法,而BPEL4WS正是吸取了两者的优点,同时摒弃了一些复杂繁琐的部分,形成了一种较为自然的描述商业活动的抽象高级语言。 (注:对于BPEL4WS的基本语法介绍以及UML的详细语言规范由于篇幅原因并没有包括在本文中,读者可以参阅附录中的相关资料介绍; 正文 根据不同系统的不同性质,一些模型可能比另一些模型要重要。例如,对于数据密集型系统,表达静态设计视图的模型将占主导地位。对于图形用户接口密集型系统,静态和动态用况视图就显得相当重要。在实时系统中,动态进程视图尤为重要。而在多层分布式系统中,尤其是在BPEL4WS系统中,实现模型和实施模型相对于其它系统来说就变得更加的重要。 在利用BPEL4WS语言进行系统开发的过程中利用UML进行建模的方法和对普通的软件系统进行建模的方法大体上是相同的,但由于BPEL4WS系统本身的特点决定了只有针对性地进行建模活动才能取得更有价值的成果,再加上利用UML建模的过程实际上就是在遵循UML Specification的基础上,利用UML提供的一些核心要素对要开发的系统进行可视化、详述、构造和文档化的过程,所以我们可以针对UML的三个基本核心要素(基本构造块、规则、公共机制)来结合BPEL4WS语言的特点来有针对性地进行建模活动。而如何有针对性的利用UML核心架构对BPEL4WS系统进行建模成为了一个重要的问题,在下面的内容中将会较细致的介绍UML中主要元素的特点和如何在建模活动中有倾向性地向BPEL4WS系统靠拢。 在UML中的基本构造块可以划分为主要的三大类,每一类又可以细分为上图所示的许多小类。对于一个小型的项目来说,也许我们只会用到这些元素的一部分,但对于一个规模较大、较复杂的项目,特别是像BPEL4WS系统这样的多层分布式系统来说,在我们建模的过程中,基本上会用到上面的每一种构造块,只是侧重点要根据项目的特点的不同而定了。在UML的构造块中,我们利用"事物"可以对BPEL4WS模型中最具代表性的成分进行抽象;利用"关系"把BPEL4WS系统中的各种相关事物结合在一起;利用"图"来聚集整个BPEL4WS系统中的相关的事物。接下来让我们来分析每一类基本构造块的特点,以及如何有针对性地利用它们对BPEL4WS系统进行建模。 <1.1>基本构造块中的4种事物: 类(Class):是对一组具有相同属性、相同操作、相同关系和相同语义的对象的描述。我们利用一个类可以实现一个或多个接口。在BPEL4WS系统中,类是最基础的系统构造部分,值得我们多加注意的是我们应该把外部服务抽象成类的概念来进行建模活动,这在后面的类图介绍中会进行解释。 接口(Interface):是描述了一个类或构件的一个服务的操作集合。因此,接口描述元素的外部可见行为。一个接口可以描述一个类或构件的全部行为或部分行为。值得我们注意的是,我们只是利用接口定义了一组操作的描述(即特征标记),而不是操作的实现,所有具体的实现都由类或者构件来完成。在BPEL4WS系统中,如果外部的Web服务提供给我们的服务是"暗盒操作",也就是我们不知道操作的具体内部流程,我们就可以把这些操作抽象到某个接口中,而这些接口由那些抽象成类的Web服务来实现。 协作(Collaboration):定义了一个交互,它是由一组共同工作以提供某协作行为的角色和其他一些相关元素构成的一个群体,这些协作行为从范围上来说要大于所有元素的各自行为的总和。因此,协作是有结构、行为和维度的。要注意的一点是,一个给定的类可以参与几个协作,而这些协作表现了系统构成模式的实现。我们在对BPEL4WS系统建模的时候,在抽象出系统相应的用况之后,就要用协作来实现这些用况,用况就好比是一篇论文的前言,告诉了我们这篇论文是讲什么的,而协作就是具体的内容。 用况(Use case):是对一组动作序列的描述,系统执行这些动作序列将产生一个对某个特定的参与者有特定价值的结果。我们利用用况来对BPEL4WS模型中的行为事物结构化,我们通常通过协作来实现某一个用况。如果想建立一个完善的BPEL4WS系统模型,用况可以说是至关重要的部分,因为所有的用户需求我们都要在用况中体现出来,可以说用况是开发人员与用户进行交互的窗户,在系统的测试阶段,测试用例的创建也要以用况为基础,不论是BPEL4WS系统还是其他系统,用户满意度才是判断这个系统是否成功的最重要的因素。 主动类(Active class):是这样的一种特殊的类,其对象至少拥有一个进程或线程,并且它能够启动控制活动。主动类的对象所描述的元素的行为与其他元素的行为并发,除了这一点之外,它和类是一样的。由于BPEL4WS流程本身就具有主动类的特征(每一个流程拥有自己的进程,并能自动启动控制活动),所以我们可以把流程本身抽象成主动类。 构件(Component):是整个系统中物理的、可替代的部件,它遵循且提供一组接口的实现。在一个系统中,你将遇到不同类型的部署构件,如 C O M +构件和Java Beans,以及在开发过程中所产生的制品构件,如源代码文件。通常构件是一个描述了一些逻辑元素(如类、接口和协作)的物理包。对于构件在BPEL4WS系统中的使用,我们可以把每一个为我们提供Web服务的服务站点抽象成是一个特殊的"构件",具体介绍在构件图的介绍中说明。 节点(Node):是在运行时存在的物理元素,它表示了一种可计算的资源,它通常至少有一些记忆能力和处理能力。一个构件集可以驻留在一个节点内,也可以从一个节点迁移到另一个节点。在一般的系统建模时,如在C/S模式的时候,节点往往就是客户机和服务器;而在N-Tier模式时,也就是多层架构时,除了客户机和服务器外,还要将应用服务器,也就是中间层建模为相应的节点。在BPEL4WS系统中,比较特殊的一点是我们应该将一个服务提供商抽象成是一个节点,在这个特殊的节点中提供了一系列的Web服务,更详细的内容在实施图的说明中介绍。 <1.1.2>行为事物(Behavioral thing):是UML模型的动态部分。我们可以把它们看作是模型中的动词,它们描述了系统中存在的行为动作。在利用UML对BPEL4WS系统进行建模时,共有两类主要的行为事物可以供我们使用: 交互(Interaction):是这样一种行为,它由在特定语境中共同完成一定任务的一组对象之间交换的消息组成。一个对象群体的行为或单个操作的行为可以用一个交互来描述。交互涉及一些其他元素,包括消息、动作序列(由一个消息所引起行为)和链(对象间的连接)。 状态机(state machine):是这样一种行为,它描述了一个对象或一个交互在生命期内响应事件所经历的状态序列。单个类或一组类之间协作的行为可以用状态机来描述。一个状态机涉及到一些其他元素,包括状态、转换(从一个状态到另一个状态的流)、事件(触发转换的事物)和活动(对一个转换的响应)。 在这里,由于篇幅关系,只介绍了行为事务的基本概念,在我们对BPEL4WS系统建模的时候,对于行为事务的建模是体现在相应的系统图模型中,这在下面的图模型说明中会有介绍。 <1.1.3>分组事物(Group thing):是UML模型的组织部分。它们一般是由整体系统分解下来的小的功能集合。在所有的分组事物中,最主要的分组事物是包,而在对BPEL4WS系统建模时我们利用最多的也是包。 包(Package):是把元素组织成组的机制,这种机制具有多种用途。结构事物、行为事物甚至其他的分组事物都可以放进包内。包不像构件(仅在运行时存在),它纯粹是概念上的(即它仅在开发时存在)。在BPEL4WS系统中,包的使用比较自由,我们可以根据自己的需要划分系统中的各个部分,例如可以按外部Web服务的功能来划分这些Web服务。 (注:包是用来组织UML模型的基本分组事物。它也有变体,如框架、模型和子系统等(它们是包的不同种类)。在JAVA中已经直接支持了包的概念,而在C#中虽然没有明确提出包的概念,但是C#中的命名空间概念实际上与包的概念是一致的) <1.1.4>注释事物(Annotation thing):是UML模型的解释部分。我们可以用注释事物来描述、说明和标注整个UML模型中的任何元素。有一种最主要的注释事物,我们称为注解。 注解(Note):是一个依附于一个元素或一组元素之上,对它进行约束或解释的简单符号。注解可能是大家最容易忽视的部分,当我们编码的时候,程序注释的重要性我想大家都知道,而当我们对BPEL4WS系统或其他系统建模的时候,确容易忘掉为我们建立的系统模型元素加上详细的注释,对一个中小型系统来说,也许并不会有太大的危害,而对于一个复杂的系统模型来说,也许一时的偷懒会造成以后致命的潜伏的错误,所以宁可在建模时放慢进度也要争取建立一个完备的系统模型,为以后的review和测试阶段打下良好的基础。 <1.2>基本构造块中的4种关系: 关联(Association): (注:聚合是一种特殊类型的关联,它描述了整体和部分间的结构关系) 泛化(Generalization): 实现(Realization): 在BPEL4WS系统中,一般来说,我们会在两个地方需要使用实现关系,一是用在接口和实现它们的类或构件之间,另一种是用在用况和实现它们的协作之间,这些地方都是具有BPEL4WS系统特性的地方,大家在建模的时候要多加注意。 <1.3>基本构造块中的9种图: 对象图(Object diagram):展现了一组对象以及它们之间的关系。 用况图(Use case diagram):展现了一组用况、参与者(一种特殊的类,可以为用户或者是别的系统)及其它们之间的关系。 顺序图(Sequence diagram): 协作图(Collaboration diagram): (注:在这里,我要对交互图作一些补充说明,首先,顺序图和协作图都是交互图,而且顺序图和协作图是同构的,这也就意味着它们是可以相互转换的。另外一点需要注意的事,我们在系统建模的时候应该使交互图专注于整个系统的动态视图,这是因为UML中的交互图本质上展现了一种交互,而这种交互是由一组对象和它们之间的关系组成的,包括了在它们之间可能发送的消息) 状态图(Statement diagram):展现了一个状态机,它由状态、转换、事件和活动组成。 活动图(Activity diagram):是一种特殊的状态图,它展现了在系统内从一个活动到另一个活动的流程。 构件图(Component diagram):展现了一组构件之间的组织和依赖。 实施图(Deployment diagram):展现了对运行时处理节点以及其中的构件的配置。 (注: 在对BPEL4WS系统建模时,并不限定仅使用这9种图,但这9种图在实际应用中是最常用也是最方便使用的)
<二>规则 在对BPEL4WS系统建模的时候,我们不能简单地把UML构造块按随机的方式放在一起。像任何语言一样,UML有它自身的一套规则,这些规则描述了一个结构良好的模型看起来应该像什么。对于为BPEL4WS系统所构建的模型,我们要求这个模型应该在语义上是前后一致的,并且与所有的相关模型协调一致。在建模的时候,UML有用于描述如下事物的语义规则: 命 名:为事物、关系和图起名。 范 围:给一个名称以特定含义的语境。 可见性:怎样让其他人使用或看见名称。 完整性:事物如何正确、一致地相互联系。 执 行:运行或模拟动态模型的含义是什么。 值得注意的一点是,当我们对BPEL4WS系统进行建模时除了要建造一些结构良好的模型以外,我们在系统的开发期间所建造的模型往往需要发展变化,并可以由许多人员(所有的项目涉及人即Stakeholders)以不同的方式、在不同的时间进行观察。由于这个原因,下述的情况是常见的,即我们不仅要建造一些结构良好的模型,也要建造一些这样的临时模型: 省 略:隐藏某些元素以简化视图。 不完全性:可以遗漏某些的元素。 不一致性:不保证模型的完整性。 在BPEL4WS系统开发的整个生命期内,随着系统细节的展开和变动,不可避免地要出现这些不太规范的模型。但我们应该时刻牢记,我们的任务是专注于BPEL4WS系统中最重要的分析、设计和实现,而为了解决这些重要问题,将促使我们不断地修改我们所建立的模型、完善我们所建立的模型,这样随着时间的推移和系统设计的深入,我们为BPEL4WS系统所建立的模型将具有更好的结构。
<3.17>详述:在建模的过程中,我们利用UML的图形表示发来对BPEL4WS系统进行可视化,利用UML的详述来描述BPEL4WS系统的细节问题。在文章前面提到的注释的问题实际上就是详述机制的问题,一个完备的BPEL4WS系统不仅要包括完整的系统模型元素,还要有详细的详述才能称得上是一个健壮的系统。 <3.2>修饰:UML表示法中的每一个元素都有一个基本符号,可以把各种修饰细节加到这个符号上以扩展其含义。在BPEL4WS系统中,我们可以较自由的对系统中的各个元素进行修饰以扩充其含义,但要注意要保证这种扩充是在受控制的范围中。 <3.3>通用划分:在对BPEL4WS系统建模时,我们可以采用两种通用划分的手段,一种是对类和对象的划分(类是一个抽象,而对象是这种抽象的一个具体形式);第二种是对接口和实现的分离(接口声明了一个契约,而实现则表示了对该契约的具体实施,它负责如实地实现接口的完整语义)。 <3.4>扩展机制:扩展机制是对已有的UML语义按不同系统的特点合理地进行扩展。 UML扩展机制包括: <3.4.1>构造型(Stereo type): <3.4.2>标记值(Tagged value): <3.4.3>约束(Constraint): (注:由于BPEL4WS系统本身所固有的特点,决定了在我们对其进行建模时不得不对UML中的一些部分进行扩展,但有一点我们必须要注意,那就是我们一定要让我们对UML所作出的扩展保持在我们的控制范围内,简单的说就是我们只可以以受控的方式来进行扩展,而不能任意地、无限制地进行扩展,我们必须保证我们利用UML扩展机制对BPEL4WS系统所作的建模活动是可理解、可控制的,如果任意地扩展,就会使我们在对系统进行建模的过程中偏离利用UML建模的真正目的--信息交流)
BPEL4WS语言规范 v.1.1 |
-- 作者:luccy -- 发布时间:8/31/2006 2:34:00 PM -- 抱歉,图都贴丢了。感兴趣的可以根据链接直接看原文。多谢! |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
109.375ms |