Re: Coordinated Choreographies Proposal 4 - Finalize Activity

General comments, based on my current understanding which may be wrong - so 
please correct me if I have misunderstood the approach:

1) In the current CDL spec, the finalizer is automatically invoked when an 
exception occurs within the parent choreography. Minor note: I don't believe 
that the order in which the exception handler and finalizer are invoked is 
defined, but this apparently will be resolved in the rewrite of the choreo 
lifeline section.

I am assuming that this automatic invocation of finalizer would no longer be 
supported under your proposal - a finalizer will only be invoked if an 
explicit 'finalize' activity is placed in the parent choreography? If this 
is not the case, then I don't believe the proposal discusses in which 
situations the finalizer would be called automatically, and this would be 
ambiguious in cases where multiple finalizers had been defined.

2) If a coordinated choreography is specified, does this mean that it takes 
responsibility for invoking the 'confirm' or 'cancel' finalizers? and 
therefore it would be invalid for the parent choreography to attempt to 
invoke these finalizers?

3) Not sure that the 'confirm' and 'cancel' finalizers have the same 
semantics as any other finalizer. The 'cancel' finalizer does rollback work, 
but it would be triggered prior to the completion of the child choreography 
(due to the coordination protocol), not as a result of an exception in the 
parent choreo. The 'confirm' finalizer has completely different semantics - 
it represents a commit essentially, and therefore does not undo/rollback 
work - plus in the same way as the cancel, it is not triggered by an 
exception in the parent choreo.

Possibly this is a case of trying to reuse existing concepts to simplify the 
language, but it may be overloading the finalize concept too much.


Related note: After studying the Choreology proposals and looking into the 
exception handling and finalizer mechanisms in more detail recently, I think 
the naming of the 'finalizer' leads to confusion in relationship to the 
commonly understood semantics of a Java 'finally' block in relation to java 
exception handling (i.e. the closeness of the terms tends to implies that 
the work inside the finalizer block will be performed regardless of whether 
the choreo completes normally or with an exception). Possibly it should be 
renamed 'compensation'?


Regards
Gary

Received on Wednesday, 3 November 2004 12:03:02 UTC