Inicialización y acceso a variables

Este ejemplo indica cómo puede inicializar y acceder a un conjunto de reglas, un bloque de reglas o variables de reglas.

Una variable se puede definir a nivel de conjunto de reglas, de bloque de reglas o de regla. Antes de poder acceder a una variable, ésta debe ser inicializada con una expresión de inicialización. La siguiente expresión inicializa dos variables, una llamada hostsList y otra llamada hostsString:
<variable name="hostsList" dataType="java.util.ArrayList">
  <varInitializer expressionLanguage="java">
    return new ArrayList();
  </varInitializer>
</variable>
<variable name="hostsString" dataType="java.lang.String">
  <varInitializer expressionLanguage="java">
    return new String();
  </varInitializer>
</variable>
A todas las variables se accede a través de expresiones. El siguiente ejemplo muestra cómo se accede a las variables hostsList y hostsString, que han sido inicializadas en el ejemplo anterior, a través de una expresión dentro de una acción de respuesta de una regla. En este ejemplo, hostsList se modifica, y a hostsString se le asigna un nuevo valor.
<onNextEvent>
	<action expressionLanguage="java">
	  String hostname = act_event.getStringAttribute("hostname");
    ArrayList hostsList = (ArrayList)act_lib.getVariable("hostsList");
    hostsList.add(hostname);
    String hostsString = act_lib.getStringVariable("hostsString");
    String newHostString = hostsString + ", " + hostname);
    act_lib.setStringVariable("hostsString", newHostsString);
	</action>
</onNextEvent>