- From: Glen Daniels <gdaniels@sonicsoftware.com>
- Date: Mon, 4 Oct 2004 11:30:22 -0400
- To: "Savas Parastatidis" <Savas.Parastatidis@newcastle.ac.uk>, <www-ws-desc@w3.org>
Hi Savas, all: The idea of the ONM requirement is that the description should, in some way, give you a hint as to how a particular operation is determined in the absence of unique wire signatures. In the case below, there is no conflict, since one operation is in-out and the other is out-in. Therefore, from the service's point of view, it is either going to receive a GameOver message (and therefore the operation is reactor:GameOver) or itself decide to send one (and therefore the operation is intiator:GameOver). The wire signatures are enough to determine which is going on. If both send them at the same time, I would imagine that both operations would be invoked simultaneously, generating a pair of equivalent messages in response. To extrapolate out a little from what you say below, if you're interested in modeling a system which has a complex state machine involving lots of decision points based on arbitrary ordering of incoming messages, I don't think WSDL is really what you want. I would think you'd use something like BPEL or BPML for this. WSDL is essentially about Web Service *operations* and that's why we have the ONM requirement - if you can't distinguish which operation you're talking about, you may as well just have an undifferentiated bag of messages and not use WSDL at all. --Glen > -----Original Message----- > From: www-ws-desc-request@w3.org > [mailto:www-ws-desc-request@w3.org] On Behalf Of Savas Parastatidis > Sent: Monday, October 04, 2004 4:51 AM > To: www-ws-desc@w3.org > Subject: On the Operation Name Mapping requirement > > > Dear all, > > Jim Webber and I are trying to get our heads around the > Operation Name Mapping (ONM) that exists in the current draft > at the interface level but will be moving to the service > level, as I read in one of the threads, in the next draft. > > We have been working on a very simple Noughts-and-Crosses > (tic-tac-toc) example for using SOAP and WSDL. The two > players are effectively two services exchanging messages. The > description of each of the services has to be symmetric, if > we are to reason about their ability to meaningfully exchange > messages. This means that we have to describe both the > "initiating" and the "reacting" message exchanges. Here's > what I mean... > > <definitions targetNamespace="nac:interfaces:initiator"> > <interface name="Player"> > <operation name="GameOver" > pattern="http://www.w3.org/2004/08/wsdl/out-in"> > <output element="nac:game-over" /> > <input element="nac:game-over" /> > </operation> > </interface> > </definitions> > > <definitions targetNamespace="nac:interfaces:reactor"> > <interface name="Player"> > <operation name="GameOver" > pattern="http://www.w3.org/2004/08/wsdl/in-out"> > <input element="nac:game-over" /> > <output element="nac:game-over" /> > </operation> > </interface> > > A Web Service that supports both these roles is described as: > > <interface name="Player" extends="initiator:Player reactor:Player" /> > > What do the above interfaces mean? The first one tells us > that the service at some point will send a <game-over> > message and will expect to receive a corresponding > <game-over> message as a result. The second interface tells > us that if a service receives a <game-over> message, it will > respond with the same message. It's just happens that the > logic of the services requires that the messages are the same. > > Since we are in a loosely coupled world, we don't really know > which of the two players will send the <game-over> message > first, so we need to support both behaviours at each service. > This is absolutely fine since the logic of the two services > can cope with the scenario. "Oh... I just received a > 'game-over' message. The other player is telling me > something. I have to reply accordingly". Or, "Oh... I just > received a 'game-over' message as a reply to the one I > previously sent. That's the other player's response". And > "what if both endpoints send the same message, at the same > time?" you ask. Well, we use WS-Addressing to cope with this > situation ("ReplyTo" header). > > > However, the ONM requirement doesn't allow our services to be > described in this way since the wire format is the same for > both GameOver operations. The service logic requires us to > send messages <game-over> messages on the wire (and this > works in our implementation) but WSDL 2.0 doesn't allow us to > describe it. Should WSDL be so restrictive and direct us > towards a particular way of describing our services? > > We can think of other business cases where it is the service > logic that determines the dispatching of a particular > operation (based on contents, protocol, etc.) and not the > uniqueness of the wire format. > > We'd be interested in the WG's comments. > > Regards, > Savas & Jim > > > > >
Received on Monday, 4 October 2004 15:30:15 UTC