any

Fonctionne comme 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 true rencontrée dans la liste. Si la liste est vide, cette expression renvoie la valeur false.

La liste des valeurs booléennes est généralement fournie par une fixedlist ou dynamiclist.

Conseil : L'ordre des éléments de la liste ne modifie pas la valeur de cette expression ; en revanche, pour des raisons de performances, vous voudrez peut être structurer une fixedlist de sorte que les valeurs "succeed fast" se trouvent à proximité du haut de la liste et que les valeurs plus coûteuses se trouvent plus proches du bas de la liste.
Remarque : Depuis Cúram V6, CER ne produit plus de rapports d'erreurs dans les expressions enfant lorsque l'erreur n'affecte pas le résultat global.

Par exemple, si une liste fixe de trois attributs booléens possède ces valeurs :

  • false ;
  • <erreur lors du calcul> ; et
  • vrai

le calcul de la valeur any renvoie une valeur true, car au moins l'un des éléments l'est (le troisième de la liste), indépendamment du deuxième élément qui renvoie une erreur.

A l'opposé, si une autre liste fixe des trois attributs booléens possède ces valeurs :

  • false ;
  • <erreur lors du calcul> ; et
  • false

le calcul de la valeur any pour ces valeurs renvoie l'erreur rapportée par le deuxième élément de la liste, car cette erreur empêcher de déterminer si les éléments possèdent la valeur true.

<?xml version="1.0" encoding="UTF-8"?>
<RuleSet name="Example_any"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:noNamespaceSchemaLocation=
"http://www.curamsoftware.com/CreoleRulesSchema.xsd">
  <Class name="Person">

    <Attribute name="qualifiesForFreeTravelPass">
      <type>
        <javaclass name="Boolean"/>
      </type>
      <derivation>
        <!-- Exemple d'opération <any> sur une liste <fixedlist> -->
        <!-- Pour être éligible à un pass de trajets gratuits, la personne
             doit être agée, non voyante ou handicapée -->
        <any>
          <fixedlist>
            <listof>
              <javaclass name="Boolean"/>
            </listof>
            <members>
              <!-- Nous savons que la plupart des personnes de notre
                   base de données sont des personnes âgées. Par conséquent, nous
                   commençons par tester cette condition.

                   Si la valeur isBlind n'est pas
                   spécifiée pour une personne et que cette personne
                   est handicapée, <any> renvoie la valeur false ;
                   dans le cas contraire, elle renvoie une erreur indiquant
                   que la valeur isBlind n'a pas été spécifiée.
                   -->

              <compare comparison="&gt;=">
                <reference attribute="age"/>
                <Number value="65"/>
              </compare>
              <reference attribute="isBlind"/>
              <reference attribute="isDisabled"/>
            </members>
          </fixedlist>
        </any>
      </derivation>
    </Attribute>

    <Attribute name="qualifiesForChildBenefit">
      <type>
        <javaclass name="Boolean"/>
      </type>
      <derivation>
        <!-- Exemple d'opération <any> sur une liste <dynamiclist>.

             Si l'âge d'un enfant ne peut pas être
             calculé et qu'il y a au moins un enfant de moins de 16 ans,
             <any> renvoie la valeur true ; dans le cas contraire, elle
             renvoie une erreur indiquant pourquoi l'âge de l'enfant n'a pas pu
             être calculé.

          -->
        <!-- Pour être éligible à la prestation pour enfants, cette personne doit
             avoir un ou plusieurs enfants de moins de 16 ans. -->
        <any>
          <dynamiclist>
            <list>
              <reference attribute="children"/>
            </list>
            <listitemexpression>
              <compare comparison="&lt;">
                <reference attribute="age">
                  <current/>
                </reference>
                <Number value="16"/>
              </compare>
            </listitemexpression>
          </dynamiclist>
        </any>
      </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="isBlind">
      <type>
        <javaclass name="Boolean"/>
      </type>
      <derivation>
        <specified/>
      </derivation>
    </Attribute>

    <Attribute name="isDisabled">
      <type>
        <javaclass name="Boolean"/>
      </type>
      <derivation>
        <specified/>
      </derivation>
    </Attribute>

    <Attribute name="age">
      <type>
        <javaclass name="Number"/>
      </type>
      <derivation>
        <specified/>
      </derivation>
    </Attribute>

  </Class>

</RuleSet>