“策略解析”调解原语
使用“策略解析”调解原语可使用调解策略来动态配置调解流。在 WebSphere® Service Registry and Repository (WSRR) 中存储和检索调解策略。
简介
您可以使用“策略解析”调解原语来检索 WSRR 注册表中的调解策略,并控制随后进入流中的调解原语。注册表可以是本地注册表或远程注册表。
“策略解析”原语支持您检索与当前服务组件体系结构 (SCA) 模块相关联的调解策略。您还可以检索与调解流使用的目标服务相关联的调解策略。如果要检索与目标服务相关联的调解策略,请将“端点查找”原语添加到调解流中,置于“策略解析”原语之前。“端点查找”原语会选择目标服务,“策略解析”原语会检索附加至此目标服务的调解策略。
详细信息
如果在注册表中找到有效的调解策略,那么其中内容可用于覆盖“策略解析”原语后的调解原语的动态属性。如果调解流包含“策略解析”原语,那么顶级请求流、响应流或故障流中的任何提升的属性均为动态属性。调解策略包含提升的属性组、名称和值的等效项,并且必须符合 Web Services 策略框架 (WS-Policy)。
- 如果将 Policy Scope 属性设置为 Module,那么“策略解析”原语会在 WSRR 中检索附加至 SCA 模块对象的调解策略。
- 如果将 Policy Scope 设置为 Target
Service,那么“策略解析”原语会检索附加至表示目标服务的 WSRR 对象的调解策略。将 WSDL 文档装入 WSRR 时,注册表会为 WSDL 所描述的任何服务、端口、绑定、端口类型、操作和消息元素创建对象。将 SCA 模块装入 WSRR 时,注册表会为此模块以及模块中定义的任何导出和导入创建对象。术语目标服务包含 WSDL 描述和 SCA 导出中包含的所有相关定义。通常,应该选择一个附加调解策略的点,例如,可以选择将策略附加至服务对象或操作对象。注: 运行时环境支持附加至 WSDL 文档中定义的服务、端口、绑定、端口类型和操作对象的调解策略。但是,运行时环境不支持附加至消息对象的调解策略。对于 SCA 模块,运行时环境支持附加至导出、接口端口类型和已链接到导出的操作的调解策略。运行时环境还支持附加至 WSRR 对象“具有相关联接口的手动 HTTP 端点”、“具有相关联接口的手动 JMS 端点”和“具有相关联接口的手动 MQ 端点”以及已链接至这些手动端点的接口端口类型和操作的调解策略。
- 如果将 Policy Scope 设置为 Intersection,那么“策略解析”原语会在 WSRR 中检索附加至此模块和目标服务的调解策略。 “策略解析”原语将两个作用域组合到满足两个作用域需求的单一调解策略中。如果交集处理无法找到满足两项需求的策略,那么会触发 policyError 终端。
SMO 详细信息
如果有调解策略附加至当前模块或目标服务,那么会根据调解策略处理模型来分析这些调解策略。生成的属性信息会复制到位于 /context/dynamicProperty 的 SMO。 对于每个属性,/context/dynamicProperty 位置可用于存储组、名称和值。属性组和名称将与随后的调解原语中的动态属性进行比较。发生匹配时,会覆盖动态属性的值。例如,创建包含一个调解流组件的模块,该组件包含两个调解原语:“策略解析”原语,后接“映射”调解原语。如果提升“映射”原语属性 Mapping file,可以在运行时使用注册表中的调解策略来覆盖值。
调解策略未覆盖的任何动态属性都会采用管理控制台上显示的值。但是,管理控制台值不会存储在 /context/dynamicProperty 位置中。
- “端点查找”原语会更新 SMO 的“目标”字段,以指示流的目标服务,然后“策略解析”原语会检索与目标服务相关联的调解策略。“端点查找”原语会将目标服务详细信息置于位于 /headers/SMOHeader/Target 的 SMO 内,而“策略解析”原语会使用此信息。
- 如果“端点查找”原语提供替代目标服务,那么您可以使用其中某一目标服务作为自己的目标服务,前提是将相应的对象移到 SMO 中的正确位置。“端点查找”原语会将替代目标服务置于 /headers/SMOHeader/AlternateTarget 位置。 如果希望“策略解析”原语使用替代目标服务,必须将整个 AlternateTarget 对象移到 SMO 位置 /headers/SMOHeader/Target 内。要移动 AlternateTarget 对象,需要在“端点查找”原语与“策略解析”原语之间插入另一个调解原语。通常,可以插入定制调解原语。
- 请勿更改 Target 或 AlternateTarget 对象内的字段,因为“策略解析”原语会使用这些字段。 此原语使用这些字段来查找属于目标服务的调解策略。
调解策略条件
- 在 IBM Integration Designer 中的 XPath 属性中设置 XPath 表达式。 此 XPath 表达式供运行时环境用于查找条件的值。您可以指定多个 XPath 表达式。
- 对于每个 XPath 表达式,使用 Policy condition name 属性提供条件名。
- 在 WSRR 中,使用 Policy condition name 属性创建门条件。例如,如果创建称为 InsuranceType 的 Policy condition name,那么可以创建称为 medGate_Condition1 的门条件,其中值为 InsuranceType = Gold。有关创建调解策略和门条件的更多信息,请参阅本主题末尾提及的教程。
WSRR
在使用“策略解析”调解原语之前,可能需要将 SCA 模块、WSDL 文档、调解策略和调解策略附件文档添加到 WSRR 注册表中。您可以使用 WSRR 直接创建调解策略。或者,可以使用 Business Space 窗口小部件创建调解策略,这些窗口小部件会在 WSRR 中创建调解策略。IBM Process Server 包含用于创建调解策略的 Business Space 窗口小部件。
要检索当前模块的调解策略,在相应的注册表中必须包含 SCA 模块的详细信息。将 SCA 模块装入 WSRR 时,注册表会创建 SCA 模块文档。注册表还会创建 SCA 模块对象,您可以将调解策略附加到此对象。
在导出包含“策略解析”调解原语的 SCA 模块时,Integration Designer 会为 SCA 模块中的每个属性组生成一项缺省调解策略。例如,如果 SCA 模块包含三个属性组,那么 Integration Designer 会生成三项缺省调解策略,每项策略均包含属于其中一个组的所有动态属性。缺省调解策略在开发时表示给予所有动态属性的值。虽然 Integration Designer 会生成缺省调解策略,但是它不会将这些调解策略附加到 SCA 模块。您必须决定如何使用缺省调解策略。如果将包含 SCA 模块的 EAR 文件装入 WSRR,那么注册表会创建一个 SCA 模块文档,并装入所有缺省调解策略。如果您创建自己的调解策略,那么这些策略必须引用您的动态属性的组和别名。
- 由于调解策略会覆盖模块属性,策略创建过程需要模块信息,即使将把策略附加到目标服务也是如此。如果将 SCA 模块装入 WSDL 文档中的不同 WSRR 实例上,可能需要将适合的策略从其中一个 WSRR 实例复制到另一个 WSRR 实例。
- Web Services 策略框架指定策略可以存在于不同级别的目标服务。WS-Policy 框架将这些级别称为策略主题。级别分为:服务、端点、操作和消息。端点级别包含端口、绑定和端口类型。为简便起见,应将调解策略附加到端口、绑定或端口类型;而不应附加到多种对象类型。如果使用“管理调解策略”窗口小部件,那么附加到端点主题的任何调解策略都会附加到端口类型。
- WSRR 会创建两种类型的操作对象:端口类型操作对象和绑定操作对象。对于特定端点,请使用与您相关的操作类型,不得同时使用这两种类型。如果使用“管理调解策略”窗口小部件,那么附加到操作主题的任何调解策略都会附加到操作端口类型。
当您拥有所需的调解策略时,可以将其附加到自己的 SCA 模块或目标服务中。如果要在调解策略上指定门条件,必须在 WSRR 中的策略附件上指定这些门条件。
如果要使用 WSRR 监管,必须使 WSRR 策略文档接受监管。然后,才能通过生命周期分类来移动策略文档和任何关联的策略。如果要使用与监管不相关的分类,那么必须将这些分类添加到 WSRR 策略中,而不是添加到策略文档中。在 WSRR 中,存在缺省监管生命周期,但是您可以定义自己的监管生命周期。如果要根据特定 WSRR 分类(包括生命周期分类)过滤调解策略,还必须在“策略解析”原语上定义分类。
用法
通过使用调解策略,您可以开发新的服务交互,以实现更高级别的灵活性和管理控制。此外,您可以通过根据发生消息流的上下文来调整消息流,从而从现有系统中生成新的值。
在设计调解流时,可以使用来自调解策略的值覆盖在“策略解析”原语后发生的任何调解原语的动态属性。但是,必须为要覆盖的每个属性指定一个有效的缺省值。通常,将“策略解析”原语放置于流的开始位置,需要其他调解原语(通常是“端点查找”原语)时除外。
- 使用调解策略来激活或取消激活属性。例如,可以通过取消设置“消息过滤器”原语的 Enabled 属性来关闭消息过滤。
- 使用存在特定条件时适用的附带条件的调解策略。例如,可以根据不同客户类型应用不同消息变换:针对金牌客户应用一种变换,针对银牌客户应用另一种变换。调解策略根据客户类型,针对“映射”原语 Mapping File 属性包含不同的值。
WSRR 包含许多分类系统(包括生命周期分类),您可以基于调解策略的 WSRR 分类来选择调解策略。生命周期分类允许您对自己的策略施加监管,或者创建您自己的分类系统。