科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道使用 WebSphere Business Modeler 在 WebSphere Integration Developer 中构建业务集成模块

使用 WebSphere Business Modeler 在 WebSphere Integration Developer 中构建业务集成模块

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

学习如何使用 WebSphere® Business Modeler 构建更好的业务模型,以便以后在 WebSphere Integration Developer 中更方便地开发业务集成模块。

作者:ibm 来源:ibm 2007年10月6日

关键字: 技术 WEBSPHERE IBM 中间件

  • 评论
  • 分享微博
  • 分享邮件

引言

创建业务集成模块的方法有两种:第一种方法是直接在 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 所示)。

  1. 在 WebSphere Business Modeler 中,创建一个名为 FirstProject 的新业务建模对象。
  2. 从菜单栏选择 Business items - New - Business item。在 Name of new business item 字段中,输入 Quotation
  3. 指定三个业务项属性:ProviderNameProductNamePrice。另外,您还可以为其中的每个属性指定属性描述。

    图 1. 在 WebSphere Business Modeler 中定义 Quotation 业务项
    在 WebSphere Business Modeler 中定义 Quotation 业务项

接下来,通过在项目树中选择当前项目项来导出业务建模项目。按照以下步骤导出业务建模项目:

  1. 右键单击当前项目 FirstProject,然后选择 Export
  2. 选择 WebSphere Process Server 作为导出类型。
  3. 指定目标目录,并单击 Finish

现在,使用文件系统选项将导出的结果文件导入 WebSphere Integration Developer 中。

  1. 创建一个名为 FirstProject 的新模块项目。
  2. 通过右键单击 FirstProject 并选择 Import - File System,导入从 Modeler 导出的文件。选择导入的目录并单击 Finish。该步骤将导入业务对象,如图 2 所示:

    图 2. WebSphere Integration Developer 中的 Quotation 业务对象
    WebSphere Integration Developer 中的 Quotation 业务对象

将业务项数组映射到容器

业务项编辑器可以方便地将属性定义为数组类型。例如,您可以定义与以下 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 Business Modeler 中使用数组字段定义业务项

在将业务项导入 WebSphere Integration Developer 后,您将看到创建了两个数据类型 EmployeeStaff,如图 4 所示:


图 4. WebSphere Integration Developer 中具有数组字段的业务对象
WebSphere Integration Developer 中具有数组字段的业务对象

我们希望作为一个方法的输出返回该数组,例如 Quotation[] getQuotations(){...}。WebSphere Business Modeler 可以为您生成此业务项。在 WebSphere Business Modeler 中按照以下步骤进行操作,如图 5 所示:

  1. 单击 Task,选择 Attribute 选项卡,选择 Outputs 子选项卡,然后添加 Output
  2. 选择 Quotation 作为 Associated data,将 Maximum 属性的缺省值从 1 更改为 n。现在便在 WebSphere Business Modeler 中创建了作为任务输出的数组。


图 5. 在 WebSphere Business Modeler 中将任务输出定义为数组类型
在 WebSphere Business Modeler 中将任务输出定义为数组类型

在将业务项和流程导入 WebSphere Integration Developer 后,您可以看到创建了两个数据类型 QuotationListOf1ToUnboundedQuotations,如图 6 所示。自动创建了作为 Quotation 业务对象容器的 ListOf1ToUnboundedQuotations 业务对象。


图 6. WebSphere Integration Developer 中的 ListOf1ToUnboundedQuotations
图 6. WebSphere Integration Developer 中自动生成的数据对象 ListOf1ToUnboundedQuotations

将文件夹层次结构映射到命名空间

WebSphere Business Modeler 不允许在同一数据目录中有重复的业务项名称。类似地,为避免在 WebSphere Process Server 中有重复的数据类型名,每个业务对象都有其自己的命名空间,该命名空间与其在 WebSphere Business Modeler 中的数据目录相对应。

例如,在我们的基本项目中,由于 Quotationsupermarket\price 中,因此在导出它时,其命名空间将是 http://supermarket/price。导出的文件位置将是 supermarket\price\price.xsd

