• Aucun résultat trouvé

4 Architecture logicielle

4.3 ARSA : un protocole de coopération entre agents

4.3.1 Description du protocole ARSA

ARSAcomporte quatre étapes principales que nous détaillons dans cette section.

4.3.1.1 Annoncer (Advertize)

Elle constitue la première étape du protocole ARSA. Unagent service (appelons-le Ai) qui souhaite trouver une connexion, envoie un “message d’annonce” asynchrone en diffusion à tous les autresagents serviceprésents dans le moteurOCE. Le message d’annonce contient les informations suivantes :

- l’émetteur du message : la référence de l’agent service Ai; - la description du service géré parAi.

C’est une déclaration par laquelle Ai annonce aux autresagents serviceque son service est présent dans l’environnement ambiant et disponible pour une connexion. Ce processus est illustré à la figure4.4.

Cette étape est exécutée lorsque :

- Ai vient d’être créé : ceci correspond au cas où le service géré par Ai apparaît dans l’environnement ambiant ;

- Ai n’a reçu ni un message de réponse à son annonce, ni un message d’annonce compa-tible d’un autreagent servicependantqcycles agent ;

- Ain’a reçu aucune réponse à son message de sélection de la part des autresagents service pendant pcycles agent (cf. section4.3.1.3) ;

- Aivient d’être réveillé : ceci correspond au cas où le service géré parAiréapparaît dans l’environnement ambiant ;

- Ai se déconnecte de sa connexion en cours (Ai peut être soit l’initiateur de la décon-nexion soit celui qui la subit).

Figure 4.4 – Annoncer (Advertize) : l’agent service positionné à gauche envoie un message d’annonce en diffusion

4.3.1.2 Répondre (Reply)

Elle constitue la deuxième étape du protocoleARSA. Unagent service(appelons-le Aj) qui reçoit un ou plusieurs messages d’annonce, les analyse et ne garde que ceux dont la des-cription du service est compatible avec le service qu’il gère. Ensuite, pour chacun des mes-sages gardés, si Aj décide d’y répondre, il envoie un “message de réponse” asynchrone à l’émetteur du message ; sinon, il l’ignore. Ce processus est illustré par la figure4.5. Aj peut répondre à un ou à plusieurs messages d’annonce à des cycles agent différents.

Le message de réponse contient l’émetteur du message (la référence de l’agent service Aj) et le destinataire du message, la référence de l’agent serviceémetteur du message d’annonce (appelons-leAi). Il n’est pas nécessaire de renvoyer la description du service géré parAj.Ai n’a pas besoin de revérifier la comptabilité du service qu’il gère avec celui deAj: les agents d’OCEsont tous bienveillants et n’ont pas de comportement antinomique.

4.3.1.3 Sélectionner (Select)

Elle constitue la troisième étape du protocole ARSA. Un agent service(appelons-le Ai) qui s’est annoncé peut ne pas recevoir de messages de réponse ou en recevoir un ou plusieurs.

Si Ai reçoit un ou plusieurs messages de réponse, il les analyse et choisit de répondre positivement à l’un d’entre eux au plus en envoyant un “message de sélection” (cf. la fi-gure4.6) ; les autres sont ignorés (étape“a”dans la figure4.6).

Aicrée unagent bindercorrespondant (appelons-leBij) (étape“b”dans la figure4.6).Ai envoie à Aj un message de sélection synchrone (étape “c”dans la figure4.6). Ce message contient les informations suivantes :

Figure 4.5 – Répondre (Reply) : les 3agents servicepositionnés à droite répondent à deux des messages d’annonces ; 2agents serviceles suppriment car non compatibles

Figure 4.6 – Sélectionner (Select) : création de l’agent binderet envoi d’un message de sélection à l’agent servicesélectionné

- l’émetteur du message : la référence de l’agent service Ai; - le destinataire du message : la référence de l’agent service Aj; - l’agent binderqui va gérer cette connexion : la référence deBij.

Ensuite, Ai envoie à Bij un message de connexion (Bind message) (étape “d” dans la figure4.6). Ce message contient les informations suivantes :

- l’émetteur du message : la référence de l’agent service Ai; - le destinataire du message : la référence de l’agent binder Bij; - la description du service géré parAi.

Ai se met ensuite dans l’état en attente de la réponse de Aj (WAITING), c’est-à-dire Ai attend le message d’acceptation de connexion envoyé parAj.

L’algorithme4.2 résume le comportement de l’agent servicedans l’étape “Sélectionner”

Algorithme 4.2 :L’étape “Sélectionner” du protocoleARSApour l’agent service Ai

1 : parmi les différents messages de réponse reçus,Ai en peut en choisir un ; soitAj, l’émetteur du message choisi.

2 : Aicrée un agent binder correspondant (appelons-leBij).

3 : Aienvoie à Aj un message de sélection synchrone.

4 : Aienvoie àBij un message de connexion (Bindmessage).

5 : Aise met ensuite dans l’état en attente de la réponsedeAj (WAITING).

Après un délai d’attente fixe (pcycles agent), siAi ne reçoit aucune réponse deAjsuite à son message de sélection,Aise met dans l’étatnon connectéet reprend avec l’étape “An-noncer” (cf. section4.3.1.1). Ce mécanisme est mis en place pour éviter que Ai se retrouve en attente infinie de la réponse deAj.

4.3.1.4 Accepter (Agree)

Elle constitue la quatrième et dernière étape du protocoleARSA. Unagent service (appelons-leAj), qui reçoit un ou plusieurs messages de sélection à ses réponses, les analyse et choisit de répondre positivement à l’un d’eux au plus en envoyant un “message d’acceptation de connexion” (cf. la figure4.7).

Pour cela, Aj extrait tout d’abord du message de sélection choisi la référence de l’agent binder Bij(étape“a”dans la figure4.7). Supposons que l’émetteur de ce message de sélection est l’agent service Ai.Ajenvoie àAiun message d’acceptation de connexion synchrone (étape

“b”dans la figure4.7). Ce message contient les informations suivantes : - l’émetteur du message : la référence de l’agent service Aj;

- le destinataire du message : la référence de l’agent service Ai.

Figure 4.7 – Accepter (Agree) : l’agent servicesélectionné accepte la connexion en contactant l’agent servicequi l’a sélectionné et l’agent binder

Ensuite, Aj envoie à Bij un message de connexion (Bind message) (étape “c” dans la figure4.7). Ce message contient les informations suivantes :

- l’émetteur du message : la référence l’agent service Aj; - le destinataire du message : la référence de l’agent binder Bij; - la description du service géré parAj.

Enfin,Ajse met dans l’étaten attente du feedback de l’utilisateur(WAITING-FEEDBACK). À la réception du message d’acceptation de connexion deAj, Ai, se met à son tour dans l’état en attente du feedback de l’utilisateur(WAITING-FEEDBACK).

Algorithme 4.3 :L’étape “Accepter” du protocoleARSApour l’agent service Aj

1 : parmi les différents messages de sélection reçus,Ajen choisit un ; appelonsAi l’émetteur de ce message.

2 :Ajextrait du message de sélection choisi la référence de l’agent binderBij. 3 :Ajenvoie à Aiun message d’acceptation synchrone.

4 :Ajenvoie àBijun message spécial (Bindmessage).

5 :Ajse met ensuite dans l’étaten attente du feedback de l’utilisateur (WAITING-FEEDBACK).

4.3.2 Positionnement du protocole ARSA par rapport au protocole de réseau