博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用 WebSphere Process Server 关系开发集成解决方案(1)
阅读量:2492 次
发布时间:2019-05-11

本文共 4125 字,大约阅读时间需要 13 分钟。

引言 本文采用问/答的形式帮助您快速而方便地了解如何使用
IBM®
WebSphere®
Process
Server(以下称为
Process
Server)关系。我们的目标是让您认识到何时使用关系,并提供了全面的概述,以便您方便地将关系应用到特定
解决方案。本文问答了以下问题:
  什么是关系?
  关系如何工作?
  如何使用关系?
  如何管理关系?
  可以在哪里找到关于关系的更多信息?
  什么是关系?
  Process Server中的关系在业务集成解决方案中用于捕获驻留在不同域中的对象间的交叉引用。最常见的关系类型是身份关系,该关系捕获语义等效但在不同应用程序内以不同方式表示的业务对象间或业务对象属性间的交叉引用。这种类型的关系适用于 Process Server 所支持的两种模式(这是本文要重点讨论的内容):
  静态属性值的查询
  动态身份相关
  查询关系
  查询关系定义业务对象属性值 之间的手动填充映射。
  示例 1. 查询关系
  假定一个应用程序将 Address 业务对象的 state属性表示为全名(例如“California”),而另一个应用程序使用双字母代码(例如“CA”)表示其 Address 业务对象中对应的state 属性。您可以创建 StateCode查询关系,以建立州全名和代码之间的静态映射。然后,当应用程序将一个地址转换为另一个地址时,通过查询 StateCode关系,就可以在州名称和州代码之间进行转换。
  图 1. 查询关系的概念视图
  如示例 1 中所示,查询关系通常在业务对象转换期间使用,以对属性值进行转换(否则就必须使用较长的硬编码 if-else 或 switch语句进行转换)。领域特定的代码或状态指示符经常就是这种情况。查询关系中封装映射时,可通过在运行时支持修改映射来提供可重用性和提高灵活性。
动态关系   动态关系根据唯一对业务对象进行标识的键属性定义其间的相关性。在不同的应用程序中存在相同的业务对象,该对象具有特定于应用程序的标识符,而您需要在应用程序间交换此对象的实例时,就要使用此类关系。键属性映射不是手动填充的,而是在所连接的应用程序中的数据发生更改时,由 Relationship Service 动态地创建和删除。
  示例 2. 动态关系
  假定两个应用程序都定义了 Customer业务对象,并生成了自己的内部键来唯一地标识此业务对象的实例。当对两个应用程序管理的客户数据进行集成时,两个应用程序中可能存在标识符不彼此匹配的相同客户。因此,为了在应用程序间交换关于客户的信息,必须维护两个应用程序中客户标识符的相关映射。客户创建动态CustomerRelationship 来定义此类映射。在创建或删除客户时,Relationship Service会动态地向关系添加或删除标识符映射。
  图 2.动态关系的概念视图
  关系如何工作?
  Relationship Service 将相关性数据存储在关系数据库的表中。关系的实例使用实例 ID 连接两个属性。图 3 显示了示例 1 中描述的地址关系的基础表的概念视图。
  图 3. 关系表
  对于查询关系,实例数据在设计时以手动方式填充。当转换查询给定输入的输出时,Relationship Service 将使用实例 ID 来查找匹配行。
动态关系使用类似的表结构将键属性彼此关联;否则,实现实例创建和删除自动化就需要提供额外的上下文信息。为了给 RelationshipService提供此上下文信息,必须在同步集成模式中使用动态关系。接下来让我们看一个该模式的应用示例,其中对存储在独立应用程序中的客户信息进行同步,以供销售部门和营销部门使用。   示例 3. 同步集成模式
  两个应用程序连接到 Process Server(例如,通过使用应用程序特定的适配器连接)。最初两个应用程序中都不存在客户实例,关系表是空的。
  Sales 应用程序创建了客户对象,并使用生成的标识符进行存储。该应用程序(或适配器)将标记为“已创建”的客户对象发布到 Process Server 中运行的同步模块。
  图 4. 传入事件交付
  接下来,将该客户对象转换为通用客户表示形式(作为不同客户对象间的通用标准使用)。作为转换工作的一部分,将调用 RelationshipService 来维护客户关系。Relationship Service 将业务对象标记为已创建,生成新实例ID,并创建新的表条目来将其与应用程序特定的 ID 关联。它会将实例 ID 设置为通用客户对象的键属性。
  图 5. 通用转换
  然后会将通用客户对象转换为 Marketing 应用程序中使用的客户业务对象。将再次调用 Relationship Service;不过,因为尚未生成应用程序特定的标识符,因此不会进行任何操作。
