readall

Recupera todas las instancias de objeto de regla externa de una clase de regla (es decir, los creados por el código de cliente). Las instancias de objeto de regla interna (es decir, los creados a partir de reglas) no se recuperan.

Consulte Objetos de regla externa e interna para obtener más detalles sobre la creación de objetos de regla.

Desde Cúram V6, se puede utilizar readall para recuperar instancias de una clase de regla de un conjunto de reglas diferente, estableciendo el valor del atributo XML ruleset opcional.

Desde Cúram V6, la expresión readall soporta un elemento match opcional que hace que la expresión readall sólo recupere objetos de regla cuyo valor para un atributo determinado coincide con el de los criterios de búsqueda.

Importante: Antes de Curam V6, una manera de recuperar objetos de regla que coincidan con un criterio consistía en envolver un readall en una expresión filter.

Sin embargo, en el caso de las sesiones de CER que utilizan un DatabaseDataStorage (consulte Sesiones de CER), en general será más efectivo utilizar la sintaxis readall / match presentada en Cúram V6. La nueva sintaxis funcionará mejor:

  • cuando el atributo que contiene la expresión readall se calcule primero y
  • cuando CER y el Gestor de dependencia identifiquen que el atributo que contiene la expresión readall está anticuado y es necesario volver a calcularlo (consulte Gestor de dependencias).

En situaciones en las que los objetos de regla deben coincidir en más de un criterio, debe utilizar la sintaxis readall / match para que coincida en el atributo más selectivo y, a continuación, envolver los resultados en un filter para filtrar adicionalmente por los demás criterios.

