设计和开发更高效的 SOA,第 3 部分
使用 Rational Software Architect 和业务流程建模符号描述业务流程
系列内容:
此内容是该系列 # 部分中的第 # 部分: 设计和开发更高效的 SOA,第 3 部分
此内容是该系列的一部分:设计和开发更高效的 SOA,第 3 部分
敬请期待该系列的后续内容。
简介
本文是这个 5 部分系列文章中的第 3 部分,本系列介绍了如何使用最新的 Rational 最佳实践开发流程指南和建模工具来设计和构造基于面向服务架构的健壮、灵活的 IT 解决方案。Rational SOMA 2.9 提供了具体的最佳实践开发流程指南,用于成功实现 IT 服务解决方案设计。Rational Software Architect 提供了行业领先的建模工具,支持 Object Management Group 的最新 SoaML 服务建模标准。
在第 1 部分中,我们介绍了 Rational Software Architect 7.5.4 及更高版本,还介绍了 Rational SOMA 2.9,这是一种统一的工具集和流程指南产品,可加速服务解决方案设计和开发工作。第 2 部分概述了流程指南内容,还特别介绍了 Rational SOMA 2.9 的特性。
本文是本系列的第 3 部分,介绍了如何利用 Rational Software Architect,构造使用业务流程建模符号(Business Process Modeling Notation,BPMN) 的业务流程模型。首先,我们将简要讨论业务流程模型所关注的,谁通常会选择它(为什么会选择)、以及它如何适应流程。随后,我们将概述 Rational Software Architect 支持的 BPMN 的各种建模元素。最后,我们将展示如何利用业务流程建模工具来构建一个小型业务流程模型。
业务流程模型
从根本上讲,业务流程模型就是一种描述和归档业务(或业务的一部分)如何运作(或希望如何运作)的方法。业务流程模型可捕获必须执行的步骤或任务(包括决策点)、执行这些步骤或任务的实体或角色(例如,人员、IT 系统)以及它们如何交互以处理和共享信息(数据)。
实现业务流程建模的目的是多种多样的,实现的抽象和细节层面也各有不同。下面给出了几个示例。
- 一家企业的业务主管可能希望捕获其当前业务流程,并将其作为输入来分析如何提高效率。这可能涉及到创建更改业务流程模型,以便描述关于如何实现这一目标的想法,同时还包括利用 WebSphere Business Modeler 等工具,模拟现有 (as-is) 和目标 (to-be) 流程的绩效。
- 新增或现有业务流程模型可用于为服务识别提供面向业务的输入,如第二篇文章所述。
- IT 开发组织可能会创建可执行的业务流程,举例来说,以便在 WebSphere Process Server 上进行部署。
本文关注的是第二个示例演示的使用情况。我们将业务流程模型视为一种业务部门与 IT 部门在 SOA 和业务驱动开发的上下文中沟通的方法。
Rational Software Architect 包含基于 Object Management Group 的 BPMN 2.0 标准的创建和编辑业务流程模型的能力。这种支持是在 Rational Software Architect 7.5.4 中添加的,并在后续发布版中得到了增强。它与 Rational Software Architect 中包含的其他服务建模工具的良好集成绝非偶然。
BPMN 概述
在这部分中,我们将简要介绍 BPMN。但首先,我们将在 Rational Software Architect 中创建一个新的 BPMN 模型,这将为我们提供一些素材供我们查阅,也将提供一种上下文,使得各个片段更易于理解。它还帮助提供 BPMN 编辑器和工具的简介。
创建一个 BPMN 模型项目
在 Rational Software Architect 中进行业务流程建模的第一步是在项目中创建业务流程模型。假设我们目前尚无适当的项目,则我们需要创建一个,并在其中使用 Model Project 向导来创建一个新业务流程模型。如果您尚未处于 Modeling 透视图中,则应在此时打开这个透视图,方法是在 “Window” 菜单中选择 “Open Perspective > Other...”。然后在 “File” 菜单中选择 “New > Model Project” 来调用 Model Project 向导。
在 Model Project 向导中(见图 1),输入新项目的名称,确保采用如图所示的其他设置,然后按下 “Next”。
图 1. Model Project 向导

在 “Create Model” 页面(见图 2) 中,选择 “Business Process Modeling” 类别,然后选择 “Blank Process Model” 模板。
注意:如果 “Business Process Modeling” 类别未列出,请尝试选中 “Categories” 列表下方的 “Show All Templates” 复选框。如果仍未出现在列表中,则或许您未安装 Rational Software Architect 的 Business Process Modeling 功能,此时则需要首先完成安装,之后再继续操作。
图 2. Model Project 向导的 Create Model 页面

为您的新模型起一个好的名称(例如 “MyProcess”),然后单击 “Finish”。此时,您的新项目中的新业务流程模型应该在 BPMN 编辑器中打开。流程模型最初是空白的。工作台应如图 3 所示。
图 3. 显示新业务流程模型的工作台

