Externe Module und Objekte importieren und darauf zugreifen

In diesem Beispiel wird gezeigt, wie Sie externen Code (wie z. B. Java-Klassen) sowie externe Objekte für Ausdrücke zugänglich machen können. Ein externes Objekt ist ein Objekt, das von einer Anwendung erstellt wird, um mit Ausdrücken zu kommunizieren.

Bevor Sie auf externen Code von einem Ausdruck zugreifen können, müssen Sie diesen Code für Ausdrücke zugänglich machen.

Ein Import ist eine programmiersprachenspezifische Möglichkeit, externen Code für Ausdrücke zugänglich zu machen. Das Element <import> enthält einen speziellen Ausdruckstyp, der die externen Module (wie z. B. Java-Klassen) angibt, die für die Verwendung in anderen Ausdrücken in Regeln importiert werden sollen. Ein Import kann auf der Ebene des Regelsatzes oder eines Regelblocks definiert werden.

Das folgende Element <import> enthält einen Ausdruck, der in der Programmiersprache Java geschrieben wurde und der die Klassen 'StaticHelper' und 'Queue' importiert, auf die von anderen Ausdrücken verwiesen werden kann:
<import expressionLanguage="java">
	import com.ibm.act.sample.StaticHelper;
	import com.ibm.act.test.Queue;
</import>

Obwohl die Verwendung des vollständigen Klassennamens in der Importanweisung nicht erforderlich ist, sollten Sie den vollständigen Namen angeben, um eine lange Kompilierzeit zu vermeiden. Zum Beispiel sollte die Java-Klasse als com.ibm.act.sample.StaticHelper an Stelle von com.ibm.act.sample.* oder com.ibm.act.* angegeben werden.

Auf eine statische Methode zugreifen

Das folgende Beispiel zeigt, wie ein Ausdruck in einer Regelantwortaktion auf die Klasse 'StaticHelper' verweist, nachdem die Klasse importiert wurde:
<onDetection>
	<action expressionLanguage="java">
		StaticHelper.pageAdministrator("Too many login attempts for " + act_event.getAttribute("userID"));
	</action>
</onDetection>

Auf eine Instanzdefinitionsmethode für ein Objekt zugreifen

Das folgende Beispiel zeigt, wie ein Ausdruck in einer Regelantwortaktion auf die Klasse 'Queue' verweist, nachdem die Klasse importiert wurde. In diesem Beispiel wird ein externes Objekt mit dem Namen OutputQueueOne und dem Typ Queue abgerufen und dazu verwendet, ein Ereignis in eine bestimmte Warteschlange zu stellen.
<onDetection>
	<action expressionLanguage="java">
		Queue myQueue = (Queue)act_lib.getExternalContext("OutputQueueOne");
		myQueue.enqueue(act_event);
	</action>
</onDetection>