XML Reference

This section provides a reference to the underlying XML representation of legislationChange.

Each legislationChange instance contains:

The following XML implements the logic described in Example.

Note: For brevity and clarity, the cut-off rates are "hard-coded" into this example.

A production-quality rule set would instead externalize these rates using Cúram's rate tables. See rate for further details.

<?xml version="1.0" encoding="UTF-8"?>
<RuleSet name="Example_legislationChange"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:noNamespaceSchemaLocation=
"http://www.curamsoftware.com/CreoleRulesSchema.xsd">

  <!-- Rule class for a person on a case.  -->
  <Class name="Person">

    <!-- The pre-tax income for this person. -->
    <Attribute name="preTaxIncomeTimeline">
      <type>
        <javaclass name="curam.creole.value.Timeline">
          <javaclass name="Number"/>
        </javaclass>
      </type>
      <derivation>
        <specified/>
      </derivation>
    </Attribute>

    <!-- The pre-tax income for this person. -->
    <Attribute name="postTaxIncomeTimeline">
      <type>
        <javaclass name="curam.creole.value.Timeline">
          <javaclass name="Number"/>
        </javaclass>
      </type>
      <derivation>
        <specified/>
      </derivation>
    </Attribute>

    <!-- Eligible if "low-waged", where the definition of
         "low-waged" varies as changes in legislation are
         enacted. -->
    <Attribute name="isEligibleTimeline">
      <type>
        <javaclass name="curam.creole.value.Timeline">
          <javaclass name="Boolean"/>
        </javaclass>
      </type>
      <derivation>
        <legislationChange>
          <!-- The type of the timeline returned is a timeline of
               Boolean values. -->
          <intervaltype>
            <javaclass name="Boolean"/>
          </intervaltype>

          <!-- Initial legislation era. -->
          <era>
            <from>
              <null/>
            </from>
            <value>
              <timelineoperation>
                <!-- Low-waged if pre-tax income is below
                     20,000. -->
                <compare comparison="&lt;">
                  <intervalvalue>
                    <reference attribute="preTaxIncomeTimeline"/>
                  </intervalvalue>
                  <Number value="20000"/>
                </compare>
              </timelineoperation>
            </value>
          </era>

          <!-- A change in legislation, effective from 1st January
               2001, -->
          <era>
            <from>
              <Date value="2001-01-01"/>
            </from>
            <value>
              <timelineoperation>
                <!-- Low-waged if post-tax income is below
                     15,000. -->
                <compare comparison="&lt;">
                  <intervalvalue>
                    <reference attribute="postTaxIncomeTimeline"/>
                  </intervalvalue>
                  <Number value="15000"/>
                </compare>
              </timelineoperation>
            </value>
          </era>

          <!-- Another change in legislation, effective from 1st
               January 2002. -->
          <era>
            <from>
              <Date value="2002-01-01"/>
            </from>
            <value>
              <timelineoperation>
                <!-- Low-waged if pre-tax income is below 22,000 OR
                     post-tax income is below 16,000. -->
                <any>
                  <fixedlist>
                    <listof>
                      <javaclass name="Boolean"/>
                    </listof>
                    <members>
                      <compare comparison="&lt;">
                        <intervalvalue>
                          <reference
 attribute="preTaxIncomeTimeline"/>
                        </intervalvalue>
                        <Number value="22000"/>
                      </compare>
                      <compare comparison="&lt;">
                        <intervalvalue>
                          <reference
 attribute="postTaxIncomeTimeline"/>
                        </intervalvalue>
                        <Number value="16000"/>
                      </compare>
                    </members>
                  </fixedlist>
                </any>
              </timelineoperation>
            </value>
          </era>

        </legislationChange>



      </derivation>
    </Attribute>

  </Class>
</RuleSet>