Condition dans une boucle Fast Path

Lorsqu'une condition est définie dans une boucle Fast Path, le comportement est identique à celui observé lorsqu'un critère est utilisé sur la boucle au lieu d'imbriquer une condition, avec l'exception suivante : si la condition devient true, la page contenue dans la condition ne peut pas être affichée car la boucle ne possède pas de nouvelle itération à afficher et sera par conséquent ignorée. Si la condition devient false, la page et les données associées ne seront pas supprimées car la condition n'est pas réévaluée. Il est par conséquent recommandé d'utiliser un critère sur la boucle au lieu d'une condition.

Figure 1. Exemple de code de condition dans une boucle Fast Path
...
<loop loop-type="for-each" entity="Person"
  fast-path="true">
  <condition expression="Person.hasIncome==true">
    <loop loop-type="while" loop-expression="hasMoreIncome"
      entity="Income">
      <question-page id="IncomePage" entity="Income"
        show-person-tabs="true">
        <title id="IncomePage.Title">
          <![CDATA[Détails des revenus]]>
        </title>
        <cluster>
          <title id="IncomeDetails.Title">
            <![CDATA[Détails des revenus]]>
          </title>
          <question id="type">
            <label id="Type.Label">
              <![CDATA[Type :]]>
            </label>
          </question>
          <question id="amount">
            <label id="Amount.Label">
              <![CDATA[Montant :]]>
            </label>
          </question>
          <question id="hasMoreIncome"
            control-question="true"
            control-question-type="IEG_BOOLEAN">
            <label id="ContinueQuestion.Label">
              <![CDATA[%1s a-t-il d'autres revenus ?]]>
              <argument id="Person.firstName" />
            </label>
          </question>
        </cluster>
      </question-page>
    </loop>
  </condition>
</loop>