[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: RE: completionHandler example
That doesn't work if you want to do cascading completions aka named completions. -----Original Message----- From: Yaron Y. Goland [mailto:ygoland@bea.com] Sent: Thursday, September 30, 2004 11:17 AM To: Satish Thatte Cc: wsbpeltc Subject: Re: completionHandler example I realize why putting the completion handler logic before the complete doesn't work but why doesn't putting it after the completion handler work? scope variables variable name="MessageTrackerVariable"... sequence scope wrapper flow scope A_end_in_complete_to_wrapper ... scope B_end_in_complete_to_wrapper ... scope C_end_in_complete_to_wrapper ... scope CompletionHandler (Check MessageTrackerVariable and see if any cleanup is needed) Because the exit point of a completed scope is always well defined can't the completion handler logic be placed after the completed scope? Yaron Satish Thatte wrote: > > > 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]