Comme nous l’avons vu dans le tutoriel précédent, l’état d’un agent change en fonction des commandes d’exécutions (lancer, mettre en pause, relancer, …) qu’on lui applique. Aussi, il peut parfois être utile de suivre ces changements d’état afin de vérifier si les choses se passent comme les avait prévu. On appel cela : monitorer (ou surveiller) l’activité d’un agent.
La librairie SKUAD dispose d’un utilitaire spécifiquement dédié à cette tâche de surveillance. Il s’agit de la classe AgentLogger (package: skuad.agentu.util). Un objet de cet classe permet d’observer un ou plusieurs agents en affichant dans la console système une phrase informant de chaque changement subit par l’agent. Dans ce petit tutoriel nous allons apprendre à utiliser cette classe.
Attention : pour ce tutoriel vous devez utiliser une librairie SKUAD de version v0.1_b02 ou supérieure !
Si besoin suivez ce tutoriel : Mettre à jour la librairie SKUAD.
1 - Créer un objet AgentLogger
Pour créer une instance de la classe AgentLogger il faut utiliser le constructeur suivant :
L’argument sau est le serveur sur lequel les agents seront observés, et l’argument option permet de spécifier les informations concernés par cette observation (ceux qui feront l’objet d’un affichage dans la console).
Pour le moment il existe deux types d’informations observables :
- AgentLogger.STATE : qui est la valeur de l’option qui permet d’indiquer qu’il faut observer les changements d’état de l’agent.
- AgentLogger.LOG : qui est la valeur de l’option qui permet d’indiquer qu’il faut observer les messages logs produits par l’agent
Nous verrons prochainement ce que sont les messages logs produit par l’agent, pour le moment sachez simplement qu’il s’agit de messages d’information que peut produire l’agent (un peu à l’image des textes que nous envoyons sur la console avec la fonction Java : System.out.println(…), sauf que là les messages ne sont pas dirigés vers la console système).
L’argument option peut donc prendre : l’une des valeurs AgentLogger.STATE ou AgentLogger.LOG, pour obtenir l’information d’un seul de ces deux types; ou prendre les deux valeurs à la fois à l’aide de l’opérateur OR (symbole | en Java) en écrivant : AgentLogger.STATE | AgentLogger.LOG.
2 - Monitorer un agent
Une fois que l’objet AgentLogger est créé, on peut l’utiliser pour monitorer un agent à l’aide de sa méthode :
ou encore pour monitorer tous les agents gérer par le serveur avec sa méthode :
Par la suite, on peut désactiver ces surveillances à l’aide des méthodes :
public void unobserveAllAgent()
On peut également modifier le réglage des informations à observer avec la méthode :
3 - Mise en pratique
Reprenez la dernière version du code source de votre programme qui lance l’exécution de l’agent AgentHelloBye (tutoriel « Manipulation des agents/Gérer l’exécution d’un agent « ), et ajoutez les instructions nécessaires pour monitorer cet agent.
Lancez ensuite son exécution et observez attentivement les informations qui s’affichent dans la console.
A vous de jouer !
Une fois que vous avez réussi à écrire ce programme, ou si vous n’y parvenez pas, vous pouvez comparez votre code à la proposition de solution ci-dessous.
afficher la solution