Ecriture de jeux de règles de triage

Tous les jeux de règles de triage doivent utiliser l'interface de triage afin qu'ils puissent être exécutés au sein d'UA. L'interface est détaillée ci-dessous :

<?xml version="1.0" encoding="UTF-8"?>
<!--
  Copyright 2010-2011 Curam Software Ltd.
  All rights reserved.

  Ce logiciel entre dans le cadre des informations de confidentialité et de droits d'auteur de
  Cúram Software, Ltd. ("Informations
  confidentielles"). Vous n'êtes pas autorisé à divulguer ces informations
  confidentielles et devez les utiliser uniquement en conformité avec
  les dispositions de l'accord de licence que vous avez conclu avec
  Curam Software.
-->
<RuleSet
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:noNamespaceSchemaLocation=
   "http://www.curamsoftware.com/CreoleRulesSchema.xsd"
  name="TriageInterfaceRuleSet">

  <!-- Cette classe doit être étendue par tous les jeux de règles appelés par
  le traitement des résultats d'examen préalable du Citizen Portal. -->
  <Class name="AbstractTriageResult" abstract="true">

    <Attribute name="alertMessage">
      <type>
        <javaclass name="List">
          <ruleclass name="AbstractAlertMessage"/>
        </javaclass>
      </type>
      <derivation>
        <abstract/>
      </derivation>
    </Attribute>

    <Attribute name="services">
      <type>
        <javaclass name="List">
          <ruleclass name="AbstractService"/>
        </javaclass>
      </type>
      <derivation>
        <abstract/>
      </derivation>
    </Attribute>

    <Attribute name="programs">
      <type>
        <javaclass name="List">
          <ruleclass name="AbstractProgram"/>
        </javaclass>
      </type>
      <derivation>
        <abstract/>
      </derivation>
    </Attribute>

    <Attribute name="screenings">
      <type>
        <javaclass name="List">
          <ruleclass name="AbstractScreening"/>
        </javaclass>
      </type>
      <derivation>
        <abstract/>
      </derivation>
    </Attribute>

    <Attribute name="intakeApplications">
      <type>
        <javaclass name="List">
          <ruleclass name="AbstractIntakeApplication"/>
        </javaclass>
      </type>
      <derivation>
        <abstract/>
      </derivation>
    </Attribute>

    <Attribute name="needs">
      <type>
        <javaclass name="List">
          <ruleclass name="AbstractNeed"/>
        </javaclass>
      </type>
      <derivation>
        <abstract/>
      </derivation>
    </Attribute>

  </Class>

  <!-- Abstract Need -->
  <Class abstract="true" name="AbstractNeed">
    <Attribute name="description">
      <type>
        <javaclass name="curam.creole.value.Message"/>
      </type>
      <derivation>
        <abstract/>
      </derivation>
    </Attribute>

    <Attribute name="identifier">
      <type>
        <javaclass name="String"/>
      </type>
      <derivation>
        <abstract/>
      </derivation>
    </Attribute>

    <Attribute name="appropriate">
      <type>
        <javaclass name="Boolean"/>
      </type>
      <derivation>
        <abstract/>
      </derivation>
    </Attribute>

    <Attribute name="priority">
      <type>
        <javaclass name="Number"/>
      </type>
      <derivation>
        <abstract/>
      </derivation>
    </Attribute>
  </Class>

  <!-- Abstract Screening -->
  <Class abstract="true" name="AbstractScreening">
    <Attribute name="description">
      <type>
        <javaclass name="curam.creole.value.Message"/>
      </type>
      <derivation>
        <abstract/>
      </derivation>
    </Attribute>

    <Attribute name="appropriate">
      <type>
        <javaclass name="Boolean"/>
      </type>
      <derivation>
        <abstract/>
      </derivation>
    </Attribute>

    <Attribute name="identifier">
      <type>
        <javaclass name="String"/>
      </type>
      <derivation>
        <abstract/>
      </derivation>
    </Attribute>
  </Class>
  <!-- End Abstract Screening -->

  < !-- AbstractIntakeApplication -->
  <Class abstract="true" name="AbstractIntakeApplication">
    <Attribute name="description">
      <type>
        <javaclass name="curam.creole.value.Message"/>
      </type>
      <derivation>
        <abstract/>
      </derivation>
    </Attribute>

    <Attribute name="appropriate">
      <type>
        <javaclass name="Boolean"/>
      </type>
      <derivation>
        <abstract/>
      </derivation>
    </Attribute>

    <Attribute name="identifier">
      <type>
        <javaclass name="String"/>
      </type>
      <derivation>
        <abstract/>
      </derivation>
    </Attribute>
  </Class>
  <!-- End AbstractIntakeApplication -->

  <Class name="AbstractAlertMessage" abstract="true">
    <Attribute name="alertRequired">
      <type>
        <javaclass name="Boolean"/>
      </type>
      <derivation>
        <abstract/>
      </derivation>
    </Attribute>
    <Attribute name="message">
      <type>
        <javaclass name="curam.creole.value.Message"/>
      </type>
      <derivation>
        <abstract/>
      </derivation>
    </Attribute>
  </Class>

  <!-- Abstract Service -->
  <Class abstract="true" name="AbstractService">
    <Attribute name="description">
      <type>
        <javaclass name="curam.creole.value.Message"/>
      </type>
      <derivation>
        <abstract/>
      </derivation>
    </Attribute>

    <Attribute name="appropriate">
      <type>
        <javaclass name="Boolean"/>
      </type>
      <derivation>
        <abstract/>
      </derivation>
    </Attribute>

    <Attribute name="identifier">
      <type>
        <javaclass name="String"/>
      </type>
      <derivation>
        <abstract/>
      </derivation>
    </Attribute>

    <Attribute name="groupInd">
      <type>
        <javaclass name="Boolean"/>
      </type>
      <derivation>
        <abstract/>
      </derivation>
    </Attribute>

    <Attribute name="needIdentifier">
      <type>
        <javaclass name="String"/>
      </type>
      <derivation>
        <abstract/>
      </derivation>
    </Attribute>

  </Class>

  <!--  Abstract program  -->
  <Class abstract="true" name="AbstractProgram">
    <Attribute name="description">
      <type>
        <javaclass name="curam.creole.value.Message"/>
      </type>
      <derivation>
        <abstract/>
      </derivation>
    </Attribute>

    <Attribute name="appropriate">
      <type>
        <javaclass name="Boolean"/>
      </type>
      <derivation>
        <abstract/>
      </derivation>
    </Attribute>

    <Attribute name="programTypeReference">
      <type>
        <javaclass name="String"/>
      </type>
      <derivation>
        <abstract/>
      </derivation>
    </Attribute>

    <Attribute name="needIdentifier">
      <type>
        <javaclass name="String"/>
      </type>
      <derivation>
        <abstract/>
      </derivation>
    </Attribute>

  </Class>

</RuleSet>

Le jeu de règles spécifié par la propriété d'application curam.citizenworkspace.triage.ruleset.name doit contenir une classe de règles, généralement nommée "Triage", qui étend la classe de règles AbstractTriageResult présentée ci-dessus.

Cette utilisation de la classe de règles AbstractTriageResult garantit que les attributs requis sont disponibles lors de l'exécution des règles.