- From: Doug Davis <dug@us.ibm.com>
- Date: Tue, 7 Jul 2009 21:12:16 -0400
- To: public-ws-resource-access@w3.org
- Message-ID: <OF8A83DC78.4F9ADE6C-ON852575ED.00021D84-852575ED.0006A076@us.ibm.com>
For issue 6692 I think we might be getting ourselves confused by trying to do too many things at once. I'd like to back things up a bit and propose that WS-Eventing not give itself any special treatment. By that I mean we don't define a _default_ delivery mechanism. Technically the wse:NotifyTo element is just an extension - it should not be anything special. It just happens to be defined by WS-Eventing for convenience. By doing this we avoid the risk of giving certain extensions (ours) precedence over others and creating confusion. So, if we don't give ourselves any special treatment, then wse:Delivery could be reduced to something like this: [Body]/wse:Subscribe/wse:Delivery This element contains the information necessary to convey notification messages from the event source to the event sink in a manner required by the subscriber. This element MUST contain at least one child element. I added the MUST since w/o any children we have no idea what to do with Notifications. Clearly, we do need to provide at least one basic delivery mechanism, so we could then add this: [Body]/wse:Subscribe/wse:Delivery/wse:NotifyTo This specification defines one extension element, wse:NotifyTo, that MAY be used by a subscriber as a child of the wse:Delivery element. When present this element indicates that notifications MUST be asynchronously sent to the EndpointReference identified by this element. So, what does this buy us? Well, let's say someone defines a <frog/> delivery extension and it requires the wse:NotifyTo element. They would then need to define, in the ws-frog spec, the <frog/> element and say that wse:NotifyTo MUST also be present. We've now forced people who write extensions to very clearly say what their prereqs are. With the current proposal it wasn't clear if <frog/> could assume that wse:NotifyTo would always be present. Now, let's say someone defined a <broadcast/> extension that didn't need wse:NotifyTo. In the ws-broadcast spec it wouldn't even mention wse:NotifyTo - nor should it. And, let's say someone defined a <trashIt/> extension that meant all Notifications should be trashed (like using a wsa:None wse:NotifyTo EPR). Again, no need for ws-trash to even mention wse:NotifyTo. Finally, let's say someone defined a <ack/> extension that meant a response must be sent back to the event source for each notification. This extension, like <frog/>, would need to do one of two things. It would either need to mandate the use of wse:NotifyTo or it would to define its own EPR - their choice. Either way , its very clear what's expected. The point of all this is that we force people to very clearly define their extensions and what their prereqs are. Having a "default" delivery element means we need to explain when/how/if it interacts with extensions - and its not even clear when extensions can assume its present. The above would remove this ambiguity and force a cleaner design. Now, the other question that we seemed to get hung up on is what to do with conflicting extensions. We need to assume that all of the above extensions were written without knowledge of each other (including wse:NotifyTo). So, on the call today we talked about what an event source would do if it were given something like this (assume all extensions are understood): <wse:Delivery> <wse:NotifyTo/> <trashIt/> </wse:Delivery> Well, the answer would be the same as if this were sent in: <wse:Delivery> <broadcast/> <trashIt/> </wse:Delivery> In other words, the event source would need to be written to handle both of these cases. And, IMO, it should deal with both cases in the exact same way. It would need to detect that in both cases the two extension elements created a problem and a fault should be thrown. The fact that in the first example we're conflicting with a ws-eventing defined extensions isn't really relevant - nor should it be since "our" extensions aren't any more special than any one else's. Now let's change it up a bit and say someone defined a real add-on extension- one that could be used with other extensions - like Gil's <pauseable/> example. This one wouldn't need to mention wse:NotifyTo or any other extension - it just talks about queuing up Notifications. Now, what if someone sent in this: <wse:Delivery> <pauseable/> </wse:Delivery> Again, the event source would need to detect that something is missing - some extension that said what to do with the notifications. This is really no different from the above two cases. ps. I don't think this has any impact on Wu's issue/proposal of using ws-policy. Whether we choose to adopt that option is orthogonal to this. thanks -Doug ______________________________________________________ STSM | Standards Architect | IBM Software Group (919) 254-6905 | IBM 444-6905 | dug@us.ibm.com The more I'm around some people, the more I like my dog.
Received on Wednesday, 8 July 2009 01:12:58 UTC