OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

wsbpel message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: RE: [wsbpel] Issue 123 - Proposal to Vote - Where to declare messageExchanges?


Hi Yuzo,

I can't think of a compelling use case for replying to a receive inside of
an onEvent handler which was received outside the onEvent.  However what you
suggest has other ramifications.  For example if you change a partnerLink
inside of an onEvent (via a copy operation) then the modification is not
visible outside the onEvent.  There is a surprise factor associated with
that behavior that I worry about. Is there a clean way to describe the
partnerLink copy as just messageExchange oriented?

* "A partner link has a default message exchange whose name is empty"
* "Each onEvent instance and each PFE branches has its own copy of the
messageExchanges of partner links referenced within the instance"

- Chris

-----Original Message-----
From: Yuzo Fujishima [mailto:fujishima@bc.jp.nec.com] 
Sent: Tuesday, December 06, 2005 9:19 PM
To: chris.keller@active-endpoints.com
Cc: 'ws bpel tc'
Subject: Re: [wsbpel] Issue 123 - Proposal to Vote - Where to declare
messageExchanges?

Chris,

Thank you for the response.

Chris Keller wrote:
> Hi Yuzo,
> 
> Interesting suggestion and actually Satish had at one point suggested this
> option.  It isn't the direction the TC agreed on at the last f2f and would
> need some discussion before writing up. In addition on the last conference
> call we talked about a "default message exchange" being provided by the
> process, onEvent and pfe (parallel for each) contexts in order to minimize
> the frequency which users need to describe a message exchange.  If a
message
> exchange is provided by the partnerLink I am not sure that this would
work.
> Any thoughts on that?

How about the following:
* "Each of onEvent instances or each of PFE branches has its
  own copy of the partner link referenced", and
* "A partner link has a default message exchange whose name is empty"

The above seems OK for PFE. But maybe not for onEvent.
How often a response must be sent from within an onEvent
where the corresponding request is received outside of the onEvent?
Do we have a compelling use case?

Yuzo Fujishima
NEC Corporation

