봉사 활동 캠페인 규칙 세트

봉사 활동은 Advisor 인프라를 기반으로 작성되며 모든 봉사 활동이 확장해야 하는 CoreCitizenCampaignRuleset는 CoreAdvisorRuleset에서 상속됩니다. CoreCitizenCampaignRuleset는 /EJBServer/components/citizenworkspace/CREOLE_Rule_Sets에 있습니다.

CoreCitizenCampaignRuleset은 봉사 활동 캠페인을 추진하는 데 사용하는 다음 두 개의 규칙 클래스를 정의합니다.

CitizenCampaignAdmin 규칙 클래스

이 클래스는 CitizenCampaign 관리 레코드의 CER 규칙 표시입니다. 캠페인의 이름, 만기 날짜 시간 및 이미지 참조가 전파됩니다. 시스템의 활성 봉사 활동 캠페인마다 이 클래스의 규칙 오브젝트가 존재합니다. 이러한 오브젝트는 봉사 활동 인프라가 내부적으로 관리합니다.

AbstractCampaignAdviceItem 규칙 클래스

이 클래스는 AbstractAdviceItem을 확장합니다(조언자 문서 참조). 이 클래스는 구체적인 봉사 활동 캠페인 규칙 클래스가 확장해야 하는 클래스입니다. 구체적인 봉사 활동 캠페인 규칙 클래스는 이 규칙 클래스에서 상속되는 다음 속성을 지정해야 합니다.

AbstractCampaignAdviceItem 클래스가 문제의 캠페인에 대해 CitizenCampaignAdmin 규칙 오브젝트가 있는지(즉, 관리에서 캠페인이 활성인지 여부)와 "campaignShowAdvice" 속성의 값에 따라 상위의 "showAdvice" 속성을 설정합니다.

기본적으로 캠페인의 만기 날짜 시간은 봉사 활동 캠페인 관리 레코드에서 가져옵니다. 그러면 관리자가 캠페인의 만기를 구성할 수 있습니다. 그러나 관리자가 원하는 경우 이 클래스의 하위 구현에서 AbstractCampaignAdviceItem 클래스의 "expiryDateTime" 속성을 대체하여 비즈니스 로직이나 기타 규칙에 따라 만기일을 판별할 수도 있습니다.

구체적인 캠페인 규칙 클래스는 조언자 AbstractAdviceContext를 확장하는 클래스도 선언해야 합니다. 자세한 정보는 조언자 문서와 다음 샘플 캠페인 규칙 세트를 참조하십시오.

<RuleSet name="SampleCampaignRuleSet">
 
 <!-- 이 클래스는 조언자에서 사용하는 인프라입니다.
   자세한 정보는 조언자 문서를
   참조하십시오. -->
         
 <Class extends="AbstractAdviceContext" 
   extendsRuleSet="CoreAdvisorRuleSet" 
     name="SampleCampaignContext">
 
   <!-- 조언자 전파자가 채웁니다. -->
   <Attribute name="concernRoleID">
     <type>
       <ruleclass name="NumberParameter" 
         ruleset="CoreAdvisorRuleSet"/>
     </type>
     <derivation>
       <specified/>
     </derivation>
   </Attribute>
 
   <!-- 조언자 전파자가 채웁니다. -->
   <Attribute name="adviceContextID">
     <type>
       <javaclass name="Number"/>
     </type>
     <derivation>
       <specified/>
     </derivation>
   </Attribute>
 
   <Attribute name="advice">
     <type>
       <javaclass name="List">
         <ruleclass name="AbstractCampaignAdviceItem" 
           ruleset="CoreCitizenCampaignRuleset"/>
       </javaclass>
     </type>
     <derivation>
       <fixedlist>
         <listof>
           <ruleclass name="AbstractCampaignAdviceItem" 
             ruleset="CoreCitizenCampaignRuleset"/>
         </listof>
         <members>
         <!-- 이 구성원 목록에는 AbstractCampaignAdviceItem을
                 확장하는 사용자 정의 규칙이 포함되어야 합니다. -->
           <create ruleclass="SampleCampaign">
             <this/>
           </create>
         </members>
       </fixedlist>
     </derivation>
   </Attribute>
 </Class>
 
 <!-- AbstractCampaignAdviceItem을 확장하는
         구체적 캠페인 / 조언자 클래스 -->
 <Class extends="AbstractCampaignAdviceItem" 
   extendsRuleSet="CoreCitizenCampaignRuleset" 
     name="SampleCampaign">
 
   <!-- 조언자 컨텍스트를 초기화합니다. 자세한 정보는
           조언자 문서를 참조하십시오. -->
   <Initialization>
     <Attribute name="sampleCampaignContext">
       <type>
         <ruleclass name="SampleCampaignContext"/>
       </type>
     </Attribute>
   </Initialization>
 
   <!-- 자원 저장소에 저장된 캠페인 텍스트에 대한
           참조입니다. 자세한 정보는
           조언자 문서를 참조하십시오. -->
   <Attribute name="adviceText">
     <type>
       <javaclass name="String"/>
     </type>
     <derivation>
       <String value="propertyName"/>
     </derivation>
   </Attribute>
 
   <!-- 조언 컨텍스트 ID에 대한 참조입니다.
        자세한 정보는 조언자 문서를
        참조하십시오. -->
   <Attribute name="adviceContext">
     <type>
       <javaclass name="Number"/>
     </type>
     <derivation>
       <reference attribute="adviceContextID">
         <reference attribute="sampleCampaignContext"/>
       </reference>
     </derivation>
   </Attribute>
 
   <!-- 상위 추상 클래스가 캠페인 규칙 오브젝트를
        읽는 데 사용합니다. 이 이름은 관리에서
        봉사 활동 캠페인에 제공된 이름과 같아야
        합니다. -->
   <Attribute name="citizenCampaignName">
     <type>
       <javaclass name="String"/>
     </type>
     <derivation>
       <String value="SampleCampaign"/>
     </derivation>
   </Attribute>
 
   <!-- 지정된 참여자의 캠페인을 표시할지
           여부(캠페인이 활성이라고 가정함). -->
   <Attribute name="campaignShowAdvice">
     <type>
       <javaclass name="Boolean"/>
     </type>
     <derivation>
       <!-- 캠페인의 비즈니스 로직이 여기에 옵니다. -->
       <true/>
     </derivation>
   </Attribute>
 </Class>
</RuleSet>