Construcción de líneas de tiempo en las reglas CER

Normalmente, los datos de línea de tiempo los crean los clientes de CER fuera de las reglas y se utilizan para llenar el valor de un atributo CER utilizando el mecanismo de especificación.

Sin embargo, CER también contiene algunas expresiones para crear líneas de tiempo directamente en las reglas de CER:

Línea de tiempo e intervalo

Una línea de tiempo se puede crear de manera nativa en las reglas CER creando primero explícitamente una lista de intervalos y, a continuación, utilizando esta lista para crear una línea de tiempo.

En la práctica, estas líneas de tiempo fijas tienden a ser útiles sólo como medida temporal mientras se elabora el conjunto de reglas.

Figura 1. Ejemplo de uso de línea de tiempo e intervalo para crear una línea de tiempo
<?xml version="1.0" encoding="UTF-8"?>
<RuleSet name="Example_Timeline"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:noNamespaceSchemaLocation=
"http://www.curamsoftware.com/CreoleRulesSchema.xsd">

  <Class name="CreateTimelines">

    <!-- Este ejemplo utiliza <initialvalue> para establecer el valor válido
         desde el inicio del tiempo. -->
    <Attribute name="aNumberTimeline">
      <type>
        <javaclass name="curam.creole.value.Timeline">
          <javaclass name="Number"/>
        </javaclass>
      </type>
      <derivation>
        <Timeline>
          <intervaltype>
            <javaclass name="Number"/>
          </intervaltype>
          <!-- Valor desde el inicio del tiempo -->
          <initialvalue>
            <Number value="0"/>
          </initialvalue>
          <!-- Los intervalos restantes -->
          <intervals>
            <fixedlist>
              <listof>
                <javaclass name="curam.creole.value.Interval">
                  <javaclass name="Number"/>
                </javaclass>
              </listof>
              <members>
                <Interval>
                  <intervaltype>
                    <javaclass name="Number"/>
                  </intervaltype>
                  <start>
                    <Date value="2001-01-01"/>
                  </start>
                  <value>
                    <Number value="10000"/>
                  </value>
                </Interval>
                <Interval>
                  <intervaltype>
                    <javaclass name="Number"/>
                  </intervaltype>
                  <start>
                    <Date value="2004-12-01"/>
                  </start>
                  <value>
                    <Number value="12000"/>
                  </value>
                </Interval>

              </members>
            </fixedlist>

          </intervals>
        </Timeline>

      </derivation>
    </Attribute>


    <!-- Este ejemplo no utiliza <initialvalue>. -->
    <Attribute name="aStringTimeline">
      <type>
        <javaclass name="curam.creole.value.Timeline">
          <javaclass name="String"/>
        </javaclass>
      </type>
      <derivation>
        <Timeline>
          <intervaltype>
            <javaclass name="String"/>
          </intervaltype>

          <!-- La lista de intervalos debe incluir uno válido desde la
             fecha nula (inicio de tiempo), de lo contrario, se producirá un error
             en el tiempo de ejecución, si se evalúa esta expresión.-->
          <intervals>
            <fixedlist>
              <listof>
                <javaclass name="curam.creole.value.Interval">
                  <javaclass name="String"/>
                </javaclass>
              </listof>
              <members>
                <Interval>
                  <intervaltype>
                    <javaclass name="String"/>
                  </intervaltype>
                  <start>
                    <!-- "desde el inicio del tiempo" -->
                    <null/>
                  </start>
                  <value>
                    <String value="Start of time string"/>
                  </value>
                </Interval>
                <Interval>
                  <intervaltype>
                    <javaclass name="String"/>
                  </intervaltype>
                  <start>
                    <Date value="2001-01-01"/>
                  </start>
                  <value>
                    <String value="2001-only String"/>
                  </value>
                </Interval>
                <Interval>
                  <intervaltype>
                    <javaclass name="String"/>
                  </intervaltype>
                  <start>
                    <Date value="2002-01-01"/>
                  </start>
                  <value>
                    <String value="2002-onwards String"/>
                  </value>
                </Interval>
              </members>
            </fixedlist>
          </intervals>
        </Timeline>
      </derivation>
    </Attribute>
  </Class>
</RuleSet>

existencetimeline

Algunos objetos de negocio tienen fechas de inicio y finalización naturales, que juntas especifican un periodo durante el cual el objeto de negocio existe. Una o las dos fechas de inicio y finalización pueden ser opcionales, en cuyo caso el periodo de existencia para el objeto de negocio es de finalización abierta.

Los ejemplos pueden incluir:

Las fechas de inicio y finalización para un objeto de negocio pueden utilizarse para dividir el tiempo en estos tres periodos (o menos si la fecha de inicio o la fecha de finalización está en blanco):

Normalmente puede ser útil asignar un valor diferente a cada uno de estos periodos para un objeto de negocio y crear una línea de tiempo a partir de estos valores. CER contiene una expresión existencetimeline para crear una línea de tiempo de valores de previos a la existencia/de existencia/posteriores a la existencia basándose en fechas de inicio y finalización opcionales.

Si la fecha de inicio no existe, no habrá ningún intervalo previo a la existencia en la línea de tiempo. Por ejemplo, si un activo no tiene una fecha de compra registrada, el valor efectivo se aplicará desde el inicio del tiempo, sin periodo de "valor cero".

Si la fecha de finalización no existe, no habrá ningún intervalo posterior a la existencia en la línea de tiempo. Por ejemplo, si un activo no tiene una fecha de venta y, a continuación, el valor del activo se mantiene hasta nuevo aviso (es decir, arbitrariamente en el futuro)

Consulte Línea de tiempo de existencia para obtener detalles sobre cómo utilizar la línea de tiempo de existencia en el Editor CER.