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: Issue 96.1 - Proposal For Vote


Issue 96.1 - filterOnPartnerRole

Proposal: Add for use on receive/pick/onEvent the 'filterOnPartnerRole' 
attribute. This specifies that any message accepted by the 
receive/pick/onEvent activity must be sent from the partner identified 
by the EPR in the partnerRole. This proposal assumes that issue 194 is 
accepted and resolved by introducing a new uninitializedPartner fault. 
This proposal also introduces a canNotFilterOnPartnerRole fault for EPRs 
that are only useful in sending but not receiving.

Rationale: One of the most common BPEL scenarios out there is that 
someone receives a message from a partner and then later on wants to 
receive another message but only from that specific partner. The issue 
139 proposal defines that the default behavior for BPEL will be that the 
partnerRole value is ignored by default on receive/pick/onEvent. This 
attribute would allow that default behavior to be overridden and for the 
partnerRole EPR to be used as a filter on incoming messages.

Section 11.4

From: Note that the value of the partnerRole on the partner link is not 
used when processing a receive activity, that is, there is no filtering 
of incoming messages based on the partnerRole’s value.

To: The value of the filterOnPartnerRole attribute determines what role, 
if any, the value of the partnerRole EPR plays in a receive. If 
filterOnPartnerRole="no" then the partnerRole EPR value is ignored in 
determining what messages to receive. If filterOnPartnerRole="yes" then 
messages accepted by the receive MUST originate from the a partner whose 
EPR matches the EPR in the partnerRole. BPEL engines MUST statically 
check if the EPR in a partnerRole cannot be used to filter incoming 
messages and reject any BPELs that use filterOnPartnerRole="yes" with 
such unsuitable EPRs. However it is not always possible to statically 
check for this error as partnerRole values can be dynamically assigned. 
In that case if a partnerRole EPR, at runtime, contains a value that 
cannot be used to filter incoming messages then the 
canNotFilterOnPartnerRole fault MUST be thrown.

Section 13.5.1.

From: As with <receive> the  partnerRole EPR is ignored for purposes of 
determining which messages to receive and may be initialized/updated as 
a consequence of receiving a message using a binding that is able to 
provide EPR information about the partner.

To: As with <receive> the partnerRole EPR is only used for filtering 
incoming messages if the filterOnPartnerRole attribute is set to yes. 
Also, the partnerRole value may be initialized/updated as a consequence 
of receiving a message using a binding that is able to provide EPR 
information about the partner.

Add to Appendix A:

canNotFilterOnPartnerRole  - Thrown when a receive/pick/onEvent 
specifies filterOnPartnerRole but the EPR in the partnerRole value 
cannot be used to filter incoming messages.

Change BNFS in 11.4 and 6.2 to:
From:
<receive partnerLink="ncname" portType="qname"? operation="ncname"
	variable="ncname"? createInstance="yes|no"?
         messageExchange="ncname"? filterOnPartnerRole="yes|no"?
	standard-attributes>
       standard-elements
       <correlations>?
	<correlation set="ncname" initiate="yes|no"?/>+
       </correlations>
</receive>

Section 12.4 and 6.2:
<pick createInstance="yes|no"? standard-attributes>
       standard-elements
    <onMessage partnerLink="ncname" portType="qname"?
	operation="ncname" variable="ncname"?
         messageExchange="ncname"? filterOnPartnerRole="yes|no">+
      <correlations>?
	<correlation set="ncname" initiate="yes|no"?/>+
      </correlations>
      activity
    </onMessage>
    <onAlarm>*
	  ( <for expressionLanguage="anyURI"?>duration-expr</for> |
	    <until expressionLanguage="anyURI"?>deadline-expr</until> )?
	    <repeatEvery expressionLanguage="anyURI"?>duration-expr</repeatEvery>?
       activity
    </onAlarm>
</pick>

Section 13.5 and 6.2:
<eventHandlers>?
        <!-- there must be at least one onEvent or onAlarm handler -->
	<onEvent partnerLink="ncname" portType="qname"?
	     operation="ncname"  messageType="qname"
	     variable="ncname"
              (messageType="qname" | element="qname")?
              messageExchange="ncname"? filterOnPartnerRole="yes|no">*
	    <correlations>?
		<correlation set="ncname" initiate="yes|no"/>+
	    </correlations>
	    activity
	</onEvent>
	<onAlarm>*
	  ( <for expressionLanguage="anyURI"?>duration-expr</for> |
	    <until expressionLanguage="anyURI"?>deadline-expr</until> )?
	    <repeatEvery expressionLanguage="anyURI"?>duration-expr</repeatEvery>?
	     activity
	</onAlarm>
</eventHandlers>



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