I find the
idea interesting. In fact, I was discussing the completion condition
issue with Dieter Koenig during the last f2f meeting and his suggestion
was also to try to resolve this issue using links. And we identified
that several changes need to be done, including removing restriction
for jonCondition, that "the join condition is evaluated as soon as all
incoming links of the activity are determined" - so definitely
"immediate" semantics needs to be introduced.
I have the
following comments on your proposal.
1. In your
proposal you are using a fault (bpws:forcedTermination) to terminate
all active parallel branches. But this changes the outcome of the flow
activity. It will always end abnormally and compensation handler (if it
is defined) will never be installed. Although completion condition has
evaluated to true and needed activities have completed the enclosing
flow activity will end abnormally. Is this really intended semantics?
proposal does not address some pain points. For example, in case of "N
out of M", N<M there many possible "variations":
enclosed activity may experience problems but the <flow> activity
(B) One of
enclosed activities may experience a severe error, which may have
impact on the <flow> activity
is what to do with running activities? In the
latter case, reasonable behavior would be: if one enclosed activity
does not succeed other running activities should be cancelled and the
flow activity should try to recover. In the
former case, we should allow active parallel activities to complete
their work. This is not supported in your proposal.