导入和访问外部模块和对象

本示例说明如何使外部代码(例如 Java™ 类)和外部对象可由表达式访问。外部对象是应用程序创建用来与表达式进行通信的对象。

从表达式访问外部代码之前,必须使该代码可由表达式访问。

导入是特定于编程语言的方式,用于使外部代码可由表达式访问。<import> 元素中包含特殊类型的表达式,该表达式指定要导入供规则内的其他表达式使用的外部模块(例如 Java 类)。导入可在规则集或规则块级别定义。

以下 <import> 元素中包含使用 Java 编程语言编写的表达式,该表达式导入 StaticHelper 类和 Queue 类,这些类可在其他表达式中引用:
<import expressionLanguage="java">
	import com.ibm.act.sample.StaticHelper;
	import com.ibm.act.test.Queue;
</import>

虽然在导入语句中可以不使用完整的类名,但为了避免很长的编译时间,您应当指定完整的名称。 例如,应将 Java 类指定为 com.ibm.act.sample.StaticHelper,而不是 com.ibm.act.sample.*com.ibm.act.*

访问静态方法

以下示例说明在导入 StaticHelper 类之后,规则响应操作中的表达式如何引用该类:
<onDetection>
	<action expressionLanguage="java">
		StaticHelper.pageAdministrator("Too many login attempts for " + act_event.getAttribute("userID"));
	</action>
</onDetection>

访问对象的实例方法

以下示例说明在导入 Queue 类之后,规则响应操作中的表达式如何引用该类。此示例获取名为 OutputQueueOne 并且类型为 Queue 的外部对象,并用于将事件放置到特定队列中。
<onDetection>
	<action expressionLanguage="java">
		Queue myQueue = (Queue)act_lib.getExternalContext("OutputQueueOne");
		myQueue.enqueue(act_event);
	</action>
</onDetection>