Die For-Each-Schleife

Dies ist die einfachste Form einer Schleife, da sie sich immer gleich verhält. Beim Hinzufügen einer For-Each-Schleife zu Ihrem Script müssen Sie eine Entität im Datenspeicher angeben, die für die Schleife verwendet wird. Wenn das System die Schleife ermittelt, werden alle Instanzen dieser Entität innerhalb ihrer übergeordneten Entität abgerufen und eine Iteration der Schleife (die jede Seite in der Schleife darstellt) für jede zurückgegebene Instanz durchgeführt. Zum Beispiel kann die folgende Schleife verwendet werden, um "ExtraPersonDetailsPage" für jede Person in dieser Anwendung (der Stammentität im vorherigen Beispiel) anzuzeigen:

Abbildung 1. For-Each-Schleife
<loop loop-type="for-each" entity="Person">
  <question-page id="ExtraPersonDetailsPage">
    ...        
  </question-page>
</loop>

Wahrscheinlich möchten Sie nicht alle Instanzen einer Entität in einer Schleife durchlaufen. In diesem Fall können Sie ein Kriterium hinzufügen, mit dem das System nur die Instanzen der Entität auswählt, die dieses Kriterium erfüllen. Um beispielsweise die Personen in einer Schleife zu durchlaufen, für die das Attribut "hasIncome" auf "true" festgelegt wurde, verwenden Sie die folgende Schleife:

Abbildung 2. For-Each-Schleife mit Kriterium
<loop loop-type="for-each" entity="Person" 
criteria="hasIncome==true"> 
  <question-page id="IncomeDetailsPage" entity="Income"> 
    ...       
  </question-page>
</loop>

Wenn ein Kriterium in einer For-Each-Schleife verwendet wird, wird empfohlen, dass das Kriterium einen einfachen Ausdruck enthält, der nur auf ein einzelnes Attribut mit einem booleschen Typ (z. B. "hasIncome==true") verweist. Wenn ein einzelnes Attribut auf das Kriterium verwiesen wird, kann das Attribut automatisch von IEG aktualisiert werden, wenn Zusammenfassungslinks verwendet werden. (Beispielsweise wenn alle verschachtelten Entitäten entfernt werden, kann das Attribut auf "false" festgelegt werden, oder wenn die erste verschachtelte Entität hinzugefügt wird, kann das Attribut auf "true" festgelegt werden.) Diese Funktion ist nicht verfügbar, wenn die Kriterien einen komplexen Ausdruck enthalten. Es wird außerdem empfohlen, dass ein Standardwert im Datenspeicherschema für dieses Attribut definiert wird.