按照这些步骤对 Quotation 业务项建模,该业务项将通过 Namespace http://supermarket/price 自动映射到 Quotation 数据类型。

  1. 单击 Project tree filters,确保选中了 Main catalogsElement categories within a catalog 选项,如图 7 所示:

    图 7. 配置项目树筛选器
    配置项目树筛选器

  2. 选择缺省的 Business items 数据目录,并将其重命名为 supermarket,如图 8 所示:

    图 8. 重命名缺省数据目录业务项
    重命名缺省数据目录业务项

  3. 右键单击 supermarket 并选择 New - Data Catalog,如图 9 所示:

    图 9. 创建新的子数据目录
    创建新的子数据目录

  4. Name of new data catalog 字段中,输入 price,并单击 Finish 按钮。

    图 10. 定义新数据目录的名称
    定义新数据目录的名称

  5. 右键单击 price 并选择 New - Business Item,如图 11 所示:

    图 11. 创建新的 Quotation 业务项
    创建新的 Quotation 业务项

  6. Name of new business item 字段中输入 Quotation,并单击 Finish 按钮。如图 12 所示:

    图 12. 定义新的业务项名称
    定义新的业务项名称

  7. 参见前面的图 1,并指定 ProviderNameProductNamePrice 业务项属性。另外,您还可以指定属性描述。
  8. 导出业务建模项目。您可以找到 price.xsd 并打开它,如图 13 所示:

    图 13. price.xsd
    price.xsd

  9. 将业务项导入 WebSphere Integration Developer 中。选择 Quotation 业务对象并检查生成的 Namespace,如图 14 所示:

    图 14. Quotation 业务对象的命名空间
    Quotation 业务对象的命名空间





回页首


将流程和任务映射到流程和调用操作

在这一部分中,我们将向您介绍如何将 WebSphere Business Modeler 中的流程和任务信息映射到 WebSphere Integration Developer 中的流程和调用操作。下表简要列出了从 WebSphere Business ModelerWebSphere Integration Developer 的属性映射规则。

WebSphere Business Modeler 中的元素 WebSphere Integration Developer 中的元素
文件夹层次结构 命名空间
流程名称 流程端口类型名称
流程的输入/输出名称 流程端口类型的操作输入/输出参数
流程的输入标准 流程端口类型的操作名称
本地任务名称 参考合作伙伴端口类型名称
本地任务的输入/输出名称 参考合作伙伴端口类型的操作输入/输出参数
本地任务的输入标准 参考合作伙伴端口类型的操作名称

将流程映射到流程接口

  1. 在 WebSphere Business Modeler 中,右键单击 Process,选择 New - Process Catalog,并在 Name of new process catalog 字段中输入 supermarket
  2. 右键单击 supermarket,选择 New - Process,并在 Name of new process 字段中输入 QueryPriceProcess,如图 15 所示:

    图 15. 创建流程目录和流程
    创建流程目录和流程

  3. 将流程输入 WebSphere Integration Developer。您会看到生成了 QueryPriceProcess 接口,并且它的命名空间为 http://Processes/supermarket/QueryPriceProcess/QueryPriceProcessInterface,如图 16 所示:

    图 16. 流程接口和命名空间
    流程接口和命名空间

将输入/输出名称映射到输入/输出参数

  1. 返回到 WebSphere Business Modeler,双击 QueryPriceProcess 流程,打开流程编辑器。单击 Diagram 选项卡,并选择 Attributes - Inputs。在 Name 字段中,输入 productName,对于 Associated Data 字段选择 String,对于其他属性保留缺省值,如图 17 所示:

    图 17. 流程输入
    流程输入

  2. 切换到 Outputs 选项卡。对于 Name 字段,输入 quotation,对于 Associated Data 字段选择 Quotation,对于其他属性保留缺省值,如图 18 所示:

    图 18. 流程输出
    流程输出

  3. 切换到 Input Logic 选项卡,将 Name 字段的值更改为 getPrice(而非 Input Criterion),对于其他属性保留缺省值,如图 19 所示:

    图 19. 流程输入逻辑
    流程输入逻辑

  4. 在将流程输入到 WebSphere Integration Developer 之后,您将看到 getPrice 操作被添加到 QueryPriceProcess 接口中。输入名称是 productName,输入类型是 string;输出名称是 quotation,输出类型是 Quotation,如图 20 所示。

    图 20. 流程接口
     流程接口

