Ausdrücke für Sammlungsvariablen unterstützen

Die für die Auswertung von Ausdrücken übergebenen Variablen können wiederholend oder nicht wiederholend sein. Bei wiederholenden Variablen wird der Ausdruck einmal für jede Instanz der Variablen ausgewertet. Die Ergebnisse des Ausdrucks werden als Sammlung zurückgegeben. Die Wiederholung von Eingabevariablen ist auf mehreren Ebenen möglich: So kann z. B. eine Eingabevariable eine Liste von Strings und eine andere eine Liste von String-Listen sein. Um mit den unterschiedlichen Hierarchieebenen arbeiten zu können, fasst Expression Manager diese Sammlungsvariablen zu einem zweidimensionalen Array zusammen, in dessen Zeilen die für die Auswertung des Ausdrucks benötigten Parameter angegeben werden. Der Ausdruck wird für jede Zeile ausgewertet und das Ergebnis wird entsprechend der Hierarchie der Eingabevariablen geordnet.

Alle Sammlungsvariablen, die zur Auswertung des Ausdrucks verwendet werden, sind Bestandteil derselben Hierarchie. Bei der Analyse eines Pfads vom Stammelement bis zur Sammlungsvariablen auf unterster Ebene befinden sich alle Sammlungsvariablen innerhalb dieses Pfads. Bei Variablen, die sich nicht wiederholen, gilt keine solche Einschränkung. Wenn eine Instanz der Eingabevariablen „null“ ist, nimmt das Ergebnis für diese Instanz den Wert „null“ an. Für andere Instanzen wird der Ausdruck normal ausgewertet. Auf jeder gegebenen Ebene und bei jedem gegebenen Index enthalten alle Variablen dieselbe Anzahl von Elementen. Wenn eine Variable auf einer bestimmten Ebene keine Elemente enthält, wird diese Variable für die betreffende Ebene nicht verglichen.

Beispiel

Das folgende Schema stellt einen Kunden und ein Konto dar:

bank 
    *customer 
        age 
        *account 
            baseInterestRate 
            actualInterestRate

In diesem Beispiel sind die Bank, der Kunde und das Konto zusammengesetzte Elemente. Kunde und Konto sind Elemente, die sich wiederholen. Das Alter ist vom Typ „int“, „baseInterestRate“ und „actualInterestRate“ sind vom Typ „float“. Die Bank kann viele Kunden und jeder Kunde kann mehrere Konten haben. Zu jedem Konto gehören ein Basiszinssatz und ein effektiver Zinssatz. Der effektive Zinssatz ist ein berechnetes Element, das vom Basiszinssatz und vom Alter des Kunden abhängig ist. Angenommen, für „actualInterestRate“ gilt der Ausdruck baseInterestRate + (age >= 60 ? 0.5:0.0). Zur Laufzeit werden die folgenden Werte für „age“ und „baseInterestRate“ für Expression Manager bereitgestellt:

age: [20, 61] 
baseInterestRate: [[7, 8][7.5, 8, 8.5]]

Diese Variablen werden zusammengefasst und das folgende zweidimensionale Array wird erstellt:

20 7 
20 8 
61 7.5 
61 8 
61 8.5

Die Elemente für das Alter werden so oft wiederholt, wie Elemente für „baseInterestRate“ vorhanden sind. Der Ausdruck wird für jede dieser Zeilen ausgewertet. Nachdem die Ausdrücke ausgewertet wurden, werden die Ergebnisse entsprechend der Hierarchie für die Eingabevariable „baseInterestRate“ geordnet. Hierfür wird die Variable mit der höchsten Anzahl von Wiederholungsebenen verwendet, da der Ausdruck sich immer auf die unterste Ebene bezieht und tiefer liegende Variablen in der Hierarchie nicht verwendet werden. Die API gibt das folgende Ergebnis zurück: [[7, 8], [8, 8,5, 9]].