本文说明如何使用 IBM Websphere Integration Developer 构建动态关系或身份关系,并在单元测试环境中运行它们。
引言
IBM® WebSphere® Process Server 关系服务提供了一些功能,允许集成开发人员对一组相关业务对象中取值不同但语义相同的属性进行关联。有两种基本的关系类型:动态关系和静态关系。动态关系通常用于关联一组相关业务对象中的主键,而静态关系通常用于关联一些非主键的属性。本文将讨论动态关系,第 1 部分:静态关系 向您介绍了如何使用 WebSphere Integration Developer 构建静态关系,而第 3 部分(即将发布)则重点关注动态组合关系。
业务场景
本文使用的业务场景假设 IBM Corporation 有三个不同的企业系统,而这些企业系统分别具有自己的客户表示形式。IBM IT 组织已经确定需要对这三个系统进行集成,并在客户关系管理 (CRM) 中心内部提供单一、组合、规范的客户表示形式,客户关系管理中心支持独立于现有的企业信息系统 (EIS) 来开发客户关系业务流程。
每个企业系统(SSA Global、SAP 和 IBM DB2® 关系数据库)都拥有各自的客户表示形式,其中包含了一个名为 id 的属性,该属性代表主键。这三个系统中的每一个都会生成 id 的值。例如,SSAGlobal 系统为客户 John Doe 生成值为 1 的 id,SAP 系统为相同的客户 John Doe 生成值为 10 的 id,而 DB2 系统为 John Doe 生成值为 10A 的 id。在规范空间中,由中心为 GBO 客户生成的 id 值为 1。 该场景中的动态关系可以关联这四种客户表示方法,它们表示了本质上相同的客户,但是主键不同。
在这个业务集成应用程序的执行过程中,当传入的(或传出的)事件中包含外部系统和 CRM 中心之间所交换的客户业务对象时,将调用这个动态关系。这些事件将接口映射组件作为中介,而接口映射组件将调用业务对象映射。业务对象映射可以将系统特定的客户表示形式转换为规范表示形式,或者将规范表示形式转换为系统特定的客户表示形式。在此过程中,业务对象映射将源 id 属性转换为目标 id 属性。使用关系服务执行这个转换,以便为适当的源和目标角色查找相关联的数据。下图描述了该场景:
图 1. 业务场景


|
回页首 |
|
构件开发摘要
为了说明如何使用动态关系来处理这个业务场景,让我们来开发下列构件:
- 四个业务对象(SSA Global、SAP、DB2 和 Canonical)和两个业务图(SSA Global BG 和 Canonical BG)。
- 一个动态关系中包含四种角色(每种业务对象对应一种角色)。
- 两个业务对象映射,一个调用该动态关系以执行对 id 属性的转换,另一个业务图则调用业务对象映射。
- 具有调用业务对象映射的源接口和目标接口的接口映射。
本文假定您熟悉如何创建业务对象、接口、接口映射和业务对象映射。


|
回页首 |
|
创建业务对象
在这个步骤中,将创建后续步骤中所需要的四个业务对象和两个业务图。
- 启动 IBM WebSphere Integration Developer。
- 创建一个名为
CRM 的新模块(选择 File => New => Project)。
- 为三个企业系统各创建一个客户业务对象,并为规范表示形式创建一个客户业务对象。为了简便起见,本示例对每个业务对象使用了相同的属性名。使用下面的内容创建每个业务对象:
图 2. 业务对象
- 分别为这四个业务对象创建下面的属性和属性类型:
图 3. SAPCustomer 和 SSACustomer
图 4. JDBCCustomer 和 GBOCustomer
- 动态关系需要 Verb 属性或业务图中的更改摘要信息。因此,您需要为这些业务对象创建业务图。在本场景中,只需为 SSAGlobal 和规范业务对象创建业务图。要创建完整的端到端场景,您可以创建其余的业务图。
- 右键单击业务对象,并选择 Create a Business Graph。
图 5. SSACustomerBG 和 GBOCustomerBG


|
回页首 |
|
创建关系
既然已经创建了这些业务对象,现在就可以创建它们之间的关系。关系定义了这四个业务对象的主键 id 属性之间的动态关系。
- 创建一个关系(选择 File => New => Relationship)。
- 在第一个面板中,指定目标命名空间:
http://www.ibm.com/rels/CustomerId 和名称 CustomerId。
- 单击 Next。
图 6. 创建关系
- 在下一个面板中,保留缺省值。这表示将为名为 id 的主键属性创建关系。
图 7. 创建关系


