Fait référence à un élément dans une liste en cours de traitement.
L'expression current peut uniquement apparaître dans une expression qui traite des éléments dans une liste, par exemple :
Pour plus de clarté, vous pouvez affecter un alias à l'expression current, qui doit correspondre à l'alias de l'expression list dont il est fait référence. Les alias sont nécessaires si le même calcule comporte davantage d'expressions current dans la portée.
<?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 référence utilise current pour faire référence
à un élément présent dans la liste des
objets de règle Person. -->
<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>
<!-- Enfants de cette personne qui ne
sont pas encore adultes. -->
<Attribute name="dependentChildren">
<type>
<javaclass name="List">
<ruleclass name="Person"/>
</javaclass>
</type>
<derivation>
<filter>
<!-- Utilisez un alias pour éviter toute confusion (lecteurs
humains du jeu de règles !) entre la personne
parent et la personne enfant. -->
<list alias="child">
<reference attribute="children"/>
</list>
<listitemexpression>
<not>
<reference attribute="isAdult">
<!-- L'alias current doit correspondre
à celui de la liste. -->
<current alias="child"/>
</reference>
</not>
</listitemexpression>
</filter>
</derivation>
</Attribute>
</Class>
</RuleSet>