与 BPMN 相关的工作台元素
如果您刚刚开始接触业务流程建模,那么可能对于工作台的各相关部分不太熟悉,让我们来简单了解一下这些部分。
中央的一大块空白空间是在业务流程模型编辑器中打开的新建(空的)业务流程模型。在构建业务流程模型时,我们主要关注的就是这个位置。
紧接其下的就是 Properties 视图(见图 4)。同样,它显示的格式和内容特定于当前活动视图或编辑器中选定的内容。由于业务流程模型编辑器处于活动状态,但未选定任何内容,因此 Properties 视图显示了所编辑的流程的属性。其中包含的属性无法一次性全部显示,因此左侧提供了选项卡,允许您选择感兴趣的属性类别。
图 4. Properties 视图

编辑器的右侧提供了面板(见图 5,其中展开了 Task 折叠项,使您能够看到全部可用项目)。这个面板中的这些条目就是可用于构建流程模型的 “构建块”。
图 5. 业务流程建模面板

本文将要构建的示例不会用到全部这些元素,因此这里仅做简单介绍,使您简单了解可以使用 BPMN 描述的内容类型。
- Text Annotation 用于为流程模型图添加一个解释性的文本框。它并没有潜在语义。应将其视为注释或记录(尽管还存在其他包含记录的方法)。
- Group 就是一种在业务流程模型中设定边界隔开其他元素的方法。它是一种纯图示性方法,并无潜在语义。
- Connector 用于建立与其他业务流程模型元素之间的各类连接。它所建立的连接类型取决于您选择的源和目标。举例来说,如果您使用 Connector 工具创建从一个任务到另一个任务的连接,则它将创建一个序列流连接,因为这是任务间惟一有效的连接类型。
- Data Object 用于表示流程所用的一个数据单元。它仅在流程运行的过程中存在,从这个角度来讲,它是瞬态 的。
- Data Store 用于表示数据的持久 存储(例如,数据库)。在其运行的时候,流程可在数据存储中检索和/或存储数据对象。
- Lane 表示活动的分组,通常用于表明一组活动均由相同的实体(例如,人员或 IT 系统)或者角色执行。
- Task 表示流程中的工作或活动的 “原子” 单元,即无法进一步细分(或者选择不得细分)的单元。面板提供了 4 种类型的 Task。
- Task 本身表示通用活动,仅包含名称和(可选的)记录。
- User Task 表示将由一名人员执行的活动(但通常可能由该人员调用某种类型的软件应用程序来完成)。可将其实现类型设置为 WebServiceHumanTask、WebService、Other 或 Unspecified。
- Business Rule Task 表示将由某种类型的业务规则引擎执行的活动。可将其实现类型设置为 WebServiceBusinessRuleTask、WebService、Other 或 Unspecified。
- Service Task 表示使用服务的活动。可将其实现类型设置为 WebService、Other 或 Unspecified。也可设置其操作,可设置为业务流程中一个接口的 BPMN 操作,或者 UML 模型中一个接口的 UML 操作。通常情况下,后者将是 SoaML «ServiceInterface» 的操作。
- Call Activity 表示将调用 Global Task(下文将加以说明)或另一个流程来完成其工作的流程。这为我们提供了在多种上下文中重用这些任务和流程的能力。
- Events 表示非本地执行流(也就是说,不使用序列流连接的执行流)。其类型分为 5 种。
- Start Event 和 End Event 分别用于表明流程的开始或终止。
- Intermediate Throw Event 表示执行将在相应的 Intermediate Catch Event 发生时继续。
- Boundary Event 附加到一个活动,表示某种类型的异常执行(也就是说,发生了某些导致活动的正常序列流无法执行的事件)。
- Gateway element 表示流程中的一个点,此时流程执行的本地流可能会发生变化。一个网关元素可有多个流入和流出序列流。
- Exclusive Gateway 表示一个决策点,具体 流出序列流将在此发生。将通过评估一项条件来确定使用哪个决策点。
- Inclusive Gateway 与 Exclusive Gateway 相似,不同之处在于可能出现多个 流出序列流(从而导致并行执行)。每个流出序列流都有一个条件,将通过评估此条件来确定对应序列流是否发生。其中的一个序列流可设置为默认序列流,在所有条件的评估结果均为 false 时发生。
- Parallel Gateway 将无条件 执行其全部流出序列流。也就是说,它总是会发起并行执行(当然,除非它只有一个流出序列流)。Parallel Gateway 的执行方式与全部流出序列流的条件均无条件地评估为 true 的 Inclusive Gateway 相同。
以上就是面板提供的全部内容。Project Explorer 中可能会出现了几种额外的 元素类型,同样有必要简单了解这些类型。如果您展开模型,您将看到类似于图 6 所示的屏幕。
图 6. Project Explorer 中的 MyProcess