当 Marketing 应用程序接收到所创建的客户,将生成新标识符,并存储该客户对象。它将返回包含所生成标识符的客户对象。  图 6. 传出请求
  接收到的客户对象将转换回通用客户对象。在转换期间,将再次调用 Relationship Service。它将检测到所创建的业务对象作为实例 ID 为 1 的通用客户对象发出的请求的响应发出。它将创建新的表条目将该实例 ID 与应用程序特定的标识符关联。
  图 7. 传出响应
  首次创建了关系实例后,可以采用类似的步骤处理对客户信息的更新。Relationship Service 会直接使用关系实例来转换标识符,但不会对实例进行更改。接收到已删除业务对象并进行转换后,将转换标识符,然后禁用实例。
  此实例说明了必须遵循的规则集,以便 Relationship Service 自动维护动态关系的交叉引用。
  每个应用程序负责在出现更改时通知 Process Server。为了指示更改类型,应用程序必须将业务对象标记为“已创建”、“已更新”或“已删除”。有关如何将这些标记与 Process Server 中的业务对象关联的信息,请参见下一部分如何使用关系。
  您可以定义通用业务对象来对不同业务对象表示形式进行统一。您的转换逻辑必须将传入业务对象转换为此通用表示形式,然后才能将其转换为应用程序特定的业务对象,以发送出去进行同步。
您必须将所调用的操作(用于将新创建的业务对象发送到目标应用程序)定义为请求/响应操作。然后,Relationship Service 可以将新生成的标识符与响应路径上的关系实例进行相关。  除了规则 3 中描述的限制之外,没有任何其他限制适用于操作。
  您可能会奇怪,为什么应用程序特定的业务对象需要首先转换为通用对象,然后才转换为目标格式。此规则的意图是,引导用户采用最佳实践:即尽可能减少所需维护的连接。示例 3仅仅涉及到对两个应用程序进行集成;不过,您可能会稍后认识到需要集成也存储客户信息的其他应用程序。如果未定义通用客户对象,但添加了更多的应用程序,则还必须添加到所有其他应用程序的额外转换连接,会很快形成复杂的依赖关系网。根据通用数据表示形式开发核心业务逻辑,从而将其从每个应用程序的细节分离出来。
  如何使用关系?
  使用关系涉及以下操作:
  定义关系。
  将关系添加到转换。
  手动调用关系。
  本文将在概念层描述这些方面,并演示如何使用工具处理关系。有关形成集成解决方案的详细分步说明,请参见参考资料中提供的指向相关文章和其他信息的链接。
  定义关系
  使用 IBM WebSphere Integration Developer(以下称为 IntegrationDeveloper)定义关系。首先通过在 New relationship wizard 中选中或取消选中复选框 Use totransform. data attributes according to a static mapping(请参见图8)定义关系类型。选中复选框,则创建查询关系;取消选中该复选框,则创建动态关系。
  图 8. 新建关系向导
使用向导此页的单选按钮指定关系的基数性。选择 one-to-one 可创建身份关系,其中每个实例 ID最多只能与每个表中一个值关联。请对大多数查询和动态关系使用此选项。您可以对将一个值映射到多个其他值的查询关系使用一对多或多对多关系。例如,邮政编码查询关系可以将电话区号“650”映射到邮政编码“94010”、“94305”等。  创建了关系定义后,可以向关系添加角色。角色代表我们目前所称的已连接应用程序。添加角色时,您需要对其命名,并选择要由此角色的关系维护的对象类型。
  对于动态关系角色,请选择与为其他对象选择的业务对象语义等效的业务对象,并指定用于标识该对象的键属性。动态关系还需要一个托管角色来表示通用域。托管角色采用通用业务对象,指向将在运行时保存关系实例 ID 的键属性。 图 9 显示了 CustomerRelationship的关系定义;关系编辑器将托管角色以蓝色突出显示。
  图 9. CustomerRelationship 关系定义
  可以使用其多个属性对业务对象进行标识,这称为组合键。组合角色一个特殊情况是,业务对象只能通过将其键属性与父级的键属性进行组合来唯一标识。在这种情况下,您要选择父级 业务对象,并定义两个键属性:一个指向父级键,一个指向子级键。图 10显示了行式项目之间的关系,其中为行式项目定义的角色之一仅仅在其所属的订单内具有唯一性。
  图 10. 组合行式项目角色
 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14789789/viewspace-478233/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/14789789/viewspace-478233/

你可能感兴趣的文章
黑马程序员——————> 多线程
查看>>
Bootstrap系列 -- 41. 带表单的导航条
查看>>
Python---时间函数
查看>>
maven必知必会
查看>>
最小生成树
查看>>
获取网址中参数的方式
查看>>
golang log日志
查看>>
一些应该记住的东西(持续更新?再也不会更新了)
查看>>
常用的机器学习&数据挖掘知识点【转】
查看>>
bzoj 1911: [Apio2010]特别行动队 2011-12-26
查看>>
JIRA-6.3.6安装与破解
查看>>
Cron表达式【一】
查看>>
weblogic安全漫谈
查看>>
DEDECMS全版本gotopage变量XSS ROOTKIT 0DAY
查看>>
出路在哪里?出路在于思路!智者无敌
查看>>
Linux基础系列:常用命令(5)_samba服务与nginx服务
查看>>
Web前端开发CSS基础(2)
查看>>
【BootStrap】 概述 & CSS
查看>>
如何把两个查询语句合成一条 语句
查看>>
Linux下jetty报java.lang.OutOfMemoryError: PermGen space及Jetty内存配置调优解决方案
查看>>