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.
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 :
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.
<?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>