MyProcess 下的每一个项目都表示可添加到流程模型之中的一种附加资源类别(最后一个项目除外,此项目代表流程本身)。每个项目都提供了一个上下文菜单,允许创建对应类型的新元素。与使用面板时相似,本文中构建的示例同样也不会用到全部这些元素,因此这里仅对各元素做简单介绍,帮助您更好地理解 BPMN。为了将尚未提及、但又必须引用的元素降至最少,我将按照与 Project Explorer 的显示顺序不同的顺序介绍元素。
- Global Tasks —— Global Task 表示原子(不可再分)工作单元。不同于上述可直接添加到流程的任务,Global Tasks 的可重用性体现为可从任意数量的流程中(通过 Call Activities)调用这些任务。
- Data Stores —— 上文中已经介绍了 Data Stores,也提到可以使用业务流程模型编辑器中的面板将其添加到流程。您通过这种方式创建的任何数据存储(当然,还包括您在此处创建的任何数据存储)都将显示在这里。这也就是说,Data Stores 可重用,可以从这个流程或其他流程中进行引用。
- Item Definitions —— Item Definition 表示数据结构或数据类型。BPMN 本身并未提供定义数据结构的方法。而是依靠其他标准或机制定义数据结构。Rational Software Architect 允许使用 XSD 类型或 UML 类定义 Item Definition 的结构。
- Messages —— Message 表示将在一个流程内的两个实体间(或两个流程间)发送的信息。Message 中包含对 Item Definition 的引用,用于定义其有效载荷。
- Escalations —— Escalation 表示非本地控制流,通常由流程引发,表示遇到了某些阻碍其正常完成的情况。通常,流程的调用方或父级元素将负责捕获并处理 Escalation。Escalation 可引用一个用于将信息从引发方传递到捕获方的 Item Definition。在流程内,您可以将一个 Event 与一个 Escalation 相关联,表明它引发或捕获了哪些情况。
- Signals —— Signal 与 Escalation 相似,同样代表非本地控制流、可以引用 Item Definition、也可被流程中的 Event 引用。不同于 Exception,Signal 通常是在正常 流程执行过程中引发的,不一定表示遇到了问题或某些意外情况。
- Interfaces —— Interface 存在的目的是容纳可被 Service Tasks 引用的 Operations。在创建 Interface 之后,您可以选定它并为其添加 Operations。对于每个 Operation,您都可以指定一条输入消息,还可以选择指定输出消息,这一切共同定义了 Operation 需要哪些数据、生成哪些数据。
构建一个 BPMN 流程模型
假设我们希望建模企业的订单处理流程。首先,我们确定订单处理部门要与另外三个部门协同工作。财务部门处理计价,生产部门处理生产调度和产品制造,发货部门处理按照订单为客户发货。我们决定将以上各部门分别表示为流程中的一个 Lane,以便明确表示哪些人员做哪些工作。
为创建第一个 Lane,我们单击面板中的 Lane 元素,然后在业务流程编辑器中单击,指出希望放置新 Lane 的位置。就此时而言,单击的位置无关紧要,因为稍后还可以重新安排位置。如果将第一个 Lane 命名为 “Order Processing”,则将得到如图 7 所示的效果。
图 7. Order Processing Lane

同样添加其他 Lane,结果如图 8 所示。
图 8. 4 个 Lane

接下来,我们将添加一个 Start Event,显示流程在何处开始。就像添加 Lane 一样,我们在面板中单击 Start Event,然后单击流程中希望放置该事件的位置。在本例中,我们将其放置在 Order Processing Lane 中靠近左侧的位置。将这个事件命名为 “Order Received”,此事件将启动整个流程。
我们希望表明确实收到了需要关注和处理的内容:订单。有必要将此建模为 Message,并在接收到此 Message 时触发 Start Event。为此,选定 Start Event,然后单击 Properties 视图中的 Triggers 选项卡(见图 9)。
图 9. Triggers 选项卡

为了添加 Message 事件触发器,请单击蓝色小信封图标。(如果希望创建其他类型的触发器,可单击信封图标旁边的下箭头,显示其他选项。)事件定义的名称并不重要,因此保留默认名称。但我们确实希望为其指定一条 Message,因此单击 Message 字段右侧的加号。见图 10。
图 10. 应在 Properties 视图的 Triggers 选项卡中按下的按钮

这将创建一条新 Message,我们将其命名为 “Order Message”。此外,我们还希望指定其中包含实际订单,因此单击 Structure 字段旁边的加号。这将创建一个新的 Item Definition,我们将其命名为 “Order”。这些新元素将显示在 Properties 视图中,也会显示在 Project Explorer 内我们的流程模型中(见图 11 和图 12)。
图 11. 显示了新元素的 Properties 视图

