Crée une liste en évaluant une expression sur chaque élément d'une liste existante.
La nouvelle liste aura une entrée correspondante pour chaque entrée de la liste existante, avec l'organisation conservée.
Une expression dynamiclist indique ce qui suit :
Liste existante ; et
Expression à évaluer sur chaque élément de la liste existante.
Un élément dynamiclist peut être utilisé lorsque le nombre d'éléments de la liste souhaitée n'est pas connu au mo ment de la conception (par ex., il peut différer entre deux exécutions, selon la valeur des autres attributs). Si le nombre d'éléments est fixe (par exemple, non connu au moment de la conception), pensez à utiliser plutôt fixedlist.
<?xml version="1.0" encoding="UTF-8"?> <RuleSet name="Example_dynamiclist" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation= "http://www.curamsoftware.com/CreoleRulesSchema.xsd"> <Class name="Person"> <Attribute name="age"> <type> <javaclass name="Number"/> </type> <derivation> <specified/> </derivation> </Attribute> <Attribute name="isDisabled"> <type> <javaclass name="Boolean"/> </type> <derivation> <specified/> </derivation> </Attribute> <Attribute name="totalIncome"> <type> <javaclass name="Number"/> </type> <derivation> <specified/> </derivation> </Attribute> <Attribute name="pets"> <type> <javaclass name="List"> <ruleclass name="Pet"/> </javaclass> </type> <derivation> <specified/> </derivation> </Attribute> </Class> <Class name="Pet"> <Initialization> <Attribute name="name"> <type> <javaclass name="String"/> </type> </Attribute> </Initialization> </Class> <Class name="Household"> <Attribute name="members"> <type> <javaclass name="List"> <ruleclass name="Person"/> </javaclass> </type> <derivation> <specified/> </derivation> </Attribute> <Attribute name="containsDisabledPerson"> <type> <javaclass name="Boolean"/> </type> <derivation> <any> <!-- Permet d'obtenir une liste de booléens, correspondant à l'attribut isDisabled sur chaque membre de ce ménage --> <dynamiclist> <list> <reference attribute="members"/> </list> <listitemexpression> <reference attribute="isDisabled"> <current/> </reference> </listitemexpression> </dynamiclist> </any> </derivation> </Attribute> <Attribute name="totalIncomeOfAdultMembers"> <type> <javaclass name="Number"/> </type> <derivation> <sum> <dynamiclist> <list> <!-- Filtrage des membres sur les adultes uniquement --> <filter> <list> <reference attribute="members"/> </list> <listitemexpression> <compare comparison=">="> <reference attribute="age"> <current/> </reference> <Number value="18"/> </compare> </listitemexpression> </filter> </list> <listitemexpression> <reference attribute="totalIncome"> <current/> </reference> </listitemexpression> </dynamiclist> </sum> </derivation> </Attribute> <Attribute name="memberAges"> <type> <javaclass name="List"> <javaclass name="Number"/> </javaclass> </type> <derivation> <dynamiclist> <list> <reference attribute="members"/> </list> <listitemexpression> <reference attribute="age"> <current/> </reference> </listitemexpression> </dynamiclist> </derivation> </Attribute> <Attribute name="youngestAge"> <type> <javaclass name="Number"/> </type> <derivation> <min> <reference attribute="memberAges"/> </min> </derivation> </Attribute> <!-- Obtention de tous les animaux du ménage, en regroupant la liste d'animaux de chaque personne --> <Attribute name="allPets"> <type> <javaclass name="List"> <ruleclass name="Pet"/> </javaclass> </type> <derivation> <joinlists> <!-- liste de listes d'animaux, une liste par membre du ménage --> <dynamiclist> <list> <reference attribute="members"/> </list> <listitemexpression> <reference attribute="pets"> <current/> </reference> </listitemexpression> </dynamiclist> </joinlists> </derivation> </Attribute> </Class> </RuleSet>