Hace referencia a un elemento de una lista que se está procesando.
La expresión current sólo puede aparecer en una expresión que proceso elementos de una lista, por ejemplo:
Para mayor claridad, puede asignar un alias a la expresión current, que debe coincidir con el alias en la expresión list a la que se hace referencia. Los alias son necesarios si hay más que expresiones current en el ámbito en el mismo cálculo.
<?xml version="1.0" encoding="UTF-8"?>
<RuleSet name="Example_listitem"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation=
"http://www.curamsoftware.com/CreoleRulesSchema.xsd">
<Class name="Household">
<Attribute name="members">
<type>
<javaclass name="List">
<ruleclass name="Person"/>
</javaclass>
</type>
<derivation>
<specified/>
</derivation>
</Attribute>
<Attribute name="adults">
<type>
<javaclass name="List">
<ruleclass name="Person"/>
</javaclass>
</type>
<derivation>
<filter>
<list>
<reference attribute="members"/>
</list>
<listitemexpression>
<!-- La referencia utiliza current para hacer referencia
a un elemento de la lista de
objetos de regla de persona.-->
<reference attribute="isAdult">
<current/>
</reference>
</listitemexpression>
</filter>
</derivation>
</Attribute>
</Class>
<Class name="Person">
<Attribute name="children">
<type>
<javaclass name="List">
<ruleclass name="Person"/>
</javaclass>
</type>
<derivation>
<specified/>
</derivation>
</Attribute>
<Attribute name="age">
<type>
<javaclass name="Number"/>
</type>
<derivation>
<specified/>
</derivation>
</Attribute>
<Attribute name="isAdult">
<type>
<javaclass name="Boolean"/>
</type>
<derivation>
<compare comparison=">=">
<reference attribute="age"/>
<Number value="18"/>
</compare>
</derivation>
</Attribute>
<!-- Los hijos de esta persona que
aún no son adultos. -->
<Attribute name="dependentChildren">
<type>
<javaclass name="List">
<ruleclass name="Person"/>
</javaclass>
</type>
<derivation>
<filter>
<!-- Utilizar un alias para evitar confusión (para personas
que leen el conjunto de reglas) entre la persona padre
y la persona hijo. -->
<list alias="child">
<reference attribute="children"/>
</list>
<listitemexpression>
<not>
<reference attribute="isAdult">
<!-- El alias de current debe coincidir
con el de la lista. -->
<current alias="child"/>
</reference>
</not>
</listitemexpression>
</filter>
</derivation>
</Attribute>
</Class>
</RuleSet>