any

Dieser Ausdruck ermittelt für eine Liste von booleschen Werten, ob einer der Listenwerte true lautet.

Die Berechnung wird beim ersten in der Liste gefundenen Wert true gestoppt. Falls die Liste leer ist, gibt dieser Ausdruck das Ergebnis false zurück.

Die Liste der booleschen Werte wird normalerweise durch einen Ausdruck "fixedlist" (siehe fixedlist) oder "dynamiclist" (siehe dynamiclist) bereitgestellt.

Tipp: Die Reihenfolge der Einträge in dieser Liste hat keinen Einfluss auf den Wert dieses Ausdrucks. Im Hinblick auf das Leistungsverhalten kann es jedoch sinnvoll sein, einen Ausdruck "fixedlist" (siehe fixedlist) so zu strukturieren, dass sich schnell als zutreffend herausstellende Werte eher am Anfang der Liste und alle Werte, deren Berechnung möglicherweise aufwendiger ist, eher am Ende der Liste angegeben sind.
Anmerkung: Seit Cúram Version 6 meldet CER Fehler in untergeordneten Ausdrücken nicht mehr, wenn sich ein Fehler nicht auf das Gesamtergebnis auswirkt.

Beispiel: Eine feste Liste von drei booleschen Attributen enthält die folgenden Werte:

  • false
  • <fehler_während_berechnung>
  • true

Die Berechnung des Wertes von any für diese Werte gibt das Ergebnis true zurück, weil mindestens einer der Einträge "true" lautet (nämlich der dritte Eintrag in der Liste). Dies ist unabhängig davon, dass der zweite Eintrag einen Fehler zurückgibt.

Beispiel: Eine andere feste Liste von drei booleschen Attributen enthält hingegen die folgenden Werte:

  • false
  • <fehler_während_berechnung>
  • false

Die Berechnung des Wertes von any für diese Werte gibt den vom zweiten Eintrag in der Liste gemeldeten Fehler zurück, da dieser Fehler die Feststellung verhindert, ob einer der Einträge den Wert true aufweist.

<?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>
        <!-- Example of <any> operating on a <fixedlist> -->
        <!-- To qualify for a free travel pass, the person
             must be aged, blind or disabled -->
        <any>
          <fixedlist>
            <listof>
              <javaclass name="Boolean"/>
            </listof>
            <members>
              <!-- We happen to know that most people on our
                   database are senior citizens, so we test
                   this condition first.

                   If it so happens that the isBlind value is not
                   specified for a Person, then if that Person is
                   disabled then the <any> will return false;
                   otherwise it will return an error indicating that
                   the value of isBlind was not specified.
                   -->

              <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>
        <!-- Example of <any> operating on a <dynamiclist>.

             If it so happens that one child's age cannot be
             calculated, and there is at least one child under 16,
             then the <any> will return true; otherwise, it
             will return the error showing why the child's age could
             not be calculated.

          -->
        <!-- To qualify for child benefit, this person must
             have one or more children aged under 16. -->
        <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>

    <!-- The children of this person - each child is a person too!
 -->
    <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>