Importation et accès à des modules et des objets externes

Cet exemple indique comment vous pouvez rendre un code externe (classes Java, par exemple) et des objets externes accessibles aux expressions. Un objet externe est un objet créé par une application pour communiquer avec des expressions.

Pour pouvoir accéder à un code externe depuis une expression, vous devez rendre ce code accessible aux expressions.

Une importation est un moyen spécifique aux langages de programmation de rendre un code externe accessible à des expressions. L'élément <import> contient un type d'expression particulier qui spécifie les modules externes (classes Java, par exemple) à importer en vue de les utiliser dans d'autres expressions au sein de règles. Une importation peut être définie au niveau du jeu de règles ou d'un bloc de règles.

L'élément <import> suivant contient une expression, rédigée en langage de programmation Java, qui importe la classe StaticHelper et la classe Queue, référençables à partir d'autres expressions :
<import expressionLanguage="java">
	import com.ibm.act.sample.StaticHelper;
	import com.ibm.act.test.Queue;
</import>

Bien que l'utilisation d'un nom de classe complet ne soit pas obligatoire dans l'instruction d'importation, vous devriez en spécifier un pour éviter d'allonger la durée de la compilation. Par exemple, la classe Java devrait être définie en tant que com.ibm.act.sample.StaticHelper, plutôt que com.ibm.act.sample.* ou com.ibm.act.*.

Accès à une méthode statique

L'exemple suivant indique comment une expression contenue dans une action de réponse à la règle fait référence à la classe StaticHelper après son importation :
<onDetection>
	<action expressionLanguage="java">
		StaticHelper.pageAdministrator("Too many login attempts for " + act_event.getAttribute("userID"));
	</action>
</onDetection>

Accès à une méthode d'instanciation pour un objet

L'exemple suivant indique comment une expression contenue dans une action de réponse à la règle fait référence à la classe Queue après son importation. Dans cet exemple, un objet externe dont le nom est OutputQueueOne et le type est Queue, est obtenu et utilisé pour placer un événement dans une file d'attente spécifique.
<onDetection>
	<action expressionLanguage="java">
		Queue myQueue = (Queue)act_lib.getExternalContext("OutputQueueOne");
		myQueue.enqueue(act_event);
	</action>
</onDetection>