如何在外部WS-policy附件文件中指定服务实例?

时间:2013-08-26 12:51:52

标签: web-services xpath soa bpel apache-ode

我正在尝试创建WS-policy附件文件,以便将策略附加到特定流程实例的活动。我已经读过端点引用(EPR)应该包含在 AppliesTo 元素中,但问题是我不知道如何指定流程实例。以下代码将策略附加到进程 MyProcess 的所有实例的调用活动

<wsp:PolicyAttachment>
  xmlns:wsp="http://schemas.xmlsoap.org/ws/2002/12/policy"
  xmlns:q4b="http://www.example.com/q4b"
  xmlns:ns="http://www.example.com/processes"
<wsp:AppliesTo>
   <q4b:process name="ns:myProcess" expressionLanguage="xpath1.0">
     /process/inovoke[2]
   </q4b:process>
</wsp:AppliesTo>
<wsp:PolicyReference>
  URI="http://www.example.com/policies/myPolicy"/>
</wsp:PolicyAttachment>

AppliesTo 元素定义策略主题。它包含一个名为 q4b:process 的新定义XML类型,它指定进程的名称,并包含一个XPath表达式,用于选择该进程的第二个调用活动。 PolicyReference 元素是对要附加的策略的引用。

在WS-Policy Attachement规范中,有一个使用端点引用的示例,但解释说它将策略应用于与端点的所有交互。这不是我想要的,因为我希望策略仅应用于进程的指定实例,而且仅应用于指定的活动。我使用Apache ODE作为工作流引擎。

  

以下示例说明了使用此机制的方法   已定义的已部署端点的EndpointReference域表达式   在Web服务寻址[WS-Addressing Core]中:

(01) <wsp:PolicyAttachment>
(02)   <wsp:AppliesTo>
(03)     <wsa:EndpointReference>
(04)       <wsa:Address>http://www.example.com/acct</wsa:Address>
(05)     </wsa:EndpointReference>
(06)   </wsp:AppliesTo>
(07)   <wsp:PolicyReference
(08)      URI="http://www.example.com/policies#RmPolicy" />
(09) </wsp:PolicyAttachment>
  

在此示例中,策略表达式位于   适用于所有互动   与端点。

WS-Policy Attachment specifications

WS-Addressing specifications

感谢您的时间和精力。

1 个答案:

答案 0 :(得分:0)

您不应该使用接口(WSDL)来定义流程的内部行为,因此您将公开您的实现。接口用于从消费者的角度隐藏/封装实现。