Fonctionne sur une liste de valeurs booléennes pour déterminer si toutes les valeurs de liste sont définies sur true.
Le calcul s'arrête à la première valeur faux rencontrée dans la liste. Si la liste est vide, cette expression retourne la valeur vrai.
La liste des valeurs booléennes est généralement fournie par une liste fixedlist ou une dynamiclist.
Par exemple, si une liste fixe de trois attributs booléens possède ces valeurs :
le calcul de la valeur all pour ces valeurs est false, car au moins l'un des éléments l'est (le troisième dans la liste), indépendamment du deuxième élément qui retourne une erreur.
A l'opposé, si une autre liste fixe des trois attributs booléens possède ces valeurs :
le calcul de la valeur all pour ces valeurs renvoie une erreur signalée par le deuxième élément de la liste, car cette erreur empêche de déterminer si tous les éléments possèdent la valeur true.
<?xml version="1.0" encoding="UTF-8"?> <RuleSet name="Example_all" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation= "http://www.curamsoftware.com/CreoleRulesSchema.xsd"> <Class name="Person"> <Attribute name="isLoneParent"> <type> <javaclass name="Boolean"/> </type> <derivation> <!-- Exemple d'opération <all> sur <fixedlist> --> <!-- Pour être considéré "parent isolé", une personne doit être à la fois non mariée et avoir au moins un enfant --> <all> <fixedlist> <listof> <javaclass name="Boolean"/> </listof> <members> <!-- Nous savons que la plupart des personnes de notre base de données sont mariées. Nous testons d'abord cette condition. Si la valeur isMarried n'est pas spécifiée pour une personne et que cette personne n'a pas d'enfants, la valeur <all> est définie sur false ; dans le cas contraire, elle renvoie une erreur indiquant que la valeur isMarried n'a pas été spécifiée. --> <not> <reference attribute="isMarried"/> </not> <not> <property name="isEmpty"> <object> <reference attribute="children"/> </object> </property> </not> </members> </fixedlist> </all> </derivation> </Attribute> <Attribute name="hasNoYoungChildren"> <type> <javaclass name="Boolean"/> </type> <derivation> <!-- Exemple d'opération <all> sur une liste <dynamiclist>. Si l'âge d'un enfant ne peut pas être calculé et qu'il y a u moins un enfant de moins de 5 ans, la valeur <all> est définie sur false ; dans le cas contraire, elle renvoie une erreur en indiquant pourquoi l'âge de l'enfant n'a pas pu être calculé. --> <!-- Vérifier que les enfants ont tous plus de 5 ans --> <all> <dynamiclist> <list> <reference attribute="children"/> </list> <listitemexpression> <compare comparison=">"> <reference attribute="age"> <current/> </reference> <Number value="5"/> </compare> </listitemexpression> </dynamiclist> </all> </derivation> </Attribute> <!-- Enfants de cette personne - chaque enfant est aussi une personne ! --> <Attribute name="children"> <type> <javaclass name="List"> <ruleclass name="Person"/> </javaclass> </type> <derivation> <specified/> </derivation> </Attribute> <Attribute name="isMarried"> <type> <javaclass name="Boolean"/> </type> <derivation> <specified/> </derivation> </Attribute> <Attribute name="age"> <type> <javaclass name="Number"/> </type> <derivation> <specified/> </derivation> </Attribute> </Class> </RuleSet>