扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
引言
创建业务集成模块的方法有两种:第一种方法是直接在 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领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者