我正在尝试创建一个 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>
ApplysTo元素定义策略主题。它包括一个新定义的称为q4b:process的 XML 类型,它指定流程的名称并包括一个 XPath 表达式来选择该流程的第二个调用活动。PolicyReference元素是对要附加的策略的引用。
在 WS-Policy Attachement 规范中有一个使用端点引用的示例,但解释说它将将该策略应用于与端点的所有交互。这不完全是我想要的,因为我希望该策略仅应用于流程的指定实例并且仅应用于指定的活动。我使用 Apache ODE 作为工作流引擎。
以下示例说明了如何将此机制与 Web 服务寻址 [WS-Addressing Core] 中定义的已部署端点的 EndpointReference 域表达式一起使用:
(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>
在此示例中,策略表达式 at 适用于与端点的所有交互。
感谢您的时间和精力。