[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Dead Path Elimination and Join Conditions
This is a question dealing
with a pathological condition that the spec
allows that I think we should disallow. I wanted to get some opinions
before I raised it as a bug. Currently, it is legal to have a
joinCondition which negates dead-path elimination. The simplest way to
do this is to have an activity with one incoming link and whose
joinCondition is not($incoming).
A more detailed expression of this follows. Apologies if the syntax
isn't quite right.
<flow suppressJoinFailure="yes"> <links> <link name="first2second"/> <link name="second2third"/> </links> <someActivityname="first"> <sources> <source linkName="first2second"> <transitionCondition> false </transitionCondition> </sources> </someActivity> <someActivityname="second"> <sources> <source linkName="second2third"> </sources> <targets> <target linkName="first2second"/> </targets> </someActivity> <someActivityname="third"> <targets> <joinCondition> not(getLinkStatus("second2third")) </joinCondition> <target linkName="second2third"/> </targets> </someActivity> </flow> A flow from first to second to third. The transition from "first" to "second" has some condition. If it is false, "second" will not evaluate. Yet according to my reading of the spec this merely sets the link status of "second2third" to false, which in turn causes "third" to execute. This is in contradiction with my understanding of dead-path elimination. I would prefer to disallow joinConditions whose expression does not require a true input in order that the join condition evaluate to true. Comments? |
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]