了解调解策略

通过使用调解策略,可以借助上下文信息来动态控制服务交互。了解模块、目标服务和调解策略之间如何互相关联。

调解策略

通过使用调解策略,可以通过覆盖模块属性值来动态配置服务交互。 您可以覆盖的模块属性是在调解流中定义的。 在调解策略中定义覆盖值。

调解策略存储在 WebSphere® Service Registry and Repository (WSRR) 中,但是您可以使用“管理调解策略”窗口小部件来创建调解策略。
此图显示了两个订单。 如果订购了多件商品,那么调解策略条件将导致应用不同的调解策略。

创建可以使用调解策略的模块

您使用 IBM Integration Designer 来创建具有调解流的模块。 调解流必须包含“策略解析”调解原语,此调解原语可以访问 WSRR 中的调解策略。 定义“策略解析”调解原语是否检索与模块和/或目标服务相关联的调解策略。

创建调解流时,必须包含您要覆盖其属性的其他调解原语。
  1. 使用 IBM Integration Designer 来创建包含“策略解析”调解原语的模块。 必须将“策略解析”原语放在要修改其属性的任何原语前面。
  2. 配置“策略解析”原语。
    1. 指定要使用的 WSRR 定义,或者采用缺省定义。
    2. 定义是否检索与模块和/或目标服务相关联的调解策略。
    3. 如果您要使用门条件,那么创建与策略的门条件匹配的 Policy condition name。 通过提供 XPath 表达式来指定在消息中找到条件值的位置。 例如,可创建 Age 的 Policy condition name/body/priceChecker/request/Age 的 XPath 表达式。 处理服务请求时,将从 /body/priceChecker/request/Age 中设置 Age 条件的值。
  3. 如果您希望使调解策略与目标服务相关联,而不与模块相关联,那么在“策略解析”调解原语前面添加“端点查询”调解原语。
  4. 添加其他调解原语。
  5. 提升您要动态覆盖的任何属性。 只有已提升的属性才能被调解策略覆盖。

配置 WebSphere ESB 或 IBM Business Process Manager

应用程序服务器必须包含您的模块并且知道正确的 WSRR。
  1. 将模块部署到 WebSphere ESB 或 IBM Business Process Manager。
  2. 请确保 WebSphere ESB 或 IBM Business Process Manager 具有模块的适当 WSRR 定义。

配置 WSRR

当“策略解析”调解原语处理服务请求时,它将查询 WSRR。 因此,WSRR 必须包含有关模块和服务的相关信息。
  1. 将包含 SCA 模块的 EAR 文件装入 WSRR 中。
  2. 必要时,请装入您要使用的目标服务的 WSDL。

使用“管理调解策略”窗口小部件

可以使用管理调解策略窗口小部件来创建调解策略并使它们与模块或目标服务相关联。 此外,该窗口小部件将创建使调解策略与模块或目标服务相关联的策略附件。 调解策略和策略附件是在 WSRR 中创建的。

对于您要覆盖的每个属性添加断言。此窗口小部件将您要覆盖的属性称为断言。 在 WSRR 中,属性覆盖是策略中的断言。 如果您希望创建条件调解策略,请添加门条件。 在 WSRR 中,门条件是策略附件的用户属性。
  • 当您使用管理调解策略窗口小部件来创建策略附件时,此窗口小部件将为每个具有断言的组创建单个策略附件和一个调解策略。
  • 当您使用管理调解策略窗口小部件来删除策略附件时,此窗口小部件将删除此策略附件以及与它相连的任何调解策略,除非这些调解策略正被另一个策略附件使用。
当您使用“管理调解策略”窗口小部件将调解策略连接至目标服务时,可以在下列级别连接策略:
  • 服务
  • 端点
  • 操作