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: [wsbpel] Issue - R8 - Revised Proposal



Hi all,

Proposal for Vote [take 4]
[Factoring in Dieter's rewording suggestion and Danny's paragraph flow concern by moving some sentences out of the bullet list]

The follow changes applies to in Bullet 4 of Section12.7: (changes are highlighted in GREEN)
============================
  • The compensation handler for an isolated scope does not share the isolation domain of the associated scope. The isolation domain ends and the scope snapshot is created when the normal processing of that isolated scope completes. Afterwards, the compensation handler is installed. If the invoker of the compensation handler (i.e. <compensate> / <compensateScope> activities or implicit invoking FCT-handler of the immediately enclosing scope) is not within an isolation domain, the execution of the compensation handler associated with an isolated scope will be implicitly isolated. Such an implicit isolation domain ends when the execution of such a compensation handler ends. (See scope "FH_P" and scope "Q" in the example below.) If the invoker of the compensation handler is already within an isolation domain and the invoked compensation handler is associated with an isolated scope, such a scope definition is a case of nested isolated scopes and MUST be disallowed by static analysis. (If scope "FH_P" below is isolated, then such a scope definition is disallowed.) (See also [SA00091])

-----------------------------
 <scope name="P">
       <faultHandler>
             <catchAll>
                   <scope name="FH_P">
                         <sequence>
                             ...
                            <compensate />
                             ...
                         </sequence>
                   </scope>
          </catchAll>
    </faultHandler>
    <sequence>
          ...
          <scope name="Q" isolated="true"
>
              <compensateHandler>
                  <sequence name="undoQ_Seq">
                     ...
                  </sequence>
              <compensateHandler>
              <sequence name=doQ_Seq">
                  ...
              </sequence>
          </scope>
          ...
    </sequence>
</scope>

-----------------------------

In the above example, the <compensate/> activity is NOT already within an isolation domain (say assuming scope "P" is the root scope of the process).  The execution of the CH of scope-Q will be isolated automatically. This isolation domain ends when the execution of the CH of scope "Q" ends.

The compensation handler associated with a non-isolated scope actually shares the isolation domain of the invoker of the compensation handler, when the invoker is already within an isolation domain. (See scope "FH_X" in the following examples.) 

-----------------------------
 <scope name="X">
       <faultHandler>
             <catchAll>
                   <scope name="FH_X" isolated="true"
>
                         <sequence>
                             ...
                            <compensate />
                             ...
                         </sequence>
                   </scope>
          </catchAll>
    </faultHandler>
    <sequence>
          ...
          <scope name="Y">
              <compensateHandler>
                  <sequence name="undoY_Seq">
                     ...
                  </sequence>
              <compensateHandler>
              <sequence name=doY_Seq">
              </sequence>
          </scope>
          ...
    </sequence>
</scope>

-----------------------------

In the above example, the <compensate/> activity will invoke the compensationHandler of scope "Y" (which performs sequence "undoY_seq") in the isolation domain of scope "FH_X".

============================




Regards,
Alex Yiu




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