W3C home > Mailing lists > Public > public-ws-chor@w3.org > July 2003

Re: Decoupling of low-level and high-level MEP

From: Jon Dart <jdart@tibco.com>
Date: Mon, 21 Jul 2003 09:23:25 -0700
Message-ID: <3F1C137D.3010605@tibco.com>
To: Ricky Ho <riho@cisco.com>
CC: assaf Arkin <arkin@intalio.com>, public-ws-chor@w3.org

I'm pretty convinced you do need nesting of choreographies, in the sense 
that you can define a low-level pattern and re-use it, possibly multiple 
times, in building up a higher-level pattern. This is already in the 
requirements, I believe.

However, IMO you wouldn't use this facility to implement reliable 
messaging. If all you had to do was re-send until you got an ack, then 
there would hardly be any need for a reliable messaging specification. 
But it's not that simple. You need other metadata besides just a MEP to 
make this work reasonably well.

The relation of choreography to MEPs is interesting and probably 
warrants further discussion. However, IMO choreography is sitting at a 
different level than WSDL in the overall standards stack.

--Jon

Ricky Ho wrote:
> 
> Arkin, your idea here is very interesting to me.  I try to use an 
> example to confirm my understanding ...
> 
> Business-level MEP
> ===============
> - Submit PO
> - A one-way message (no response is expected at the business level)
> 
> MEP SubmitPO {
>         role: buyer, seller (implements PO-HandlerPT)
>         sequence {
>                 buyer invoke seller (operation = submitPO, portType = 
> PO-HandlerPT)
>         }
> }
> 
> PortType PO-HandlerPT {
>         Operation submitPO {
>                 Input: (PO)
>         }
> }
> 
> However, since the PO must be send reliably (ie, it has certain QOS 
> requirement).  Therefore, at the implementation level, this 
> "business-layer MEP" is build on the RM MEP
> 
> Infrastructure-level MEP
> ==================
> 
> MEP RM {
>     role: sender (implements RM-SenderPT), receiver (implements 
> RM-ReceiverPT)
>     sequence {
>         while (no Ack received) {
>             sender invoke receiver (operation = sendMessage, portType = 
> RM-ReceiverPT)
>             switch {
>                 case1: {
>                     receiver invoke sender (operation = sendAck, 
> portType = RM-SenderPT)
>                 }
>                 case2: {
>                     timeout
>                 }
>             }
>         }
>     }
> }
> 
> PortType RM-ReceiverPT {
>         Operation sendMessage {
>                 Input: (Message, Ack-CallbackAddress)
>         }
> }
> 
> PortType RM-SenderPT {
>         Operation sendAck {
>                 Input: (Ack)
>         }
> }
> 
> Here is what happens at runtime ...
> 
> 1) The buyer engage in the SubmitPO MEP when it follows the choreography 
> definition and invoke the "submitPO" operation.
> 2) There is separate QOS requirement specified by the buyer (maybe 
> communicate out of band) that the operation must be done reliably.
> 3) The binding layer (this is what you call the "protocol handler", 
> consider it to be the client stub of the POHandlerPT) decides to use the 
> RM services.  So it invoke the "sendMessage" operation of the 
> RM-ReceiverPT instead (the client stub may encapsulate the business SOAP 
> message inside the RM SOAP message).
> 4) The implementation of sendMessage (at receiver side, which you call 
> the "protocol handler") invoke the sendAck operation of the sender 
> side.  At the same time, it also invoke the "submitPO" operation of the 
> receiver side.
> 
> The key point here is that the binding between the business-level-MEP 
> and RM-MEP is captured "somewhere else" (what you call "out-of-band"), 
> so that they can essentially decoupled with each other.  This 
> "decoupling" introduce tremendously reusability and flexibility and 
> still retain simplicity.
> 
> Do I accurately rephrase what you mean ?
> 
> Rgds, Ricky
> 
> 
> 
>> >Resent-Date: Fri, 18 Jul 2003 17:11:12 -0400 (EDT)
>> >Date: Fri, 18 Jul 2003 14:10:53 -0700
>> >From: Assaf Arkin <arkin@intalio.com>
>> >Organization: Intalio
>> >User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.4)
>> >Gecko/20030624
>> >X-Accept-Language: en-us, en, he
>> >To: "Burdett, David" <david.burdett@commerceone.com>
>> >CC: Frank McCabe <frankmccabe@mac.com>,
>> >         Martin Chapman <martin.chapman@oracle.com>,
>> >         Steve Ross-Talbot <steve@enigmatec.net>,
>> >         "Champion, Mike" <Mike.Champion@SoftwareAG-USA.com>,
>> >         public-ws-chor@w3.org
>> >Subject: Re: Grounding Choreographies (the atoms) - WAS Simple
>> >Choreograph   y   composition suggestion
>> >X-Archived-At: http://www.w3.org/mid/3F18625D.8060408@intalio.com
>> >Resent-From: public-ws-chor@w3.org
>> >X-Mailing-List: <public-ws-chor@w3.org> archive/latest/1303
>> >X-Loop: public-ws-chor@w3.org
>> >Sender: public-ws-chor-request@w3.org
>> >Resent-Sender: public-ws-chor-request@w3.org
>> >List-Id: <public-ws-chor.w3.org>
>> >List-Help: <http://www.w3.org/Mail/>
>> >List-Unsubscribe:
>> <mailto:public-ws-chor-request@w3.org?subject=unsubscribe>
>> >
>> >
>> >Burdett, David wrote:
>> >
>> >>Assaf
>> >>
>> >>I agree that we need to agree on terminology, e.g. roles vs agents, I
>> >>have no strong views on which is better.
>> >>
>> >>I also like the idea of using WSDL interfaces, however I can see some
>> >>issues, for example: 1. Both the RM specs use SOAP to send their
>> >>acknowledgement messages and retries. So, for example, if you had a
>> >>WSDL definition that defined a PO as input and generated a PO Response
>>
>> >>as output, then how would the other RM messages be defined in the
>> >>WSDL?
>> >Out-of-band.
>> >
>> >You have one WSDL interface covering the operation you are trying to
>> >perform. The PO request and PO response. That's the input to the
>> service
>> >and the output from the service.
>> >
>> >You have another WSDL interface covering the ack/resend/etc. That one
>> >is
>> >defined by the RM protocol. It is implemented by the RM Service. The RM
>>
>> >Service is used in combination with the PO service, but as an
>> out-of-band
>> >interaction that is used only if a particular protocol is chosen.
>> >
>> > From the pespective of the application you send a PO request and
>> > receive
>> > a PO response. The recevier's protocol handler recognizes the RM
>> protocol
>> > and uses the RM Service's endpoint to send back and ack.
>> >
>> >This has three obvious benefits:
>> >
>> >1. You define the RM interface exactly once. You don't need to define
>> >specific operations, messages, etc each time you use RM. More
>> reusability.
>> >
>> >2. You can decide if/when/which RM protocol to use without having to
>> >change the interface definition. The protocol selection is carried in
>> the
>> >message.
>> >
>> >3. You can combine many different protocols in that way.
>> >
>> >Now, for just using RM it's possible to come up with some MEP that
>> >would
>> >be generally efficient. But the out-of-band model has more efficiency.
>> For
>> >example, if could ack multiple messages together, or request multiple
>> >resends together. If you try to combine RM + coordination + security
>> >context, your MEP would be hairy to define. But in this model you can
>> >easily turn these protocol features on & off without having to create
>> all
>> >the possible MEPs.
>> >
>> >>2. If you then wanted to layer an MEP on top of this which included
>> >>additional "signal" messages where each signal message was also sent
>> >>using RM protocols then how would these be included in the WSDL?
>> >Because you're making the protocol signals orthogonal to the actual
>> >WSDL
>> >interface, you let the protocol handler make the appropriate decisions
>> >which signals to make. This allows it not only support ack/resend
>> (easy),
>> >but also to couple that with multiple-message acks, is-alive pings,
>> flow
>> >control, combining/splitting messages, etc.
>> >
>> >And you can combine any number of protocols like that. The RM would
>> >typically be used for the duration of a single operation, while a
>> >coordination protocol would involve multiple operations. Establishing a
>>
>> >security context (single sign-on) would do both since the context may
>> last
>> >longer than one operation, but may expire and be re-established before
>> all
>> >operations are completed.
>> >
>> >So that scheme seems to be the most efficient one in my opinion, and
>> >also
>> >allows for proper layering of different protocols (business and
>> technical).
>> >
>> >arkin
>> >
>> >>3. How would you provide support for 1 and 2 above in WSDL in a way
>> >>which allowed a single basic definition of the "business"
>> >>choreography, e.g. you send a PO and get a PO response back, even
>> >>though you could get variations in the actual signals and RM protocol
>> >>used as well as the physical message format used?
>> >>
>> >>I'm not saying it can't be done, I just don't know how.
>> >>
>> >>Regards
>> >>
>> >>David
>> >>
>> >>-----Original Message-----
>> >>From: Assaf Arkin [mailto:arkin@intalio.com]
>> >>Sent: Friday, July 18, 2003 1:14 PM
>> >>To: Burdett, David
>> >>Cc: Frank McCabe; Martin Chapman; Steve Ross-Talbot; Champion, Mike;
>> >>public-ws-chor@w3.org
>> >>Subject: Re: Grounding Choreographies (the atoms) - WAS Simple
>> >>Choreograph y composition suggestion
>> >>
>> >>
>> >>It all boils down to terminology. I'm not suggesting any, just
>> >>pointing
>> >>out a problem.
>> >>
>> >>If we say "roles" and the WSA says "agents" then there's a mismatch.
>> >>If
>> >>the WSA defines an architecture in terms of agents interacting, but a
>> >>choreography can't involve agents (that would be an orchestration)
>> then
>> >>we might have a problem there. We need to raise this and work out a
>> >>terminology that is consistent across the board.
>> >>
>> >>So going back to Frank's original e-mail, either I didn't understand
>> >>what
>> >>was said, or we need to better align the usage of terminology between
>> the
>> >>two groups.
>> >>
>> >>
>> >>As for what the interaction is, I much prefer if we talk in terms of
>> >>WSDL
>> >>interfaces. Then we won't have to go down into the details of HTTP,
>> >>ack/resend, etc. When you express everything in terms of WSDL
>> interface
>> >>you are talking about these roles/agents interacting with each other.
>> The
>> >>protocol may end up using HTTP, it may include additional signals for
>> RM,
>> >>out-of-band signals for coordination, establish security context,
>> whatever.
>> >>
>> >>Since this is already taken care of by other specifications that you
>> >>can
>> >>plug-in, I would much prefer to focus solely on use of WSDL
>> interfaces.
>> >>
>> >>arkin
>> >>
>> >>Burdett, David wrote:
>> >>
>> >>
>> >>
>> >>>Assaf
>> >>>
>> >>>My take is that strictly speaking, a choreography is "A definition of
>>
>> >>>the sequence and conditions in which a set of interactions occur
>> >>>between two roles".
>> >>>
>> >>>Where *interactions* include both individual (e.g. HTTP) messages as
>> >>>well
>> >>>
>> >>as
>> >>
>> >>
>> >>>higher level concepts such as a single "reliably delivered message"
>> >>>which actually requires several HTTP message to implement, or at a
>> >>>even higher level, concepts such as a "Request for Quote". Also roles
>>
>> >>>can include, at a low level, general concepts such as a "sender" and
>> >>>"receiver" which could be appropriate when defining the choreography
>> >>>associated with a RM protocol, or such business level concepts such
>> >>>as "buyer" and "seller" when defining a business level
>> >>>protocol/choreography.
>> >>>
>> >>>In both cases roles defined in the choreography are abstract and need
>>
>> >>>to be mapped to the physical instances which will often, but needn't
>> >>>be - as Martin mentioned, web services. If we say that Choreographies
>>
>> >>>*always* have to be *between* web services then it precludes the
>> >>>choreography being used by something that is not a web service, which
>>
>> >>>I don't think we want to do.
>> >>>
>> >>>My $0.02c.
>> >>>
>> >>>David
>> >>>
>> >>>
>> >>>
>> >
>> >
>> >--
>> >"Those who can, do; those who can't, make screenshots"
>> >
>> >----------------------------------------------------------------------
>> >Assaf Arkin                                          arkin@intalio.com
>> >Intalio Inc.                                           www.intalio.com
>> >The Business Process Management Company                 (650) 577 4700
>> >
>> >
>> >This message is intended only for the use of the Addressee and may
>> >contain information that is PRIVILEGED and CONFIDENTIAL. If you are not
>>
>> >the intended recipient, dissemination of this communication is
>> >prohibited. If you have received this communication in error, please
>> >erase all copies of the message and its attachments and notify us
>> >immediately.
>> >
>> >
> 
> 
> 
> 
Received on Monday, 21 July 2003 12:23:30 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Saturday, 18 December 2010 01:00:25 GMT