|
回页首 |
|
添加角色
角色必须与参与该关系中的每个业务对象关联。角色可以表示相应的元数据,即描述业务对象中的哪个属性将与该关系的其他角色中所描述的属性关联。因此,对于这个场景,可以创建四个角色,每个客户业务对象对应一个角色。
要创建这四个角色,请在关系编辑器中选择 Add Role 图标,如下图所示:
图 8. 添加角色
将弹出一个对话框,可以从中选择与角色关联的业务对象。选择业务对象并单击 Ok。重复该步骤,直到为每个业务对象(JDBCCustomer、SSACustomer、SAPCustomer 和 GBOCustomer)都创建了一个角色。
修改角色属性
每个角色都会自动生成自己的目标命名空间和名称。这时最好更新每个角色的目标命名空间、名称和显示名称。要完成此任务,请执行以下步骤:
- 选择角色。
- 从角色下方的横列表项中选择 Properties。
- 从 Properties 选项卡下方的竖列表项中选择 Description。
- 使用下表中的值更新 Name、Display Name 和 Targetnamespace 属性:
图 9. 角色名称
- 对所有四个角色重复该步骤。
设置托管角色
规范角色 (GBO) 是这个身份关系的托管角色。这意味着由 WebSphere Process Server 关系服务生成 GBO 的 id。
- 选择 GBO role。
- 从角色下方的横列表项中选择 Properties。
- 从 Properties 选项卡下方的竖列表项中选择 Details。
- 选中 Managed 复选框。
图 10. 标记托管角色
添加角色键
这四个角色中的每一个都必须将其键值设置为关系中相互关联的属性(例如 id)。要设置键属性,请执行下列操作:
- 选择角色。
- 选择标有 Add KeyAttribute 的图标。请参见图 11 中的示例:
图 11. 添加角色键属性
- 将弹出一个对话框,其中包含与该角色关联的业务对象中的所有属性。对于这个场景,选择 id。
- 对所有四个角色重复该步骤。


|
回页首 |
|
身份关系定义摘要
到目前为止,您已经定义了动态关系。这个关系定义了足够的信息,以支持在将 EIS 客户业务对象转换为规范化客户业务对象或将规范化客户业务对象转换为 EIS 客户业务对象的过程中,对 id 属性进行规范化或解除规范化。为了说明 CRM 中心和外部系统之间的每个集成关系,需要开发三个接口映射和六个相应的业务对象映射集,以便处理这些集成场景:
- 从 SSA Global 到 CRM 中心或从 CRM 中心到 SSA Global
- 从 SAP 到 CRM 中心或从 CRM 中心到 SAP
- 从 DB2 到 CRM 中心或从 CRM 中心到 DB2
为了保持这个示例的简洁,可以使用一个简单的源/目标接口集创建从 SSA Global 到 CRM 中心或从 CRM 中心到 SSA Global 的接口映射。然后,创建两个业务对象映射以处理入站场景,其中将 SSA Global 客户业务对象转换为规范客户业务对象,并将 SSA Global 客户业务图转换为规范客户业务图。您可以自己创建剩下的两个接口映射和五个业务对象映射。


|
回页首 |
|
创建业务对象映射
创建一个将 SSA Global 业务对象转换为规范业务对象的业务对象映射。使用关系转换将源业务对象的 id 属性转换为目标业务对象的 id 属性。
- 创建一个业务对象映射(选择 File => New => Business Object Map)。
- 在第一个面板中,将业务对象映射命名为
SSACustomerToGBOCustomer 并指定目标命名空间 http://www.ibm.com/maps。
- 单击 Next。
- 在第二个面板中,选择 SSACustomer 作为输入,选择 GBOCustomer 作为输出。
- 单击 Finish。
- 在 SSACustomer 与 GBOCustomer 业务对象之间创建一个 Relationship 转换。
- 除 id 以外,在 SSACustomer 的每个属性与 GBOCustomer 中的相同属性之间,创建一个 Move 转换。
图 12. SSACustomerToGBOCustomer 映射