Consejo: Si sólo espera que haya una única instancia de la clase de regla (quizá después del filtrado o la coincidencia), tenga en cuenta la posibilidad de envolver la expresión en una expresión singleitem.
<?xml version="1.0" encoding="UTF-8"?>
<RuleSet name="Example_readall"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:noNamespaceSchemaLocation=
"http://www.curamsoftware.com/CreoleRulesSchema.xsd">
  <Class name="Person">

    <Attribute name="socialSecurityNumber">
      <type>
        <javaclass name="String"/>
      </type>
      <derivation>
        <specified/>
      </derivation>
    </Attribute>

    <!--
    Recuperar la única reclamación que se tendrá que haber utilizado para
    iniciar la sesión
    -->

    <Attribute name="claim">
      <type>
        <ruleclass name="Claim"/>
      </type>
      <derivation>
        <singleitem onEmpty="error" onMultiple="error">
          <readall ruleclass="Claim"/>
        </singleitem>
      </derivation>
    </Attribute>


    <!--
    Recuperar los objetos de regla de prestación para esta persona (creados a partir del
    código de cliente, probablemente consultando el almacenamiento externo).

    Esta implementación utiliza un <readall> con un <match> anidado para
    recuperar sólo los objetos de regla coincidentes y (en función del
    almacenamiento de datos) será más efectiva que la
    implementación de "benefitsFilterReadall" que se muestra a continuación.
    -->

    <Attribute name="benefitsReadallMatch">
      <type>
        <javaclass name="List">
          <ruleclass name="Benefit"/>
        </javaclass>
      </type>
      <derivation>
        <readall ruleclass="Benefit">
          <match retrievedattribute="socialSecurityNumber">
            <reference attribute="socialSecurityNumber"/>
          </match>
        </readall>
      </derivation>
    </Attribute>


    <!--
    Recupera los mismos objetos de regla que para "benefitsReadallMatch"
    mostrado más arriba, pero (en función del almacenamiento de datos) puede no ser tan efectivo.
    -->
    <Attribute name="benefitsFilterReadall">
      <type>
        <javaclass name="List">
          <ruleclass name="Benefit"/>
        </javaclass>
      </type>
      <derivation>
        <filter>
          <list>
            <!-- recuperar todos los objetos de regla de prestación de
                 almacenamiento externo -->
            <readall ruleclass="Benefit"/>
          </list>
          <listitemexpression>
            <equals>
              <!-- coincidir con los números de la seguridad social en
                el objeto de regla de persona y el objeto de
                regla de prestación -->
              <reference attribute="socialSecurityNumber">
                <current/>
              </reference>
              <reference attribute="socialSecurityNumber"/>
            </equals>
          </listitemexpression>
        </filter>
      </derivation>
    </Attribute>

    <!--
    Recupera las prestaciones de la persona de tipo "IncomeAssistance",
    utilizando un <match> para recuperar todas las prestaciones de la persona y, a continuación,
    un <filter> para extraer sólo las prestaciones de "Ayuda a los ingresos" de
    las prestaciones para dicha persona.

    Esta implementación puede ser adecuada cuando
    socialSecurityNumber sea el atributo más selectivo para una
    prestación en el almacenamiento de datos (es decir, hay muchos objetos de regla
    de prestación, pero cada valor socialSecurityNumber está presente en
    relativamente pocos objetos de regla de prestación).
    -->
    <Attribute name="incomeAssistanceBenefitsMatchSSNFilterType">
      <type>
        <javaclass name="List">
          <ruleclass name="Benefit"/>
        </javaclass>
      </type>
      <derivation>
        <filter>
          <list>
            <!-- recuperar todos los objetos de regla de prestación para la persona
 -->
            <readall ruleclass="Benefit">
              <match retrievedattribute="socialSecurityNumber">
                <reference attribute="socialSecurityNumber"/>
              </match>
            </readall>
          </list>
          <listitemexpression>
            <equals>
              <!-- filtrar los objetos de regla de prestación para la persona
                   sólo hasta los de tipo "Ayuda a los ingresos"
                -->
              <reference attribute="type">
                <current/>
              </reference>
              <Code table="BenefitType">
                <!-- El valor para Ayuda a los ingresos -->
                <String value="BT1"/>
              </Code>
            </equals>
          </listitemexpression>
        </filter>
      </derivation>
    </Attribute>


    <!--
    Recupera las prestaciones de la persona de tipo "IncomeAssistance",
    utilizando una coincidencia (<match>) para recuperar todas las prestaciones de "Ayuda a los ingresos"
    y, a continuación, un filtro (<filter>) para extraer sólo las prestaciones de "Ayuda a
    los ingresos" para esta persona.

    Esta implementación puede ser adecuada cuando el tipo sea el
    atributo más selectivo para una prestación en el almacenamiento de datos (es decir,
    hay pocos objetos de regla de prestación para cada tipo).
    -->
    <Attribute name="incomeAssistanceBenefitsMatchTypeFilterSSN">
      <type>
        <javaclass name="List">
          <ruleclass name="Benefit"/>
        </javaclass>
      </type>
      <derivation>
        <filter>
          <list>
            <!-- recuperar todos los objetos de regla de prestación de tipo "Ayuda a
                 los ingresos" -->
            <readall ruleclass="Benefit">
              <match retrievedattribute="type">
                <Code table="BenefitType">
                  <!-- El valor para Ayuda a los ingresos -->
                  <String value="BT1"/>
                </Code>
              </match>
            </readall>
          </list>
          <listitemexpression>
            <equals>
              <!-- filtrar los objetos de regla de prestación de tipo "Ayuda a
                   los ingresos" hasta los correspondientes a esta persona solamente
                -->
              <reference attribute="socialSecurityNumber">
                <current/>
              </reference>
              <reference attribute="socialSecurityNumber"/>
            </equals>
          </listitemexpression>
        </filter>
      </derivation>
    </Attribute>

    <!--
    Recupera los objetos de regla para prestaciones cuyo importe es mayor
    que 100.

    Dado que "mayor que" no es un predicado de coincidencia exacta,
    se debe utilizar un <filter> (<match> sólo se puede utilizar para un
    criterio de coincidencia exacta).
    -->
    <Attribute name="highPaymentBenefits">
      <type>
        <javaclass name="List">
          <ruleclass name="Benefit"/>
        </javaclass>
      </type>
      <derivation>
        <filter>
          <list>
            <!-- recuperar todos los objetos de regla de prestación para la persona
              -->
            <readall ruleclass="Benefit">
              <match retrievedattribute="socialSecurityNumber">
                <reference attribute="socialSecurityNumber"/>
              </match>
            </readall>
          </list>
          <listitemexpression>
            <!-- filtrar los objetos de regla de prestación para la persona
                 sólo para aquellos de un importe superior a 100 -->
            <compare comparison=">">
              <reference attribute="amount">
                <current/>
              </reference>
              <Number value="100"/>
            </compare>
          </listitemexpression>
        </filter>
      </derivation>
    </Attribute>



  </Class>

  <Class name="Benefit">

    <Attribute name="socialSecurityNumber">
      <type>
        <javaclass name="String"/>
      </type>
      <derivation>
        <specified/>
      </derivation>
    </Attribute>

    <Attribute name="type">
      <type>
        <codetableentry table="BenefitType"/>
      </type>
      <derivation>
        <specified/>
      </derivation>
    </Attribute>

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

  </Class>

  <!--
  Este conjunto de reglas espera que el código que crea la sesión también
  crea una sola instancia de programa de arranque ("bootstrap") de esta
  clase de regla de reclamación.
  -->
  <Class name="Claim">
    <Initialization>
      <Attribute name="claimIdentifier">
        <type>
          <javaclass name="String"/>
        </type>
      </Attribute>
      <Attribute name="claimDate">
        <type>
          <javaclass name="curam.util.type.Date"/>
        </type>
      </Attribute>
    </Initialization>
  </Class>

</RuleSet>