Importazione e accesso ai moduli e oggetti esterni

Questo esempio indica come è possibile rendere il codice esterno (come le classi Java) e gli oggetti esterni accessibili alle espressioni. Un oggetto esterno è un oggetto che un'applicazione crea per comunicare con le espressioni.

Prima di poter accedere al codice di accesso esterno da un'espressione, è necessario rendere il codice accessibile alle espressioni.

L'importazione è un modo specifico del linguaggio di programmazione per rendere il codice esterno accessibile alle espressioni. L'elemento <import> contiene un tipo speciale di espressione che specifica i moduli esterni (come le classi Java) da importare per essere utilizzati in altre espressioni all'interno delle regole. Un'importazione può essere definita sul livello della serie di regole o di un blocco di regole.

Il seguente elemento <import> contiene un'espressione, scritta nel linguaggio di programmazione Java, che importa la classe StaticHelper e la classe Queue che può essere indicata da altre espressioni:
<import expressionLanguage="java">
	import com.ibm.act.sample.StaticHelper;
	import com.ibm.act.test.Queue;
</import>

Sebbene l'uso del nome classe completo non è richiesto nell'istruzione import, è necessario specificare il nome completo per evitare un tempo di compilazione esteso. Ad esempio la classe Java deve essere specificata come com.ibm.act.sample.StaticHelper piuttosto che come com.ibm.act.sample.* o com.ibm.act.*.

Accesso a un metodo statico

L'esempio che segue indica come un'espressione all'interno dell'azione di risposta della regola fa riferimento alla classe StaticHelper dopo che la classe è stata importata:
<onDetection>
		<action expressionLanguage="java">
		StaticHelper.pageAdministrator("Too many login attempts for " + act_event.getAttribute("userID"));
	</action>
</onDetection>

Accesso a un metodo di istanza per un oggetto

L'esempio che segue indica come un'espressione all'interno dell'azione di risposta della regola fa riferimento alla classe Queue dopo che la classe è stata importata. In questo esempio, si ottiene un oggetto esterno con il nome di OutputQueueOne e un tipo di Queue e si utilizza per inserire un evento in una coda specifica.
<onDetection>
		<action expressionLanguage="java">
		Queue myQueue = (Queue)act_lib.getExternalContext("OutputQueueOne");
		myQueue.enqueue(act_event);
	</action>
</onDetection>