Importando e Acessando Módulos e Objetos Externos

Este exemplo indica como tornar código externo (por exemplo, classes Java) e objetos externos acessíveis às expressões. Objeto externo é aquele que o aplicativo cria para se comunicar com as expressões.

Antes de poder acessar o código externo de uma expressão, é necessário torná-lo acessível às expressões.

Uma importação é uma maneira específica da linguagem de programação tornar código externo acessível a expressões. O elemento <import> contém um tipo especial de expressão que especifica os módulos externos (por exemplo, classes Java) a serem importados para utilização em outras expressões nas regras. Uma importação pode ser definida no nível do conjunto de regras ou do bloco de regra.

O elemento <import> a seguir contém uma expressão, criada na linguagem de programação Java, importando as classes StaticHelper e Queue, que pode ser referida por outras expressões:
<import expressionLanguage="java">
	import com.ibm.act.sample.StaticHelper;
	import com.ibm.act.test.Queue;
</import>

Embora o uso do nome completo da classe não seja necessário na instrução de importação, é necessário especificar o nome completo para evitar um tempo longo de compilação. Por exemplo, a classe Java deve ser especificada como com.ibm.act.sample.StaticHelper em vez de com.ibm.act.sample.* ou com.ibm.act.*.

Acessando um Método Estático

O exemplo a seguir indica como uma expressão em uma ação de resposta da regra referencia a classe StaticHelper após a importação da classe:
<onDetection>
	<action expressionLanguage="java">
		StaticHelper.pageAdministrator("Too many login attempts for " + act_event.getAttribute("userID"));
	</action>
</onDetection>

Acessando um Método de Instância de um Objeto

O exemplo a seguir indica como uma expressão em uma ação de resposta da regra faz referência à classe Queue após a importação da classe. Nesse exemplo, um objeto interno com nome OutputQueueOne e tipo Queue é obtido e utilizado para colocar um evento numa fila específica.
<onDetection>
	<action expressionLanguage="java">
		Queue myQueue = (Queue)act_lib.getExternalContext("OutputQueueOne");
		myQueue.enqueue(act_event);
	</action>
</onDetection>