- From: Chou, Wu (Wu) <wuchou@avaya.com>
- Date: Tue, 21 Jul 2009 11:42:22 -0400
- To: "Bob Freund" <bob.freund@hitachisoftware.com>
- Cc: <public-ws-resource-access@w3.org>
- Message-ID: <F81BDFA28AE48D4793E253362D1F7A740112ACE6@300813ANEX2.global.avaya.com>
Bob, Here is a proposal on using delivery policies for delivery mode extension. It is to address 6692-a, b, c, and may has impact to 6692 -d as well. Many thanks - Wu Chou/Li Li --------------------------------------------------------------- Proposal to Issue 6692-a, b, c Version 0.5 Wu Chou, Li Li (7/20/09) A. Overview As a consensus at F2F meeting, Qname is used to define the delivery mode extension for the ease of composition. As a replacement of the original Delivery/@Mode URI, these special Qnames represent literally defined requirements (non-nested assertions as the replaced URIs cannot be nested). However, there are some critical issues related to the use of Qnames for delivery mode extension (see Section C for details). This draft is a proposal of using delivery policies to decorate the delivery element of WS-Eventing for delivery mode extensions. B. Proposal - Use Delivery Policies for Delivery Mode Extension B.1 WS-Eventing Standard Policy Assertion: Define assertion <wsp:Push /> in the policy name space wsep for the literal specification/requirement of Push as defined in the current WS-Eventing spec. B.2 Policy Subject: The policy subject of Delivery policies is the <wse:Delivery> element. Event source MAY attach the delivery policy or all its supported delivery policy alternatives to the XML Schema definition of the <wse:Delivery> element of the event source WSDL as illustrated below: (01) <xs:element name="Delivery" type="tns:DeliveryType" > (02) <wsp:Policy id="DeliveryPolicy "> (03) <wsep:Push wsp:optional="false" /> (04) <sp:Ack wsp:optional="true" /> (05) </wsp:Policy> (06) </xs:element> B.3 Subscribe Messages: Event subscriber attaches the delivery policy to the Delivery element in the Subscribe message: <wse:Subscribe> <wse:Delivery ...> <wse:NotifyTo>wsa:EndpointReferenceType </wse:NotifyTo> <wsp:Policy> <wsep:Push wsp:optional="false" /> <sp:Ack wsp:optional="true" /> </wsp:Policy> xs:any* </wse:Delivery> </wse:Subscribe> Event source should respond with one policy alternative that it will use to convey the event notification, <wse:SubscribeResponse> <wse:SubscriptionManager>wsa:EndpointReferenceType </wse:SubscriptionManager> <wse:Delivery> <wsp:Policy> <wsep:Push /> </wsp:Policy> </wse:Delivery> xs:any* </wse:SubscribeResponse> In this case, the <wse:SubscribeResponse /> indicates the optional <sp:Ack /> is not used for the event notification. Only compact form of Policy expressions is required for both event source and the event subscriber. Event source and the event subscriber MUST support non-nested delivery policy assertions. If the requested delivery policy cannot be satisfied by the event source, it MUST fault with wse:DeliveryPolicyUnsupported fault. B.4 Delivery Policy Publication and Negotiation The event source MAY attach all supported delivery policy alternatives to the XML Schema definition of the <wse:Delivery> element of the event source WSDL for policy publication and negotiation. The event subscriber should follow the event source supported delivery policies to construct its event subscription messages. Notes: The support for non-nested delivery policy assertions can be implemented through Qname matching without a full featured WS-Policy implementation. C. Background The original extensibility model in WS-E for delivery element consists of two parts, i.e. one through Delivery/@Mode URI and one through the xs:any. In WS-Eventing, @Mode is at a higher semantic hierarchy and it provides the critical context, e.g. Push, Pull, etc., for processing other extension elements. For example, it has a default value "Push", the default value can only be changed by Delivery/@Mode URI, and extension elements in xs:any should not contradict or overwrite the delivery mode. These constraints are important for interoperability, because the delivery mode is an anchor point for other extension elements. To process other elements in xs:any, it needs first to determine the delivery mode, e.g. Push or Pull, before being able to establish the semantics of other extensions, e.g. allowed or not allowed, etc. Determination of Mode in original WS-E is straightforward, since it is either the default "Push" or the one given by the @Mode URI. When using Qnames for delivery mode extension and lump them with other extension elements in xs:any, the original extensibility structure of WS-E is no longer there, and it introduces the following issues: 1. It is unclear how to determine the semantics of expressions (combinations) formed by Qnames in order to establish the delivery mode, and what algorithm should use to parse and determine the delivery mode from xml block under xs:any. 2. For example, the expression <Push /><Pull /> can be interpreted as: 1) Invalid, since both <Push /> and <Pull /> occur; 2) <Pull /> since <Pull /> is after <Push /> and therefore, overwrites <Push />; 3) two supported delivery options of <Push /> and <Pull />, since there is no mU header; etc. It is unclear how a subscriber should do to indicate using either <Push /> or <Pull />, but not both. This issue is acute for more complex expressions, e.g. <Push /><Pull /><Push />? <Push /><Pull /><Push /><Ack />? ... 3. It is unclear how the event source should define and specify the permissible Qname expressions (combinations) so that the subscriber knows which one to use for a particular event source. 4. It is unclear how an event source should satisfy both optional and non-optional requirements and how the event sink can know which particular combination of requirements that the event source apply/use in its event delivery. For example, when optional delivery Qnames, e.g. Push, Pull, MC, etc., are used, the event sink has no clue which particular delivery option that event source uses to send the notification even receives a positive response. This will cause the notification to break. 5. How do we constrain the mode changing QNames so that it does not incur huge overhead for the event source to process it? 6. The composition in the generic SOAP extension is somewhat different from the QName composition here. In generic SOAP extension, different extensions are independent in the sense they can fit into a Chain of Responsibility design pattern (where each extension is implemented by an interceptor). Whereas no such effect exists here and all QNames have to be processed as a whole, and the delivery mode may need to be determined first in order to process and deliver the notifications correctly. To address the abovementioned issues, we propose to use delivery policies for delivery mode extensions in WS-Eventing and it is described in Section B with details. ------------------------------------------
Received on Tuesday, 21 July 2009 15:43:22 UTC