将任务映射到操作

  1. 返回到 WebSphere Integration Developer,在左面板上单击 create local task 元素,并将其拖到流程编辑器上。单击 General 选项卡,将 Name 字段更改为 VerifyProductName(而非 Task),如图 21 所示:

    图 21. 任务名称
    任务名称

  2. 切换到 Inputs 选项卡,对于 Name 字段,输入 productName,对于 Associated Data 字段,选择 String,对于其他属性保留缺省值,如图 22 所示:

    图 22. 任务输入
    任务输入

  3. 切换到 Outputs 选项卡,对于 Name 字段,输入 validProductName,对于 Associated Data 字段,选择 String,对于其他属性保留缺省值,如图 23 所示:

    图 23. 任务输出
    任务输出

  4. 切换到 Input Logic 选项卡,将 Name 字段更改为 verifyProductName(而非 Input Criterion),对于其他属性保留缺省值,如图 24 所示:

    图 24. 任务输入逻辑
    任务输入逻辑

  5. 重复步骤 1-4,添加 Aprice 任务,将 productName 定义为输入名称,将 String 定义为输入类型。将 quotation 定义为输出名称,将 Quotation 定义为输出类型,并将 getQuotation 定义为输入逻辑。单击 Connections,连接 InputVerifyProductNameApriceOutput 任务,如图 25 所示:

    图 25. 基本模型
    基本模型

  6. 在将流程导入 WebSphere Integration Developer 之后,它将生成 VerifyProductName 接口。VerifyProductName 接口有一个 verifyProductName 操作。其输入名称为 productName,其输入类型为 string。其输出名称为 validProductNamee,其输出类型为 string,如图 26 所示:

    图 26. VerifyProductName 接口
    VerifyProductName 接口

  7. 还生成了 Aprice 接口。它具有 getQuotation 操作。其输入名称为 productName,其输入类型为 string。其输出名称为 quotation,其输出类型为 Quotation,如图 27 所示:

    图 27. Aprice 接口
    Aprice 接口

  8. 双击 QueryPriceProcess 流程,打开流程编辑器。除流程编排外,它还生成 QueryPriceProcessPartner 接口合作伙伴、VerifyProductNamePartnerApricePartner 参考合作伙伴以及 stringVariableQuotationVariable 变量,如图 28 所示:

    图 28. 流程 QueryPriceProcess 编排
    流程 QueryPriceProcess 编排





回页首


从多个输入/输出任务映射到多个操作接口

在 WebSphere Integration Developer 中,由于一个接口通常有多个操作,因此我们需要在 WebSphere Business Modeler 中定义具有多个输入/输出的任务。要了解如何实现这一点,请在 WebSphere Business Modeler 中创建一个名为 MultiMethod 的新模型项目,并将下载文件 MultiMethod_Modeler.zip 导入到 MultiMethod 项目。

  1. 在导入模型文件后,将把三个组件 DecisionProductQuotation 任务和 Merge 合并在一起,以构建 QueryPriceProcess 流程。ProductQuotation 任务包含两个方法,并使用 getPrice 从不同的批发商获取价格。流程的输入参数为 productName,它决定是调用 getPriceA 还是 getPriceB,如图 29 所示:

    图 29. MultiMethod 模型
    图 29. MultiMethod 模型

  2. Inputs 选项卡中,添加名为 productAproductB 两个输入,如图 30 所示:

    图 30. 定义任务输入
    定义任务输入

  3. Outputs 选项卡中,添加名为 QuotationAQuotationB 两个输出,如图 31 所示:

    图 31. 定义任务输出
    定义任务输出

  4. Input Logic 选项卡中定义输入标准,如图 32 所示:

    图 32. 定义任务输入逻辑
    定义任务输入逻辑

  5. Output Logic 选项卡中定义输出标准,如图 33 所示:

    图 33. 定义任务输出逻辑
    定义任务输出逻辑

  6. 到目前为止,我们已经定义了两个输入和输出,现在我们需要为每个方法定义输入/输出。切换到 Advanced Output Logic 选项卡,并选择 APrice。确保选中了关联的输入标准 getPriceA,如图 34 所示:

    图 34. PriceA 的高级输出逻辑
    PriceA 的高级输出逻辑

  7. 选择 BPrice 并确保选中了关联的输入标准 getPriceB,如图 35 所示:

    图 35. PriceB 的高级输出逻辑
    PriceB 的高级输出逻辑

  8. 最后,让我们定义决定逻辑。WebSphere Business Modeler 中的 Decision 属性使用 WebSphere Integration Developer 中的一个表达式映射到 Flow。每个流都有一个 Java 表达式(返回 Boolean 值)控制该流是否继续。切换到 Output branches 选项卡,并选择 Yes 输出分支。确保 Expression 字段包含 'supermarket.QueryPriceProcess.Decision.Input' is equal to "ProductA",如图 36 所示:

    图 36. Decision 属性的输出分支
    Decision 属性的输出分支

  9. 将模型项目导入 WebSphere Integration Developer 之后,您可以打开流程编辑器查看 QueryPriceProcess 流程编排,如图 37 所示:

    图 37. WebSphere Integration Developer 中的 MultiMethod 流程编排
    WebSphere Integration Developer 中的 MultiMethod 流程编排

  10. 双击 ProductQuotation 接口,可以看到两个操作 getPriceAgetPriceB 已添加到 ProductQuotation 端口类型,如图 38 所示:

    图 38. ProductQuotation 端口类型
    ProductQuotation 端口类型

  11. 选择调用 getPriceA 操作的分支,并单击 Details 选项卡,检查是否也正确生成了条件,如图 39 所示:

    图 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 对其输入进行复制,并将它们沿着每个可选路径转发。

