Importar y acceder a objetos y módulos externos

Este ejemplo indica cómo puede crearse código externo (como por ejemplo clases Java) y objetos externos accesibles para las expresiones. Un objeto externo es un objeto creado por una aplicación para comunicarse con expresiones.

Para poder acceder a código externo desde una expresión, debe hacer que el código sea accesible para las expresiones.

Una importación es una forma específica del lenguaje de programación de hacer accesible código externo para las expresiones. El elemento <import> contiene un tipo especial de expresión que especifica los módulos externos (como las clases Java) a importar para utilizar en otras expresiones dentro de las reglas. Una importación se puede definir a nivel de conjunto de reglas o de bloque de reglas.

El siguiente elemento <import> contiene una expresión, escrita en el lenguaje de programación Java, que importa la clase StaticHelper y la clase Queue, que puede ser referenciada por otras expresiones:
<import expressionLanguage="java">
	import com.ibm.act.sample.StaticHelper;
	import com.ibm.act.test.Queue;
</import>

Aunque en la sentencia de importación no es obligatorio utilizar el nombre completo de la clase, es mejor especificar el nombre completo para evitar un tiempo de compilación muy largo. Por ejemplo, la clase Java se debería especificar como com.ibm.act.sample.StaticHelper en lugar de como com.ibm.act.sample.* o como com.ibm.act.*.

Acceso a un método estático

El siguiente ejemplo indica cómo una expresión dentro de una acción de respuesta de una regla hace referencia a la clase StaticHelper después de que ésta haya sido importada:
<onDetection>
	<action expressionLanguage="java">
		StaticHelper.pageAdministrator("Too many login attempts for " + act_event.getAttribute("userID"));
	</action>
</onDetection>

Acceso a un método de instancia para un objeto

El siguiente ejemplo indica cómo una expresión dentro de una acción de respuesta de una regla hace referencia a la clase Queue después de que ésta haya sido importada. En este ejemplo, un objeto externo con un nombre OutputQueueOne y un tipo Queue se obtiene y se utiliza para poner un suceso en una cola específica.
<onDetection>
	<action expressionLanguage="java">
		Queue myQueue = (Queue)act_lib.getExternalContext("OutputQueueOne");
		myQueue.enqueue(act_event);
	</action>
</onDetection>