> 
> - Chris
> 
> 
> -----Original Message-----
> From: Yuzo Fujishima [mailto:fujishima@bc.jp.nec.com] 
> Sent: Thursday, December 01, 2005 11:44 PM
> To: ws bpel tc
> Subject: Re: [wsbpel] Issue 123 - Proposal to Vote - Where to declare
> messageExchanges?
> 
> Hi,
> 
> I have a comment regarding the location of the messageExchanges
> declaration.
> 
> In my opinion, a messageExchange is an extension to a partner link;
> to distinguish conversations occurring within a partner link.
> Therefore, I think it is reasonable to declare mesageExchanges
> within a declaration of a partner link.
> 
> Let me explain by example.
> 
> I do NOT like either of the following:
> 
> [Example 1]
> scope S1
>   partnerLink P1
>   sequence
>     scope S2
>       sequence
>         scope S3
>           messageExchange M1 // <= *Attention*
>           receive V1 partnerLink=P1 messageExchange=M1
>         scope S4
>           messageExchange M1 // <= *Attention*
>           reply R1   partnerLink=P1 messageExchange=M1
>     scope S5
>       ...
> 
> 
> [Example 2]
> scope S1
>   partnerLink P1
>   sequence
>     scope S2
>       messageExchange M1 // <= *Attention*
>       sequence
>         scope S3
>           receive V1 partnerLink=P1 messageExchange=M1
>         scope S4
>           reply R1   partnerLink=P1 messageExchange=M1
>     scope S5
>       messageExchange M1 // <= *Attention*
>       ...
> 
> Example 1 is invalid. The problem should not happen
> in the first place.
> 
> Example 2 is, in my opinion, confusing.
> 
> I like the following better:
>     
> [Example 2]
> scope S1
>   partnerLink P1
>     messageExchange M1 // for use in S3
>     messageExchange M2 // for use in S5 (Or just reuse M1 above)
>   sequence
>     scope S2
>       sequence
>         scope S3
>           receive V1 partnerLink=P1 messageExchange=M1
>         scope S4
>           reply R1   partnerLink=P1 messageExchange=M1
>     scope S5
>       ...
> 
> More concretely, I would propose the following schema:
> <scope or process>
>   ...
>   <partnerLinks>?
>     <partnerLink ...>+
>       <messageExchanges>?
>         <messageExchange name="ncname"/>+
>       </messageExchanges>
>     </partnerLink>
>   </partnerLinks>
> 
> This will also simplify the condition when a missingReply will be raised:
> just when the partner link in use goes out-of-scope. We don't
> need to talk about the message exchange.
> 
> Yuzo Fujishima
> NEC Corporation
> 
> Danny van der Rijn wrote:
> 
>>  Alexandre -
>>
>>It is my intention that DMD would NOT be applicable to scope, as that 
>>would be too confusing, IMO.  Apologies that I was not clear on that 
>>point in this mail. (I think I was more clear elsewhere in the mail 
>>thread, though.)
>>
>>Danny
>>
>>
>>Alexandre Alves wrote:
>>
>>>Hi Danny,
>>>
>>> 
>>>
>>>Specify that an IMA that does not specify a messageExchange resolves 
>>>to a "default messageExchange declaration (DMD)."  (This is a howler 
>>>of a name, and needs to be changed)  In this way, not specifying a 
>>>messageExchange in an onEvent resolves replies to the onEvent, as most 
>>>users would expect.  DMDs can be thought of as present on each onEvent 
>>>whether they are "used" or not.
>>>
>>> 
>>>
>>>Regarding option [2], it was not very clear to me if the DMD would 
>>>also be applicable to scope, or do you envision it only on onEvent 
>>>(and possibly on process)? I guess the same rationality you presented 
>>>for the process is true for scope - consistency.
>>>
>>> 
>>>
>>>Rgds,
>>>
>>> 
>>>
>>>* From: * Danny van der Rijn [mailto:dannyv@tibco.com]
>>>*Sent:* Wednesday, November 09, 2005 3:36 PM
>>>*To:* ' ws bpel tc '
>>>*Subject:* Re: [wsbpel] Issue 123 - Proposal to Vote
>>>
>>> 
>>>
>>>As we discussed on the call today, here are some thoughts on this 
>>>issue that are swimming around it my head.  (I wish they would respect 
>>>the swimlanes, and stop crashing into each other).
>>>
>>>An example (in extremely abbreviated syntax) of a problem that we 
>>>haven't worked out yet:
>>>
>>><scope>
>>>    <partnerlink name="pl"/>
>>>    <eventHandler partnerLink="pl" operation="op">
>>></scope>
>>>
>>>"op" is a request-reply operation.
>>>To note:  no partnerLink or messageExchange is declared on the 
>>>eventHandler associated scope.
>>>
>>>Timeline:
>>>Time 1: The eventHandler receives a message.  For reply-resolution 
>>>purposes, its identifying triple is {pl, op, null}
>>>Time 2:  No reply to the above triple has occurred, and another 
>>>messages comes in on partnerLink pl and op.  If it were to be 
>>>received, its triple would be {pl, op, null}.  Thus a 
>>>conflictingReceive should be thrown.  At least it would be reasonable 
>>>to infer that from the current spec (with or without 123?)
>>>
>>>I see 2 ways of solving this:
>>>
>>>Option* [1]*
>>>Rationale:  Makes writing the spec easier.
>>>
>>>*[A] *Require that onEvent either define at least one of partnerLink, 
>>>messageExchange locally.
>>>- or -
>>>*[B]* Specify that in the case that an onEvent does not specify a 
>>>local partnerLink or messageExchange, the onEvent can not run 
>>>concurrently with itself.  Either the messages must be queued, or 
>>>conflictingReceive will be thrown any time a message is received on a 
>>>request/reply operation for an onEvent that has an outstanding request.
>>>
>>>I do not favor Option [1].
>>>
>>>Option *[2]
>>>*Rationale:  messageExchange should be reserved for the 20% (or less) 
>>>cases.  The user of only 80% cases should never have to know about 
>>>messageExchanges.
>>>
>>>Specify that an IMA that does not specify a messageExchange resolves 
>>>to a "default messageExchange declaration (DMD)."  (This is a howler 
>>>of a name, and needs to be changed)  In this way, not specifying a 
>>>messageExchange in an onEvent resolves replies to the onEvent, as most 
>>>users would expect.  DMDs can be thought of as present on each onEvent 
>>>whether they are "used" or not.
>>>
>>>I favor this option.
>>>
>>>Question *[A] *
>>>Should a DMD be present on a parallel forEach (PFE)? 
>>>
>>>The argument against having it present is that PFE is not inherently a 
>>>web-service operation, and it could be confusing to have it there.  
>>>The argument for having it there is that in the 80% case, IMAs within 
>>>a PFE will have replies that are in the same PFE.  Specifying a DMD on 
>>>a PFE allows the 80% case to not use messageExchange.
>>>
>>>I favor having a DMD on PFEs.
>>>
>>>Question *[B]*
>>>Should a DMD be present on the process?
>>>
>>>The argument against having it present is that there is no need for it 
>>>to be present - we already define how to match IMAs with replies if 
>>>there is no messageExchange.  The argument in favor of having it 
>>>present is that if it is present, we can get rid of that exact 
>>>language.  There are no activities with no messageExchange, there is 
>>>just a default value.
>>>
>>>I favor having a DMD on processes.
>>>
>>>Danny
>>>   
>>>
>>>Alex Yiu wrote:
>>>
>>>
>>>Hi,
>>>
>>>Just want to relay some of the differences between CS and
> 
> messageExchange:
> 
>>>-- CS can be declared and init-ed outside of an event handler, before 
>>>the execution of <onEvent>.
>>>-- On the other hand, when the messageExchange is being used by 
>>><onEvent>, the "life cycle"/"state" of messageExchange is tied with 
>>>"life cycle"/"state". That is, for <onEvent>,
>>>I cannot find a use case where an <onEvent> would refer to a 
>>>messageExchange outside of a <eventHandler>. If that reference 
>>>happens, the only results that I can foresee are some 
>>>non-deterministic bwps:conflictingRequest fault.
>>>
>>>
>>>Thanks!
>>>
>>>
>>>Regards,
>>>Alex Yiu
>>>
>>>
>>>Alex Yiu wrote:
>>>
>>>
>>>In my previous email, I meant <onEvent>, instead of <onMessage>. Sorry 
>>>for the mixup.
>>>
>>>Regards,
>>>Alex Yiu
>>>
>>>
>>>Alex Yiu wrote:
>>>
>>>
>>>Hi Chris,
>>>
>>>Thank you for working this proposal out.
>>>
>>>A number of suggestions:
>>>
>>>(1) Captialize one of the "must" words
>>>(2) Adding some more scope resolution wordings
>>>
>>>A reply activity is associated with an inbound message activity (IMA), 
>>>such as, <receive>, <onMessage> and <onEvent> based on the tuple - 
>>>partnerLink, operation, and messageExchange.  The name used in the 
>>>optional messageExchange attribute MUST resolves to a messageExchange 
>>>declared in a scope (where the process is considered the root scope) 
>>>which encloses the reply activity and its corresponding IMA. The 
>>>messageExchange resolution follows follows common lexical scoping 
>>>rules, similar to variable resolution. A messageExchange resolves to 
>>>the nearest enclosing scope.
>>>
>>>
>>>Since messageExchange is scope-based, most likely I would request an 
>>>additional paragraph of messageExchange resolution within a 
>>><onMessage> in the context of Issue 204 resolution. (I would send out 
>>>more emails later).
>>>
>>>Thanks!
>>>
>>>
>>>Regards,
>>>Alex Yiu
>>>
>>>
>>>
>>>Chris Keller wrote:
>>>
>>>Issue 123 - Proposed changes to the current draft for scoped 
>>>messageEchange:
>>>
>>> 
>>>
>>>In section 6.2 add to the informal syntax describing the XML grammar 
>>>for both the process element and the scope element between 
>>>partnerLinks and variables the following:
>>>
>>> 
>>>
>>><messageExchanges>?
>>>
>>>     <messageExchange name="ncname"/>+
>>>
>>></messageExchanges>
>>>
>>> 
>>>
>>> 
>>>
>>>Change the following paragraphs from Section 11.4:
>>>
>>> 
>>>
>>>The optional messageExchange attribute is used to associate a <reply> 
>>>activity with an inbound message activity, such as, <receive>, 
>>><onMessage> and <onEvent>, when there are multiple simultaneously 
>>>incomplete inbound message activities which requires a reply message 
>>>to complete.
>>>
>>> 
>>>
>>>A reply activity is associated with a inbound message activity based 
>>>on the tuple - partnerLink, operation, and messageExchange. The value 
>>>defined in messageExchange is scoped to the combination of partnerLink 
>>>and operation. That is, it is legal to use the same messageExchange 
>>>value in multiple simultaneously incomplete receive activities so long 
>>>as the combination of partnerLink and operation on the receives are 
>>>all different from each other. An incomplete inbound message activity 
>>>describes the state of a BPEL process from the point that a 
>>>request/response receive activity starts execution until its 
>>>associated reply begins execution.
>>>
>>> 
>>>
>>>If there should ever be multiple simultaneous incomplete inbound 
>>>message activities which have the same partnerLink, operation and 
>>>messageExchange tuple then the bpws:conflictingRequest fault MUST be 
>>>thrown within the BPEL process on the conflicting inbound message 
>>>activities subsequent to the execution of the successful incomplete 
>>>receive.
>>>
>>> 
>>>
>>>If a reply activity cannot be associated with an incomplete receive 
>>>activity by matching the tuples and this error situation is not caught 
>>>during static analysis,  then bpws:missingRequest fault MUST be thrown 
>>>within the BPEL process on the reply activity. Because conflicting 
>>>requests should have been rejected at the time inbound message 
>>>activity is executed, there cannot be more than one corresponding 
>>>inbound message activity at the time <reply> is executed.
>>>
>>> 
>>>
>>>If the messageExchange attribute is not specified on a receive then 
>>>its value is taken to be empty. For matching purposes two empty 
>>>messageExchange values with the same partnerLink and operation values 
>>>are said to match. Empty value does not match with other non-empty 
>>>values.
>>>
>>> 
>>>
>>>To the following:
>>>
>>> 
>>>
>>>A reply activity is associated with an inbound message activity (IMA), 
>>>such as, <receive>, <onMessage> and <onEvent> based on the tuple - 
>>>partnerLink, operation, and messageExchange.  The name used in the 
>>>optional messageExchange attribute must correspond to a 
>>>messageExchange declared in a scope (where the process is considered 
>>>the root scope) which encloses the reply activity and its 
>>>corresponding IMA.
>>>
>>> 
>>>
>>>An open IMA describes the state of a Web service operation from the 
>>>point that a request/response IMA starts execution until an associated 
>>>reply begins execution. It is illegal to have multiple simultaneous 
>>>open IMAs, which have the same partnerLink, operation and 
>>>messageExchange tuple.  A BPEL process MUST throw a 
>>>bpws:conflictingRequest fault when the conflicting IMA begins 
>>>execution.  Note that it is legal to use the same messageExchange in 
>>>multiple simultaneously open IMAs so long as the combination of 
>>>partnerLink and operation on the IMAs are all different from each other.
>>>
>>> 
>>>
>>>If a reply activity cannot be associated with an open IMA by matching 
>>>the tuples (partnerLink, operation, and messageExchange) then a 
>>>bpws:missingRequest fault MUST be thrown within the BPEL process on 
>>>the reply activity. Because conflicting requests MUST be rejected at 
>>>the time the IMA begins execution there cannot be more than one 
>>>corresponding IMA at the time a reply activity is executed. Further if 
>>>an open IMA goes out of scope prior to being closed by a reply 
>>>activity then the scope MUST throw a bpws:missingReply fault.  In 
>>>other words a scope which declares a partnerLink or messageExchange 
>>>used by an IMA will not complete normally if that IMA is open when the 
>>>scope is to complete.
>>>
>>> 
>>>
>>>If the messageExchange attribute is not specified on an IMA or reply 
>>>then the activity's messageExchange is said to be null. For matching 
>>>purposes two null messageExchanges are said to match. However a null 
>>>messageExhange does not match a non-null messageExchange.
>>>
>>> 
>>>
>>> 
>>>
>>> 
>>>
>>> 
>>>
>>>--------------------------------------------------------------------- 
>>>To unsubscribe from this mail list, you must leave the OASIS TC that 
>>>generates this mail. You may a link to this group and all your TCs in 
>>>OASIS at: 
>>>https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php 
>>
>>--------------------------------------------------------------------- To 
>>unsubscribe from this mail list, you must leave the OASIS TC that 
>>generates this mail. You may a link to this group and all your TCs in 
>>OASIS at: 
>>https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe from this mail list, you must leave the OASIS TC that
> generates this mail.  You may a link to this group and all your TCs in
OASIS
> at:
> https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php 
> 
> 
> 
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe from this mail list, you must leave the OASIS TC that
> generates this mail.  You may a link to this group and all your TCs in
OASIS
> at:
> https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php 
> 
> 
> 







[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]