|
回页首 |
|
创建业务图映射
动态关系依赖于业务图中的 Verb 属性或更改摘要信息,以便对角色实例进行自动维护。因为 Verb 属性设置为一个业务图,所以您需要创建进一步调用上面包含关系转换的子映射的业务图。该映射将 SSA Global 业务图转换为规范业务图。
- 创建一个业务对象映射(选择 File => New => Business Object Map)。
- 在第一个面板中,将业务对象映射命名为
SSACustomerBGToGBOCustomerBG 并指定目标命名空间 http://www.ibm.com/maps。
- 单击 Next。
- 在第二个面板中,选择 SSACustomerBG 作为输入,选择 GBOCustomerBG 作为输出。
- 单击 Finish。
- 在 SSACustomer 与 GBOCustomer 业务对象之间创建一个 Submap 转换。
- 在 SSACustomerBG 的 Verb 属性与 GBOCustomerBG 的 Verb 属性之间,创建一个 Move 转换。
图 13. SSACustomerBGToGBOCustomerBG 映射


|
回页首 |
|
创建接口
在创建调用 SSACustomerBGToGBOCustomerBG 映射的接口映射之前,为该接口映射创建一个源和目标接口。
- 创建一个源接口(选择 File => New => Interface)。
- 将接口命名为
SSAEvent 并为其提供目标命名空间 http://www.ibm.com/interfaces/ssa。
- 添加名为
processEvent 的请求/响应操作。
- 添加类型
SSACustomerBG 的名为 ssaCustomerBG 输入消息。
图 14. 接口 SSAEvent
- 创建一个目标接口(选择 File => New => Interface)。
- 将接口命名为
GBOEvent 并为其提供目标命名空间 http://www.ibm.com/interfaces/hub。
- 添加名为
processEvent 的请求/响应操作。
- 添加类型
GBOCustomerBG 的名为 gboCustomerBG 输入消息。
图15. 接口 GBOEvent


|
回页首 |
|
创建接口映射
创建从 SSA Global 到 CRM 中心或从 CRM 中心到 SSA Global 的接口映射。
- 创建源接口(选择 File => New => Interface Map)。
- 将它命名为
SSACustomerBGToFromGBOCustomerBG,并为其提供目标命名空间 http://www.ibm.com/interfaceMaps。
- 单击 Next。
- 选择 Source interface 作为 SSAEventBG 接口。
- 选择 Target interface 作为 GBOEventBG 接口。
- 单击 Finish。
- 连接 processEvent 操作。
- 选择连接 processEvent 操作的行,以查看 Parameter 映射。
- 将 ssaCustomerBG 连接到 gboCustomerBG。
- 选择 move,然后从 Parameter 映射下面的横选项卡中选择 Properties。
- 选择 Description。
- 将 move 更改为 map。
图 16. 创建接口映射
- 选择 Details。
- 为 Business Object Map 选择 SSACustomerBGToGBOCustomerBG。


|
回页首 |
|
运行关系
现在,对装配图进行设置以通过接口映射组件测试这个关系。
- 打开装配图。
- 将接口映射 SSACustomerToFromGBOCustomer 拖放到装配图上。
- 将 Java™ 组件拖放到装配图上。
- 将接口映射连接到该 Java 组件。需要使用这个 Java 组件,以便单元测试环境可以正常运行,而不会在尝试解析接口映射引用时引发异常。
- 现在,您可以使用测试服务器对该组件进行测试。
- 右键单击 Assembly Editor,选择 Test Module,这将启动测试服务器并将 DynamicRelationship 模块部署到该测试服务器。
- 这时将出现该业务对象的测试运行窗口。
- 将 verb 更改为
Create。
- 输入
1 作为 id 的值。
- 输入
John 作为 firstName。
- 输入
Doe 作为 lastName。
图 17. 测试运行结果
- 单击 Continue。
- 单击窗口 Events 侧中的 Request。
图 18. 测试运行结果
当使用业务对象 SSACustomerBG 调用接口映射时,将调用相应的映射,而后者又将调用相应的子映射。子映射 SSACustomerToGBOCustomer 将使用 SSACustomer 角色调用关系。将 Verb 属性设置为 create。这个调用将使得关系服务为 GBOCustomer 角色生成唯一的 id。在这个示例中,id 为 7。现在,关系服务将保存 id 为 1 的 SSACustomer 对应于 id 为 7 的 GBOCustomer 的关联信息。从现在开始,当通过该系统更新或删除 id 为 1 的 SSACustomer 并调用关系时,它可以将其正确地映射到 id 为 7 的 GBOCustomer。


|
回页首 |
|
结束语
本文介绍了如何创建身份关系、从映射中调用该关系、创建调用映射的接口映射以及在服务器上对关系进行测试。 |