Initializing and accessing variables

This example indicates how you can initialize and access rule set, rule block, or rule variables.

A variable can be defined at the level of the rule set, a rule block, or a rule. Before a variable can be accessed, it must be initialized with an initialization expression. The following expression initializes two variables, one named hostsList and one named 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>
All variables are accessed through expressions. The following example shows how the variables hostsList and hostsString, which were initialized in the preceding example, are accessed through an expression within a rule response action. In this example, hostsList is modified, and hostsString is given a new value.
<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>