Surveiller l’activité des agents

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 :

public AgentLogger(ServerAU sau, int option)

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 :

public void observeAgent(int agent_id)

ou encore pour monitorer tous les agents gérer par le serveur avec sa méthode :

public void observeAllAgent()

Par la suite, on peut désactiver ces surveillances à l’aide des méthodes :

public void unobserveAgent(int agent_id)

public void unobserveAllAgent()

On peut également modifier le réglage des informations à observer avec la méthode :

public void setOption(int new_option)

 
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