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>