규칙 클래스의 모든 외부 규칙 오브젝트 인스턴스(즉, 클라이언트 코드로 작성된 인스턴스)를 검색합니다. 내부 규칙 오브젝트 인스턴스(즉, 규칙에서 작성된 인스턴스)는 검색되지 않습니다.
규칙 오브젝트 작성에 대한 자세한 정보는 외부 및 내부 규칙 오브젝트의 내용을 참조하십시오.
Cúram V6부터 readall을 사용하여 선택적 ruleset XML 속성 값을 설정하여 서로 다른 규칙 세트에서 규칙 클래스의 인스턴스를 검색할 수 있습니다.
Cúram V6부터 readall 표현식이 검색 기준에 있는 값과 일치하는 특정 속성 값이 있는 규칙 오브젝트만 검색하도록 readall 표현식에서 선택적 match 요소를 지원합니다.
그러나 DatabaseDataStorage를 사용하는 CER 세션의 경우(CER 세션 참조) Cúram V6에 도입된 readall / match 구문을 사용하면 일반적으로 성능이 더욱 좋습니다. 다음과 같은 경우 새 구문의 성능이 더 우수합니다.
규칙 오브젝트가 둘 이상의 기준과 일치해야 하는 경우 readall / match 구문을 사용하여 가장 많이 선택되는 속성에 대해 일치시킨 다음 결과를 filter로 랩핑하여 다른 기준을 필터하십시오.
<?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> <!-- 세션의 기본으로 사용된 유일한 청구를 검색합니다. --> <Attribute name="claim"> <type> <ruleclass name="Claim"/> </type> <derivation> <singleitem onEmpty="error" onMultiple="error"> <readall ruleclass="Claim"/> </singleitem> </derivation> </Attribute> <!-- 이 사람의 Benefit 규칙 오브젝트를 검색합니다(외부 스토리지를 조회하여 클라이언트 코드에서 작성할 가능성이 큼). 이 구현에서는 <readall>과 중첩된 <match>를 사용하여 일치하는 규칙 오브젝트만 검색하고 (데이터 스토리지에 따라) 아래의 "benefitsFilterReadall" 구현보다 성능이 더 우수합니다. --> <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> <!-- 위의 "benefitsReadallMatch"와 동일한 규칙 오브젝트를 검색하지만 (데이터 스토리지에 따라) 성능이 저하될 수 있습니다. --> <Attribute name="benefitsFilterReadall"> <type> <javaclass name="List"> <ruleclass name="Benefit"/> </javaclass> </type> <derivation> <filter> <list> <!-- 외부 스토리지에서 모든 Benefit 규칙 오브젝트를 검색합니다. --> <readall ruleclass="Benefit"/> </list> <listitemexpression> <equals> <!-- 혜택 규칙 오브젝트와 개인 규칙 오브젝트의 주민등록번호를 맞춥니다. --> <reference attribute="socialSecurityNumber"> <current/> </reference> <reference attribute="socialSecurityNumber"/> </equals> </listitemexpression> </filter> </derivation> </Attribute> <!-- "IncomeAssistance" 유형의 개인 혜택을 검색합니다. <match>를 사용하여 개인의 모든 혜택을 검색한 다음 <filter>를 사용하여 이 개인의 혜택 중에서 "Income Assistance" 혜택만 추출합니다. 이 구현은 socialSecurityNumber가 데이터 스토리지에서 Benefit에 대해 가장 많이 선택되는 속성인 경우 적합할 수 있습니다(즉, Benefit 규칙 오브젝트가 여러 개이지만 각 socialSecurityNumber 값이 비교적 적은 수의 Benefit 규칙 오브젝트에 있음). --> <Attribute name="incomeAssistanceBenefitsMatchSSNFilterType"> <type> <javaclass name="List"> <ruleclass name="Benefit"/> </javaclass> </type> <derivation> <filter> <list> <!-- 개인의 모든 Benefit 규칙 오브젝트를 검색합니다. --> <readall ruleclass="Benefit"> <match retrievedattribute="socialSecurityNumber"> <reference attribute="socialSecurityNumber"/> </match> </readall> </list> <listitemexpression> <equals> <!-- 개인의 Benefit 규칙 오브젝트를 "Income Assistance" 유형으로만 필터합니다. --> <reference attribute="type"> <current/> </reference> <Code table="BenefitType"> <!-- 수입 보조(Income Assistance)의 값 --> <String value="BT1"/> </Code> </equals> </listitemexpression> </filter> </derivation> </Attribute> <!-- "IncomeAssistance" 유형의 개인 혜택을 검색합니다. <match>를 사용하여 모든 "Income Assistance" 혜택을 검색한 다음 <filter>를 사용하여 이 개인의 "Income Assistance" 혜택만 추출합니다. 이 구현은 유형이 데이터 스토리지에서 가장 많이 선택되는 Benefit의 속성인 경우 적합할 수 있습니다(즉, 각 유형의 Benefit 규칙 오브젝트의 수가 적음). --> <Attribute name="incomeAssistanceBenefitsMatchTypeFilterSSN"> <type> <javaclass name="List"> <ruleclass name="Benefit"/> </javaclass> </type> <derivation> <filter> <list> <!-- "Income Assistance" 유형의 모든 혜택 규칙 오브젝트를 검색합니다. --> <readall ruleclass="Benefit"> <match retrievedattribute="type"> <Code table="BenefitType"> <!-- Income Assistance의 값 --> <String value="BT1"/> </Code> </match> </readall> </list> <listitemexpression> <equals> <!-- "Income Assistance" 유형의 Benefit 규칙 오브젝트를 이 Person에 해당하는 Benefit 규칙 오브젝트로만 필터합니다. --> <reference attribute="socialSecurityNumber"> <current/> </reference> <reference attribute="socialSecurityNumber"/> </equals> </listitemexpression> </filter> </derivation> </Attribute> <!-- 금액이 100보다 큰 Benefit의 규칙 오브젝트를 검색합니다. "greater than"은 완전 일치 술어가 아니므로 <filter>를 사용해야 합니다(<match>는 완전 일치 기준에만 사용할 수 있음). --> <Attribute name="highPaymentBenefits"> <type> <javaclass name="List"> <ruleclass name="Benefit"/> </javaclass> </type> <derivation> <filter> <list> <!-- 개인의 모든 Benefit 규칙 오브젝트를 검색합니다. --> <readall ruleclass="Benefit"> <match retrievedattribute="socialSecurityNumber"> <reference attribute="socialSecurityNumber"/> </match> </readall> </list> <listitemexpression> <!-- 금액이 100을 초과하는 Benefit 규칙 오브젝트만 해당되도록 개인의 Benefit 규칙 오브젝트를 필터합니다. --> <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> <!-- 이 규칙 세트는 세션을 작성하는 코드가 이 Claim 규칙 클래스의 "bootstrap" 단일 인스턴스도 작성할 것으로 예상합니다. --> <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>