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


But Satish, that is exactly what my example does. Could you please be 
more specific in identifying the point of failure?
	Thanks,
		Yaron

Satish Thatte wrote:
> 
> 
> 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]