APriceBPriceCPrice 任务完成之后必须执行 MakeDecision 任务,而且这三个任务是同时而非按顺序执行的。使用 Fork 元素可以在 Join 元素重新合并流并继续到 MakeDecision 任务之前,并行完成 APriceBPriceCPrice 任务。

让我们更详细地研究一下此模型,然后将其导入到 WebSphere Integration Developer:

  1. 切换到 Fork 属性的 Input branches 选项卡(如图 41 所示),查看 Fork 的输入分支:

    图 41. Fork 的输入分支
    Fork 的输入分支

  2. 切换到 Fork 属性的 Output branches 选项卡(如图 42 所示),查看 Fork 的输出分支:

    图 42. Fork 的输出分支
    Fork 的输出分支

  3. 切换到 Join 属性的 Input branches 选项卡(如图 43 所示),查看 Join 的输入分支。

    图 43. Join 的输入分支
    Join 的输入分支

  4. 切换到 Join 属性的 Output branches 选项卡(如图 44 所示),查看 Join 的输入分支。

    图 44. Join 的输出分支
    Join 的输出分支

  5. 将模型项目导入 WebSphere Integration Developer 之后,您可以打开流程编辑器查看 Branch 流程编排。由于 Join 将三个报价导出到 MakeDecision 任务(即导出结果是一个数组类型),因此 WebSphere Integration Developer 会自动生成 ListOf3To3Quotations 数据类型作为容器来保存 Quotation,如图 45 所示:

    图 45. WebSphere Integration Developer 中的分支流程编排
    WebSphere Integration Developer 中的分支流程编排

  6. 选择 Join 代码段元素,它是自动生成的,用于创建 ListOf3To3Quotations 对象并将其传递到下一个活动 MakeDecision,如图 46 所示:

    图 46. WebSphere Integration Developer 中的 Join 代码段
    WebSphere Integration Developer 中的 Join 代码段





回页首


映射实现类型

在 WebSphere Business Modeler 中定义一个流程时,您可以为特定的任务元素选择一个实现类型。它提供五个实现类型来映射到服务组件类型:

  • 状态机
  • 规则组
  • 人工任务
  • Java
  • 流程

在这一部分中,您将学习如何定义特定元素的实现类型。

在继续该部分之前,请在 WebSphere Business Modeler 中创建一个名为 ImplementationType 的项目,然后将 Basic.zip 下载文件导入到您的新项目。

  1. 选择 VerfiyProductName 任务,然后选择 Diagram - Technical attributes view - Implementation。选择 Human Task 作为实现类型的值,如图 47 所示:

    图 47. 人工任务实现类型
    人工任务实现类型

  2. 选择 APrice 任务,然后选择 Diagram - Attributes - Resources。在 Individual Resource requirements 栏中,添加 Individual Resource requirement,并为 Individual Resource 选择 Staff,如图 48 所示:

    图 48. Staff 资源需求
    Staff 资源需求

  3. 在将模型项目导入 WebSphere Integration Developer 之后,将自动生成名为 VerifyProductNameHuman Task 服务组件,如图 49 所示:

    图 49. 人工任务组件
    人工任务组件

  4. 在打开它时,您可以看到此参与的人工任务的详细属性,如图 50 所示:

    图 50. 参与的人工任务的详细属性
    参与的人工任务的详细属性

  5. 现在打开流程编辑器,可以看到 Staff 操作已由 Aprice 人工任务实现。

    图 51. 由人工任务实现的 Staff 操作
    由人工任务实现的 Staff 操作





回页首


总结

共享本文……

digg 请 Digg 这个故事
del.icio.us 发布到 del.icio.us
Slashdot Slashdot 一下!

WebSphere Business Modeler 支持 SOA 应用程序开发周期的第一步:业务建模。本文提供了从 WebSphere Business Modeler 到 WebSphere Integration Developer 的元素映射规则,以便在 WebSphere Integration Developer 中快速开发业务集成模块。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章