图 12. 显示了新元素的 Project Explorer

在接收到订单后,订单处理部门需要完成三项任务:
- 要求生产部门制造订单中的产品
- 通知发货部门即将发运产品的情况
- 要求计价部门开展订单的初始价格计算
这三项任务可同时完成,因此我们为流程添加一个 Parallel Gateway。另外还要为其他三个 Lane 各添加一个 Task,指明他们需要完成的工作。见图 13。
图 13. 添加 Parallel Gateway 和 Task 之后的情况

接下来,我们绘制序列流,显示至此为止的目标执行流。要在两个元素之间绘制序列流,一种便捷的方法就是将鼠标指针悬停在源元素(例如,Order Received Start Event)上,在连接器手柄出现时将鼠标指针移动到指向外部的手柄,按住鼠标左键、移动到目标元素,再松开鼠标按键。见图 14。
图 14. 绘制序列流

我们也要绘制从 Parallel Gateway 分别到之前添加的三个 Task 的序列流。见图 15。
图 15. 绘制另外三个序列流之后的情况

然后,添加所需的其他元素,完成流程模型示例(图 16。)
图 16. 完成后的流程

显而易见,这是一个非常简单的流程模型。现实中的业务流程往往要比这复杂得多。但它是一个非常好的示例,便于我们在下一篇文章中解释如何执行服务分析和建模。
结束语
在这篇文章中,我们介绍了如何利用 Rational Software Architect,构造使用业务流程建模符号 (BPMN) 的业务流程模型。首先,我们简要讨论了业务流程模型的关注重点、通常选择使用它的用户(及原因)、它如何适应整体流程。随后,我们概述了 Rational Software Architect 支持的 BPMN 建模元素。最后,我们展示了如何利用业务流程建模工具来构建一个小型业务流程模型。
后续内容
本系列的后续文章将具体介绍创建服务模型和解决方案来有效满足业务流程模型所表达的需求:
- 第 4 篇文章介绍了 Rational Software Architect 中的服务设计工具以及如何利用这种工具来构建与业务协调一致的服务模型;
- 第 5 篇文章介绍了使用 Rational Software Architect 构建的服务模型可如何加速有价值的服务解决方案工件的创建。这篇文章还特别侧重介绍了如何利用服务模型来创建 SCA 相关内容。
相关主题
- BPMN(业务流程建模符号)是 Object Management Group 提出的一种标准,指定了一种描述业务流程的符号。
- SoaML(面向服务架构建模语言)是 Object Management Group 的一个规范。SoaML 定义了描述和指定面向服务系统的符号和元数据模型。
- 观看包括两部分内容的系列视频 使用 Rational Software Architect 8.0 进行业务流程建模和 SOA 设计。
- 阅读 Bobby Woolf 的 developerWorks 文章 SOA 治理简介,进一步了解 SOA 和服务治理。
- 要了解更多关于 IBM Global Business Service 的专有服务设计和开发方法,请阅读 SOMA: A method for developing service-oriented solutions。
- IBM 现通过在很大程度上可以分离、可以分散采纳的实践的形式提供了商业化最佳实践内容。请访问 developerWorks 上的 IBM 最佳实践页面,以了解更多关于我们的实践方法的信息。
- IBM Redbook “使用Building SOA Solutions Using the Rational SDP” 是 Rational SOMA 中具体服务设计方法的主要灵感来源之一。该 Redbook 的最后一次更新时间是 2008 年,因此其中演示的工具有些过时。尽管如此,这仍然是您的 “书架” 中必备的一份出色的服务设计资料。
- Rational SOMA 2.9 中使用 SoaML 的大量服务建模方法均借鉴自 Jim Amsden 包含 5 部分的 IBM developerWorks 系列文章 “使用面向服务架构建模语言 SoaML 进行建模”。
- 访问 OASIS 服务组件架构 (SCA) 站点,进一步了解使用广泛的实现和运行时技术创建服务组件的这些开放行业规范。
- 下载 Rational SOMA 2.9。 这是 IBM 服务解决方案设计的商业化最佳实践内容。该 URL 指向 Rational SOMA 2.9 的预发布评估版本和一份可以使用 Rational Method Composer 发布的完整版本。Rational SOMA 也作为一种 Process Advisor 配置产品,随包含服务建模工具的 Rational Software Architect 8.0 及更高版本的各种变体提供。
- 下载 Rational Software Architect for WebSphere Software 的试用版。如果可以,我们建议使用版本 8.0 或更高版本。要体验 Rational Software Architect 的增强服务解决方案设计功能,您需要使用版本 7.5.4 或更高版本。如果您下载了版本 7.5,则请使用随 Rational Software Architect 一起安装的 IBM Installation Manager,以便升级到产品的最新版本,也就是 7.5.x 系列版本。