扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
引言
创建业务集成模块的方法有两种:第一种方法是直接在 WebSphere Integration Developer 中创建新的业务集成模块。另一种方法是在 WebSphere Business Modeler 中创建一个新的业务建模项目,然后以 WebSphere Process Server 支持的格式将该业务建模文件导出到 WebSphere Integration Developer 中。为遵循业务流程管理的方法和减少开发业务集成模块的工作,我们建议使用第二种方法。
在本文中,我们将在四个部分中给出五个示例,介绍如何在 WebSphere Business Modeler 中使用不同的基本组件为业务流程建模。为帮助您了解 WebSphere Business Modeler 和 WebSphere Integration Developer 之间的映射,我们在下载文件中提供了所有示例代码。我们将建模的业务流程是一个应用程序,该应用程序自动从批发商那里为超市进货。超市从各批发商处获得报价,然后决定订购哪家的产品。
|
将业务项映射到数据类型
在这一部分中,我们将探讨如何把 WebSphere Business Modeler 中的业务项映射到 WebSphere Integration Developer 中相应的数据类型。表 1 显示了该映射。对于每个元素,我们均显示了如何在 WebSphere Business Modeler 中创建初始业务项,以及如何在 WebSphere Integration developer 中创建结果类型。
表 1. 业务项到数据类型的映射
| WebSphere Business Modeler 中的元素 | WebSphere Integration Developer 中的元素 |
| 业务项 | 数据类型 |
| 作为输入/输出参数的业务项数组 | 具有包含数组字段的新数据类型 |
| 文件夹层次结构 | 命名空间 |
将单个业务项映射到数据类型
首先,您需要定义 Quotation 业务项,该项包含三个字段。在 WebSphere Business Modeler 中,通过在项目树中选择 Business items 项可以定义业务项。下面的步骤将介绍如何定义业务项(如图 1 所示)。
FirstProject 的新业务建模对象。
Quotation。
ProviderName、ProductName 和 Price。另外,您还可以为其中的每个属性指定属性描述。
接下来,通过在项目树中选择当前项目项来导出业务建模项目。按照以下步骤导出业务建模项目:
现在,使用文件系统选项将导出的结果文件导入 WebSphere Integration Developer 中。
FirstProject 的新模块项目。
将业务项数组映射到容器
业务项编辑器可以方便地将属性定义为数组类型。例如,您可以定义与以下 Java™ 定义相对应的 Employee 业务项。
清单 1. Java 中的 Employee 定义
public class Employee {
public String name;
public String sex;
public int Age;
public Staff[] staff;
}
|
要将属性定义为数组类型,只需将 Maximum 属性的缺省值从 1 更改为 n,如图 3 所示:
图 3. 在 WebSphere Business Modeler 中使用数组字段定义业务项
在将业务项导入 WebSphere Integration Developer 后,您将看到创建了两个数据类型 Employee 和 Staff,如图 4 所示:
图 4. WebSphere Integration Developer 中具有数组字段的业务对象
我们希望作为一个方法的输出返回该数组,例如 Quotation[] getQuotations(){...}。WebSphere Business Modeler 可以为您生成此业务项。在 WebSphere Business Modeler 中按照以下步骤进行操作,如图 5 所示:
图 5. 在 WebSphere Business Modeler 中将任务输出定义为数组类型
在将业务项和流程导入 WebSphere Integration Developer 后,您可以看到创建了两个数据类型 Quotation 和 ListOf1ToUnboundedQuotations,如图 6 所示。自动创建了作为 Quotation 业务对象容器的 ListOf1ToUnboundedQuotations 业务对象。
图 6. WebSphere Integration Developer 中的 ListOf1ToUnboundedQuotations
将文件夹层次结构映射到命名空间
WebSphere Business Modeler 不允许在同一数据目录中有重复的业务项名称。类似地,为避免在 WebSphere Process Server 中有重复的数据类型名,每个业务对象都有其自己的命名空间,该命名空间与其在 WebSphere Business Modeler 中的数据目录相对应。
例如,在我们的基本项目中,由于 Quotation 在 supermarket\price 中,因此在导出它时,其命名空间将是 http://supermarket/price。导出的文件位置将是 supermarket\price\price.xsd。
按照这些步骤对 Quotation 业务项建模,该业务项将通过 Namespace http://supermarket/price 自动映射到 Quotation 数据类型。
supermarket,如图 8 所示:
price,并单击 Finish 按钮。
Quotation,并单击 Finish 按钮。如图 12 所示:
ProviderName、ProductName 和 Price 业务项属性。另外,您还可以指定属性描述。
price.xsd 并打开它,如图 13 所示:
Quotation 业务对象并检查生成的 Namespace,如图 14 所示:
|
将流程和任务映射到流程和调用操作
在这一部分中,我们将向您介绍如何将 WebSphere Business Modeler 中的流程和任务信息映射到 WebSphere Integration Developer 中的流程和调用操作。下表简要列出了从 WebSphere Business Modeler 到 WebSphere Integration Developer 的属性映射规则。
| WebSphere Business Modeler 中的元素 | WebSphere Integration Developer 中的元素 |
| 文件夹层次结构 | 命名空间 |
| 流程名称 | 流程端口类型名称 |
| 流程的输入/输出名称 | 流程端口类型的操作输入/输出参数 |
| 流程的输入标准 | 流程端口类型的操作名称 |
| 本地任务名称 | 参考合作伙伴端口类型名称 |
| 本地任务的输入/输出名称 | 参考合作伙伴端口类型的操作输入/输出参数 |
| 本地任务的输入标准 | 参考合作伙伴端口类型的操作名称 |
将流程映射到流程接口
supermarket。
QueryPriceProcess,如图 15 所示:
http://Processes/supermarket/QueryPriceProcess/QueryPriceProcessInterface,如图 16 所示:
将输入/输出名称映射到输入/输出参数
productName,对于 Associated Data 字段选择 String,对于其他属性保留缺省值,如图 17 所示:
quotation,对于 Associated Data 字段选择 Quotation,对于其他属性保留缺省值,如图 18 所示:
getPrice(而非 Input Criterion),对于其他属性保留缺省值,如图 19 所示:
getPrice 操作被添加到 QueryPriceProcess 接口中。输入名称是 productName,输入类型是 string;输出名称是 quotation,输出类型是 Quotation,如图 20 所示。
将任务映射到操作
VerifyProductName(而非 Task),如图 21 所示:
productName,对于 Associated Data 字段,选择 String,对于其他属性保留缺省值,如图 22 所示:
validProductName,对于 Associated Data 字段,选择 String,对于其他属性保留缺省值,如图 23 所示:
verifyProductName(而非 Input Criterion),对于其他属性保留缺省值,如图 24 所示:
productName 定义为输入名称,将 String 定义为输入类型。将 quotation 定义为输出名称,将 Quotation 定义为输出类型,并将 getQuotation 定义为输入逻辑。单击 Connections,连接 Input、VerifyProductName、Aprice 和 Output 任务,如图 25 所示:
VerifyProductName 接口。VerifyProductName 接口有一个 verifyProductName 操作。其输入名称为 productName,其输入类型为 string。其输出名称为 validProductNamee,其输出类型为 string,如图 26 所示:
Aprice 接口。它具有 getQuotation 操作。其输入名称为 productName,其输入类型为 string。其输出名称为 quotation,其输出类型为 Quotation,如图 27 所示:
QueryPriceProcessPartner 接口合作伙伴、VerifyProductNamePartner 和 ApricePartner 参考合作伙伴以及 stringVariable 和 QuotationVariable 变量,如图 28 所示:
|
从多个输入/输出任务映射到多个操作接口
在 WebSphere Integration Developer 中,由于一个接口通常有多个操作,因此我们需要在 WebSphere Business Modeler 中定义具有多个输入/输出的任务。要了解如何实现这一点,请在 WebSphere Business Modeler 中创建一个名为 MultiMethod 的新模型项目,并将下载文件 MultiMethod_Modeler.zip 导入到 MultiMethod 项目。
Decision、ProductQuotation 任务和 Merge 合并在一起,以构建 QueryPriceProcess 流程。ProductQuotation 任务包含两个方法,并使用 getPrice 从不同的批发商获取价格。流程的输入参数为 productName,它决定是调用 getPriceA 还是 getPriceB,如图 29 所示:
productA 和 productB 两个输入,如图 30 所示:
QuotationA 和 QuotationB 两个输出,如图 31 所示:
Decision 属性使用 WebSphere Integration Developer 中的一个表达式映射到 Flow。每个流都有一个 Java 表达式(返回 Boolean 值)控制该流是否继续。切换到 Output branches 选项卡,并选择 Yes 输出分支。确保 Expression 字段包含 'supermarket.QueryPriceProcess.Decision.Input' is equal to "ProductA",如图 36 所示:
getPriceA 和 getPriceB 已添加到 ProductQuotation 端口类型,如图 38 所示:
getPriceA 操作的分支,并单击 Details 选项卡,检查是否也正确生成了条件,如图 39 所示:
|
从 decision/merge 映射到 fork/join 流程控制元素
decision/merge 和 fork/join 都有多个传入分支和一个传出分支,并且两者都用于重新合并处理流程中的单独路径。不过,它们用于不同的建模情形,并且有不同的功能。
Merge 一般在独占决定之后使用。它在满足它的一个传入分支时就会运行。只要在合并时接收到输入,它就会立即将其作为输出发送出去。
与之相反,join 在 fork 之后才能够正常工作。合并在满足其所有传入分支时才会运行。它在转发之前将等待接收所有输入,同时发送所有输出。
我们在 MultiMethod 项目中已经介绍了 decision/merge 映射,因此该部分将集中讨论一下 fork/join 映射。
我们假定超市需要比较来自不同批发商的多个报价,然后决定购买哪个提供商的产品。Branch 项目引入了如何在 WebSphere Business Modeler 中创建并行任务,如图 40 所示:
图 40. 并行任务
WebSphere Business Modeler 中编排的左部分是 Fork 元素,右部分是 Join 元素。Fork 将处理流程拆分为两个或多个可选路径,使两个或多个任务能够并行执行。Fork 对其输入进行复制,并将它们沿着每个可选路径转发。
在 APrice、BPrice 和 CPrice 任务完成之后必须执行 MakeDecision 任务,而且这三个任务是同时而非按顺序执行的。使用 Fork 元素可以在 Join 元素重新合并流并继续到 MakeDecision 任务之前,并行完成 APrice、BPrice 和 CPrice 任务。
让我们更详细地研究一下此模型,然后将其导入到 WebSphere Integration Developer:
Branch 流程编排。由于 Join 将三个报价导出到 MakeDecision 任务(即导出结果是一个数组类型),因此 WebSphere Integration Developer 会自动生成 ListOf3To3Quotations 数据类型作为容器来保存 Quotation,如图 45 所示:
ListOf3To3Quotations 对象并将其传递到下一个活动 MakeDecision,如图 46 所示:
|
映射实现类型
在 WebSphere Business Modeler 中定义一个流程时,您可以为特定的任务元素选择一个实现类型。它提供五个实现类型来映射到服务组件类型:
在这一部分中,您将学习如何定义特定元素的实现类型。
在继续该部分之前,请在 WebSphere Business Modeler 中创建一个名为 ImplementationType 的项目,然后将 Basic.zip 下载文件导入到您的新项目。
VerifyProductName 的 Human Task 服务组件,如图 49 所示:
Aprice 人工任务实现。
|
总结
| ||||||||||||||||
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。