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]].