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