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: completionHandler example


Yaron,
 
During the F2F you asked for a completionHandler example.  Here is my try with some explanations.  Please let me know if this makes sense to you.
 
Satish
 

The completionHandler is the common process logic required at all points of premature completion within a scope.  The only difference between copying it just before each occurrence of a <complete/> activity thus

 

<sequence>

    <completionHandler logic>

    <complete/>

</sequence>

 

and the proposed completionHandler feature is that the completionHandler logic executes *after* termination of all activities in the prematurely completed scope.  Thus it is a pure macro if the prematurely completed scope does not contain concurrent activities.  Many examples of the use of premature completion, e.g., completion of N out of M activities in a flow, do involve concurrency.  Consider a case where M suppliers had been contacted concurrently and the process was waiting for asynchronous responses (forgive the use of the word :-)) from them.  After at least N of them send responses the scope completes.  Suppose the conversation with each supplier is wrapped in a scope and a terminationHandler is used to inform a supplier whose conversation was forcibly terminated that their response is not needed.  But perhaps we did not or could not ensure that *exactly* N replies arrive because the race was too tricky to control.  Thus it is possible that more than N responses arrived.  The completion handler could detect this situation, pick the N we really want and inform the rest that their responses have been rejected so that we exit the scope cleanly with exactly N accepted responses.



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