初始化和访问变量

本示例说明如何初始化和访问规则集、规则块或规则变量。

变量可在规则集、规则块或规则级别定义。变量必须使用初始化表达式进行初始化之后才能访问。以下表达式初始化 2 个变量,分别名为 hostsList 和 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>
所有的变量都通过表达式访问。以下示例说明如何通过规则响应操作中的表达式来访问变量 hostsList 和 hostsString,这些变量已在先前示例中初始化。在以下示例中,将修改 hostsList,并为 hostsString 指定新值。
<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>