ambiguousReceive

Fault Name

bpel:ambiguousReceive -- {excerpt} two or more inbound message activities using the same partnerLink and operation but different correlationSets match an incoming request message. {excerpt}

Description

This fault is thrown when two (or more) inbound message activities (i.e. <[pick](pick.html)>, <[receive]>, etc...) are in a position to consume the same message. This can occur if two (or more) inbound activities using the same partnerLink and operation (but different correlationSets) are activate at the same time and a message arrives that matches more two or more of the activities. In other words, this fault is thrown when there is a race between two activities to consume the same message. The following section provides an example.

ODE does not currently throw this fault. Instead, one of the inbound message activitie will "win" and consume the message.

{anchor:examples} Examples

The following BPEL (based on the example types in the WS-BPEL 2.0 specification) would generate the fault in the <receive>, and <pick> activities as soon as a matching message was received :

<correlationSets>
  <correlationSet name="PO1" properties="cor:customerID cor:orderNumber"/>
  <correlationSet name="PO2" properties="cor:customerID cor:orderNumber" />
</correlationSets>

...

<!-- Assume PO1, and PO2 initialized with the same value.  -->

<flow>
  <pick>
     <onMessage partnerLink="Seller" operation="PurchaseResponse"
                variable="POResponse1">
       <correlations> 
           <correlation set="PO1" initiate="no" />
       </correlations>
     </onMessage>
  </pick>

  <receive partnerLink="Seller" operation="PurchaseResponse"
           variable="POResponse2">
    <correlations> 
      <correlation set="PO2" initiate="no" />
    </correlations>
  </receive>
</onMessage>

See Also

<[pick](pick.html)>,<[receive]>