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


Help: OASIS Mailing Lists Help | MarkMail Help

wsbpel-comment message

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

Subject: wording for conflictingReceive and ambiguousReceive

The following statement may need to be clarified in the spec: "If during
the execution of a business process instance, two or more receive
activities for the same partnerLink, operation and correlationSet(s) are
simultaneously enabled, then the standard fault bpel:conflictingReceive
MUST be thrown."

In this constraint, "two or more receive activities" should not be
interpreted as meaning "two or more instances of the same receive
activity", but instead: "two or more instances of different receive
activities". Indeed, it is possible that the same "receive activity"
within a scope nested in an event handler or parallel foreach, is
"enabled" multiple times simultaneously, possibly once for each instance
of the scope. In such cases, I am assuming that "conflictingReceive"
should not be thrown (otherwise, most "receive activities" appearing in 
a parallel foreach or event handler would unavoidably lead to faults).
Consider the following example:
<foreach ... parallel="yes" ...>
       <partnerLink name="PL1" ... />
       <correlationSet name="S1" ... />+
    <invoke name="RA1" partnerLink="PL1" ... operation="OP1"
      <correlation set="S1" initiate="yes"/>
    <receive name="RA" partnerLink="PL1" ... operation="OP1" ...>
      <correlation set="S1" initiate="no"/>

In this example, it is likely that multiple instances of the IMA "RA"
may be enabled simultaneously. But no "conflictingReceive" would be thrown.

On the other hand, the following example may lead to a
"conflictingReceive", as one instance of activity "RA1" may be enabled
at the same time as one instance of "RA2".
   <receive name="RA1" partnerLink="PL1" portType="PT1" operation="OP1" ...>
     <correlation set="S1" .../>
   <receive name="RA2" partnerLink="PL1" portType="PT1" operation="OP1">
     <correlation set="S1" .../>

The first example discussed above also illustrates that the wording in
the definition of "ambiguousReceive" in Appendix A warrants some
clarification. The current definition says: "Thrown when a business
process instance simultaneously enables two or more IMAs for the same
partnerLink, portType, operation but different correlationSets, and the
correlations of multiple of these activities match an incoming
request message." The above is an example where two enabled instances of
the same IMA may match the same incoming message.

Kind regards

Marlon Dumas

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