Escribir conjuntos de reglas para el triaje

Todos los conjuntos de reglas de triaje deberán utilizar la interfaz de triaje para poder ejecutarse dentro de UA. La interfaz se detalla a continuación:

<?xml version="1.0" encoding="UTF-8"?>
<!--
  Copyright 2010-2011 Curam Software Ltd.
  Reservados todos los derechos.


  Este software es información confidencial y
  propietaria de Curam Software, Ltd. ("Información
  confidencial").  No podrá revelar esta Información
  confidencial y deberá utilizarla únicamente de acuerdo con
  las condiciones del acuerdo de licencia que ha convenido
  con Curam Software.
-->
<RuleSet
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:noNamespaceSchemaLocation=
   "http://www.curamsoftware.com/CreoleRulesSchema.xsd"
  name="TriageInterfaceRuleSet">

  <!-- Esta clase debe ser ampliada por todos los conjuntos de reglas invocados por
  el procesamiento de resultados de exploración de 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>

El conjunto de reglas especificado en la propiedad de aplicación curam.citizenworkspace.triage.ruleset.name debe incluir una clase de reglas, generalmente denominada "Triaje", que amplía la clase de reglas AbstractTriageResult indicada arriba.

Este uso de la clase de reglas AbstractTriageResult garantiza que los atributos necesarios están disponibles durante la ejecución de las reglas.