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 119 - Proposal For Vote



This issue has been explained pretty well in the list. It relates to
implicit scopes (for invokes), links, suppressJoinFailure and the
interaction between these things. The current behavior is a bit
inconsistent. Please refer to the list archives for details. In the
proposal I make the following departures from the current spec:

1. Current spec states that the "implicit scope" for an <invoke> assumes
the name, comp handler and fault handlers of the <invoke>; proposal adds
that this "implicit <scope> activity" also assumes the links (sources,
targets, and join condition) as well as the value of the
suppressJoinFailure attribute of the <invoke>.

2. Current spec states that when join failure suppression is applied to
<invoke>s, that a fault handler for catching the bpws:joinFailure is
"merged" with the implicit scope of the <invoke> activty; the proposal
abandons this and instead states that a completely separate scope
dealing only with the suppressing the join failure fault is created to
enclose the "implicit <scope> activity" of the invoke.
3. Current spec is a bit unclear as to the behavior of when a <scope>
activity has the suppressJoinFailure set to "yes"; proposal specifies
that such scopes behave like all other activities: i.e., they bahave as
if they were wrapped by a new scope that has an empty faulthandler for
bpws:joinFailure. 

The effect of the above changes is to produce behavior that is a little
more cumbersome to specify but quite a bit more reasonable and
consistent with the rest of the specification (in particular the
resolution of issue 27). 

Here are the particulars:

11.3: Invoking Web Service Operations

CHANGE: Semantically, the specification of local fault and/or
compensation handlers is equivalent to the presence of an implicit scope
immediately enclosing the activity and providing those handlers. The
name of such an implicit scope is always the same as the name of the
activity it encloses. 

TO: Semantically, the specification of local fault and/or compensation
handlers is equivalent to the presence of an implicit <scope> activity
immediately enclosing the <invoke> activity providing those handlers.
The implicit <scope> activity assumes the name of the <invoke> activity
it encloses, its suppressJoinFailure attribute, its join condition, as
well as its link sources and targets. For example, the following:
<invoke name="purchase"
       suppressJoinFailure="yes" 
       partnerLink="Seller"
       portType="SP:Purchasing"
       operation="SyncPurchase"
       inputVariable="sendPO"
       outputVariable="getResponse">
      <targets>
          <target linkName="linkA"/>
      </targets>
      <sources>
          <source linkName="linkB">            
             <transitionCondition>
                   ...
             </transitionCondition>
           </source>
      </sources>
      <compensationHandler>
            <invoke partnerLink="Seller" portType="SP:Purchasing"
                   operation="CancelPurchase"
                   inputVariable="getResponse"
                   outputVariable="getConfirmation">
      </compensationHandler>
</invoke>

is equivalent to:

<scope name"purchase" 
      suppressJoinFailure="yes" >
     <targets>
         <target linkName="linkA"/>
     </targets>
     <sources>
         <source linkName="linkB">            
            <transitionCondition>
                 ...
            </transitionCondition>
          </source>
     </sources>
     <compensationHandler>
       <invoke partnerLink="Seller" portType="SP:Purchasing"
            operation="CancelPurchase"
           inputVariable="getResponse"
           outputVariable="getConfirmation">
     </compensationHandler>

     <invoke name="purchase"
            suppressJoinFailure="no"
            partnerLink="Seller" 
            portType="SP:Purchasing"
            operation="SyncPurchase"
            inputVariable="sendPO"
            outputVariable="getResponse"/>
</scope>


12.5.2: Dead-Path Elimination

CHANGE: ... Suppressing the bpws:joinFailure is equivalent to the fault
being logically caught by a special default handler attached to an
implicit scope that immediately encloses just the activity with the join
condition. ...

TO: ...<-Para-> Suppressing the bpws:joinFailure is equivalent to
surrounding each affected activity with a <scope> activity that defines
an "empty" fault handler for the bpws:joinFailure fault. For example,
the following:

<process suppressJoinFailure="yes" ..>
   <invoke name="invokeA" ... />
</process>

is equivelent to:

<process...>
   <scope name="invokeA"> 
       <faultHandlers>
           <catch faultName="bpws:joinFailure">
                <empty/>
            </catch>
       </faultHandlers>
       <invoke name="invokeA" ... />
   </scope>
</process>
 
CHANGE: Note that the name of the implicit scope (created to suppress
the bpws:joinFailure) that immediately encloses an activity with a join
condition is exactly the same as the name of the activity itself. In
case this is an invoke activity (see Invoking Web Service Operations)
with an inlined fault or compensation handler, the implicit scope for
the fault and compensation handlers is merged with the implicit scope
described here, which adds an additional fault handler for the
bpws:joinFailure.

TO: Note that the name of the scope created to suppress the
bpws:joinFailure fault that immediately encloses an activity with a join
condition is exactly the same as the name of the activity itself. In
case this is an invoke activity (see Invoking Web Service Operations)
with an inlined fault or compensation handler, join failure suppression
is applied to the implied scope of the <invoke> activity; i.e.
effectively two scopes are implied: an outer scope containing an empty
fault handler for the bpws:joinFailure fault and an inner scope
containing the links, fault handlers, and compensation handlers of the
original <invoke> activity. Identical rules apply to <scope> activities:
a <scope> with join failure suppression enabled implies an /additional/
surrounding scope. 


--maciej




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