Submitted by Andreas Schonberger for consideration.
[Editorial note: Topic concerns the rigor of our classification of
states. Both “gateways” and completion states (and start states)
were regarded as “pseudo states” The attempt was made to make BTAs
or CAs or CBTAs the “real” states between links. So a decision is
not really needed for a BTA that simply “goes to” success or
failure; condition expressions on the FromLinks for the completion states can
indicate the BTA and expression under which the transition is taken. Yet we
left an example in that exhibits the early, less strict semantics of allowing
transitions to pseudo states.]
Linking to end states, in particular
from within Decision elements
Decision element and ToLink, in particular link to end state
The ebBP standard states (on page 62/66):
<Success name="Success"
nameID="D2JSK99AK"/>
<Failure name="Failure" nameID="DK9726AJ"/>
<Decision>
<FromLink fromBusinessStateRef=" IDPO3DA1"/>
<ToLink toBusinessStateRef=" D2JSK99AK">
<ConditionExpression expressionLanguage="ConditionGuardValue"
expression="Success"/>
</ToLink>
<ToLink toBusinessStateRef="DK9726AJ">
<ConditionExpression expressionLanguage="ConditionGuardValue"
expression="Failure"/>
</ToLink>
</Decision>
== This apparently contradicts the following referential constraint, because
the Decision.ToLink elements may not reference Success/Failure (page 87):
[ToLink/@toBusinessStateRef]
Every @toBusinessStateRef attribute’s value MUST be a value of a @nameID
attribute of either a BusinessTransactionActivity, a CollaborationActivity, or
a ComplexBusinessTransactionActivity.
Each of these elements referred to MUST be in the same Collaboration elements
that the ToLink is in (that is, MUST be siblings with either a BusinessCollaboration,
MultiPartyCollaboration, or BinaryCollaboration parent).
IMHO:
According to the standard the only way to reach Success/Failure seems to be a
FromLink in Success/Failure
that references a TransactionActivity.
- A
<Transition> from an Activity to Success/Failure does not seem to be
possible because of [ToLink/@toBusinessStateRef].
- A
<ToLink> from within Decision/JOIN further does not seem to be possible
because of the xsd-documentation of CompletionType:
<xsd:documentation>The type related to the Success for Failure completion
of a Business
Collaboration as a transition from an activity.</xsd:documentation>
IMHO:
The standard seems to be somehow contradictory at this point. I think a
CompletionState should not only be reachable directly from a
TransactionActivity but also from a decision, because depending on the
TransactionActivity the result of a collaboration may be a Success or a
Failure.
Also, there are examples in the standard that directly switch from a decision
to a Success/Failure state