Prise en charge des expressions pour les variables de collection

Les variables d’entrée transmises pour évaluation peuvent être répétitives ou non. Pour les variables répétitives, l’expression est évaluée une fois par instance de variable. Les résultats d’expression sont renvoyés sous forme de collection. Les variables d’entrée peuvent être répétées à différents niveaux, par exemple l’une des variables d’entrée peut être une liste de chaînes et l’autre peut correspondre à une liste de listes de chaînes. Pour la gestion des différences dans la hiérarchie de collection, le gestionnaire d’expression aplatit ces variables de collection en tableau bidimensionnel où chaque ligne représente les paramètres d’entrée requis pour évaluer l’expression. L’expression est évaluée sur chaque ligne et le résultat est organisé selon la hiérarchie des variables d’entrée.

Toutes les variables de collection utilisées pour l’évaluation de l’expression font partie d’une seule hiérarchie. Lorsque vous examinez un chemin d’accès depuis l’élément racine à la variable de collection la plus profonde, toutes les variables de collection figurent sur ce chemin d’accès. Pour les variables non répétées, il n’existe aucune restriction de ce type. Si l’une des instances de variable d’entrée est nulle, le résultat est défini sur null pour cette instance. L’évaluation de l’expression pour les autres instances est effectuée normalement. A tout niveau et index donné, toutes les variables contiennent le même nombre d’éléments. Si une variable ne contient aucun élément à un certain niveau, elle n’est pas comparée pour ce niveau.

Exemple

Le schéma suivant représente un client et un compte :

bank 
    *customer 
        age 
        *account 
            baseInterestRate 
            actualInterestRate

Dans cet exemple, la banque, le client et le compte sont des éléments composites. Le client et le compte sont des éléments répétés. L’âge est de type int et baseInterestRate et actualInterestRate sont de type float. La banque peut présenter un grand nombre de clients et chaque client peut disposer de plusieurs comptes. Chaque compte a un taux d’intérêt de base et un taux d’intérêt réel. Le taux d’intérêt réel est un élément calculé qui dépend du taux d’intérêt de base et de l’âge du client. Supposons que l’expression pour actualInterestRate est baseInterestRate + (age >= 60 ? 0.5:0.0). Lors de l’exécution, le gestionnaire d’expression reçoit les valeurs suivantes pour age et baseInterestRate :

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

Après l’aplatissement de ces variables, le tableau bidimensionnel suivant est créé :

20 7 
20 8 
61 7.5 
61 8 
61 8.5

Les éléments d’âge sont répétés plusieurs fois selon le nombre d’éléments contenus dans baseInterestRate. L’expression est évaluée pour chacune de ces lignes. Après l’évaluation des expressions, les résultats sont organisés dans la même hiérarchie que la variable d’entrée baseInterestRate. La variable avec le plus grand nombre de niveaux répétés est prise en considération, car l’expression est toujours située au niveau le plus profond et n’utilise pas de variables plus basses dans la hiérarchie. L’API renvoie le résultat sous la forme [[7, 8][8, 8.5, 9]].