any

Opera en una lista de valores booleanos para determinar si cualquiera de los valores de listas es true.

El cálculo se detiene en el primer valor true que se encuentra en la lista. Si la lista está vacía, esta expresión devuelve false.

La lista de valores booleanos la proporciona normalmente proporcionado por una fixedlist o dynamiclist.

Consejo: El orden de los elementos de la lista no cambia nada en el valor de esta expresión; sin embargo, por razones de rendimiento, es posible que desee estructurar una fixedlist para que los valores "succeed fast" estén más cerca de la parte superior de la lista y los valores que pueden ser difíciles de calcular estén más cerca de la parte inferior de la lista.
Nota: Desde Cúram V6, CER ya no informa de errores en expresiones hijo en situaciones donde el error no afecta al resultado general.

Por ejemplo, si una lista fija de tres atributos booleanos tienen estos valores:

  • false;
  • <error durante el cálculo> y
  • true

el cálculo del valor de cualquiera any de estos valores devolverá true, porque como mínimo uno de los elementos es verdadero (true) (concretamente el tercero de la lista), independientemente de que el segundo elemento devuelva un error.

Por el contrario, si otra lista fija de tres atributos booleanos tiene estos valores:

  • false;
  • <error durante el cálculo> y
  • false

el cálculo del valor de any para estos valores devolverá el error indicado por el segundo elemento de la lista, porque este error impide determinar si cualquier elemento tiene el valor 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>
        <!-- Ejemplo de <any> operando en una <fixedlist> -->
        <!-- Para tener derecho a un billete gratuito, la persona
             debe ser de la tercera edad, estar ciega o discapacitada -->
        <any>
          <fixedlist>
            <listof>
              <javaclass name="Boolean"/>
            </listof>
            <members>
              <!-- Sabemos que la mayoría de la gente de nuestra
                   base de datos son ciudadanos de la tercera edad, de modo que probamos
                   primero esta condición.

                   Si lo que sucede es que el valor isBlind no se ha
                   especificado para una persona, si esa persona es
                   discapacitada, <any> devolverá false;
                   de lo contrario devolverá un error indicando que
                   el valor de isBlind no se ha especificado.
                   -->

              <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>
        <!-- Ejemplo de <any> operando en una <dynamiclist>.

             Si lo que sucede es que la edad de un hijo no se puede
             calcular y hay al menos un hijo de menos de 16,
             <any> devolverá true; de lo contrario,
             devolverá el error que muestra por qué no se ha podido
             calcular la edad del hijo.

          -->
        <!-- Para tener derecho a la prestación por hijos, esta persona debe
             tener uno o más hijos de menos de 16 años de edad. -->
        <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>

    <!-- Los hijos de esta persona: cada hijo también es una persona.
 -->
    <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>