← Prev in month ← Prev in thread

Dead Path Elimination and Join Conditions

From
Danny van der Rijn <>
Date
2005-01-26T17:31:36+00:00
ID
Thread
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?
← Prev in month ← Prev in thread