readall

Extrait toutes les instances d'objet de règle d'une classe de règles (par ex., toutes celles crées par le code client). Les instances d'objet de règle interne (par ex., celles créées à partir des règles) ne sont pas extraites.

Voir Objets de règle externes et internes pour plus d'informations sur la création d'objets de règle.

Depuis Cúram V6, l'élément readall peut être utilisé pour extraire les instances d'une classe de règles à partir d'un jeu de règles différent, en définissant la valeur de l'attribut XML ruleset facultatif.

Depuis Cúram V6, l'expression readall prend en charge un élément match facultatif qui limite l'activité de l'expression readall à l'unique extraction des objets de règle dont la valeur d'un attribut particulier correspond à celle incluse dans le critère de recherche.

Important : Avant Cúram V6, un moyen de récupérer des objets de règle qui correspondaient à un critère consistait à encapsuler un élément readall dans une expression filter.

Toutefois, pour les sessions CER qui utilisent DatabaseDataStorage (voir Sessions CER), il est en général plus efficace d'utiliser la syntaxe readall / match introduite dans Cúram V6. La nouvelle syntaxe est plus efficace :

  • lorsque l'attribut contenant l'expression readall est calculée en premier ; et
  • lorsque CER et le gestionnaire de dépendance identifient que l'attribut contenant l'expression readall est dépassée et doit être recalculée (voir Gestionnaire de dépendance).

Dans les situations où les objets de règle doivent correspondre à plusieurs critères, utilisez la syntaxe readall / match pour baser la correspondance sur l'attribut le plus sélectif, puis encapsulez les résultats dans un filter pour filtrer les autres critères.

Conseil : Si vous souhaitez qu'il s'agisse uniquement d'une instance de singleton de la classe de règles (peut-être après filtrage ou correspondance), pensez à encapsuler l'expression dans une expression 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>

    <!--
    Extraction de la seule réclamation qui aura été utilisée pour
    alimenter la session
    -->

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


    <!--
    Extraction des objets de règle de prestation pour cette personne (créés à partir
    du code client, probablement en interrogeant la mémoire externe).

    Cette implémentation utilise une expression <readall> avec un élément <match> imbriqué pour
    extraire uniquement les objets de règle correspondants et (selon le stockage
    des données) sera plus performante que
    l'implémentation "benefitsFilterReadall" ci-dessous.
    -->

    <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>


    <!--
    Extrait les mêmes objets de règle que pour "benefitsReadallMatch"
    ci-dessus, mais (selon le stockage des données) peut ne pas être aussi efficace.
    -->
    <Attribute name="benefitsFilterReadall">
      <type>
        <javaclass name="List">
          <ruleclass name="Benefit"/>
        </javaclass>
      </type>
      <derivation>
        <filter>
          <list>
            <!-- extraction de tous les objets de règles à partir du
                 stockage externe -->
            <readall ruleclass="Benefit"/>
          </list>
          <listitemexpression>
            <equals>
              <!-- correspondance des numéros de sécurité sociale sur
                l'objet de règle de la personne et l'objet de règle
                de la prestation -->
              <reference attribute="socialSecurityNumber">
                <current/>
              </reference>
              <reference attribute="socialSecurityNumber"/>
            </equals>
          </listitemexpression>
        </filter>
      </derivation>
    </Attribute>

    <!--
    Extraits les prestations de la personne de type "IncomeAssistance",
    à l'aide d'un élément <match> pour extraire toutes les prestations de la personne, puis un
    élément <filter> pour extraire uniquement les prestations "Assistance aux revenus" des
    prestations de cette personne.

    Cette implémentation peut être appropriée lorsque
    l'attribut socialSecurityNumber est le plus sélectif pour une
    prestations dans le stockage des données (par ex., il existe de nombreux
    objets de règle de prestations, mais chaque valeur socialSecurityNumber est présente sur
    relativement peu d'objets de règle de prestations).
    -->
    <Attribute name="incomeAssistanceBenefitsMatchSSNFilterType">
      <type>
        <javaclass name="List">
          <ruleclass name="Benefit"/>
        </javaclass>
      </type>
      <derivation>
        <filter>
          <list>
            <!-- Extraction de tous les objets de règle de prestations pour la personne
 -->
            <readall ruleclass="Benefit">
              <match retrievedattribute="socialSecurityNumber">
                <reference attribute="socialSecurityNumber"/>
              </match>
            </readall>
          </list>
          <listitemexpression>
            <equals>
              <!-- filtrage des objets de règle de prestations pour la personne
                   jusqu'à ceux de type "Assistance aux revenus" uniquement
                -->
              <reference attribute="type">
                <current/>
              </reference>
              <Code table="BenefitType">
                <!-- Valeur de l'assistance aux revenus -->
                <String value="BT1"/>
              </Code>
            </equals>
          </listitemexpression>
        </filter>
      </derivation>
    </Attribute>


    <!--
    Extraits les prestations de la personne de type "IncomeAssistance",
    à l'aide d'un élément <match> pour extraire toutes les prestations
    "Assistance aux revenus", puis un élément <filter> pour extraire uniquement les prestations "Assistance
    aux revenus" de cette personne.

    Cette implémentation peut être appropriée lorsque le type est l'attribut
    le plus sélectif dans le stockage de données (par ex., il y a
    peu d'objets de règle de prestations de chaque type).
    -->
    <Attribute name="incomeAssistanceBenefitsMatchTypeFilterSSN">
      <type>
        <javaclass name="List">
          <ruleclass name="Benefit"/>
        </javaclass>
      </type>
      <derivation>
        <filter>
          <list>
            <!-- extraction de tous les objets de règle de prestations de type "Assistance
                 aux revenus" -->
            <readall ruleclass="Benefit">
              <match retrievedattribute="type">
                <Code table="BenefitType">
                  <!-- Valeur de l'assistance aux revenus -->
                  <String value="BT1"/>
                </Code>
              </match>
            </readall>
          </list>
          <listitemexpression>
            <equals>
              <!-- Filtrage des objets de règle de prestations de type "Assistance
                   aux revenus"  jusqu'à ceux de cette personne uniquement
                -->
              <reference attribute="socialSecurityNumber">
                <current/>
              </reference>
              <reference attribute="socialSecurityNumber"/>
            </equals>
          </listitemexpression>
        </filter>
      </derivation>
    </Attribute>

    <!--
    Extrait les objets de règle de prestations dont le montant est supérieur
    à 100.

    "supérieur à" n'étant pas un prédicat de correspondance exact, un
    élément <filter> doit être utilisé (l'élément <match> ne peut être utilisé que pour un critère
    de correspondance exact).
    -->
    <Attribute name="highPaymentBenefits">
      <type>
        <javaclass name="List">
          <ruleclass name="Benefit"/>
        </javaclass>
      </type>
      <derivation>
        <filter>
          <list>
            <!-- Extraction de tous les objets de règle de prestations pour la personne
              -->
            <readall ruleclass="Benefit">
              <match retrievedattribute="socialSecurityNumber">
                <reference attribute="socialSecurityNumber"/>
              </match>
            </readall>
          </list>
          <listitemexpression>
            <!-- Filtrage des objet de règle de prestations pour la personne jusqu'à
                 ceux dont le montant est supérieur à 100 uniquement -->
            <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>

  <!--
  Ce jeu de règles attend du code créant la session qu'il crée également
  une instance unique "bootstrap" de cette classe de règles
  de réclamation.
  -->
  <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>