V.2 Les composants du formalisme CATN
Un CATN représente une tâche que doit
exécuter un agent jouant un rôle spécifique. Un agent peut
exécuter simultanément plusieurs CATN.
Les éléments qui composent un CATN sont :
42
les arcs d'une transition AND doivent avoir pour origine le
même état tout en ayant pour destination un autre état
également unique Graphiquement représenté par un arc au
trait continu connectant deux états, chaque arc appartient à un
des types suivants :
- Interactions non terminales18,
lesquelles relient deux arcs de type CATN
(de deux CATN différents). Pour ce type d'interaction,
il n'y a pas d'échange explicite de messages : ils servent à
indiquer que lors de l'exécution des deux CATN inter-reliés il y
aura, éventuellement, échange de messages entre eux.
- Interactions terminales19, lesquelles
relient un arc de type CATNMessageSender à un arc
CATNMessageReceiver (de deux CATN différents).
V.4 Exemple de CATN : Offre de service
L'exemple de CATN que nous proposons ici (Voir FIG 09)
décrit un protocole entre un agent demandeur et 0 ou plusieurs
agents fournisseurs de service. Il met en oeuvre des sous-CATN, l'envoi de
message par broadcast (diffusion) et l'envoi de message à un
agent particulier.
Application .catn
Envoi msg Request!
Envoi msg
Personne n'offre un service?
3 4
Envoi msg éxecussion du service
Reçoi msg Informe?
Timer?
Jump!
1 2
Message exécution Service
Request
Inform Message
Reçoit msg exécu tion service
Timer= true? Jump
5 6 7 8 9
Reçoit msg Request?
Envoi msg Inform!
Exécution service
serviceProviderListener.catn
FIG 09: exemple de graphe CATN
Message
Timer? Jump!
Timer=-1 ? Jump!
18 L'arc représentant ce type d'interaction sera
hachuré, avec un flèche à une seule
extrémité lorsque l'envoi des messages ne pourra se faire que
dans un sens, avec deux flèches dans le cas contraire.
19 L'arc représentant ce type d'interaction sera plein et
unidirectionnel.
44
Le comportement attendu du système est le suivant :
1. un message request est
broadcasté (diffusé) par l'agent exécutant le CATN
applicant. catn;
2. les agents exécutant le CATN
serviceProviderListener.catn calculent alors le coût du service, puis
envoient un message Inform contenant ce coût au demandeur ;
3. le demandeur attend 1 seconde pour recevoir
un message, s'il reçoit un message dans cet intervalle il attend une
seconde supplémentaire ;
4. une fois qu'il a reçu les messages il envoi un message
LaunchService à l'agent proposant le coût le plus faible ;
5. s'il n'a reçu aucun message au bout d'une seconde il
affichera un message ad hoc;
6. l'agent recevant le message LaunchService va exécuter
ce service ;
7. les autres agents attendront 10 secondes puis
afficheront un message indiquant qu'ils n'ont pas été
sélectionnés.
|