S3
M2
File F2
File F1
Agent 1
Lieu L1
Lieu L2
Illustration 86 : Exemple
de représentation d'un état
S3 = {disponible(L1), disponible(L2), abrite (L1,
F1), abrite (L2, F2), est_préparé(M2),
est_contenu(M2,F1), vide(F2), actif(1),
est_scruté(1,L1)}
Les actions
Les actions sont l'oeuvre d'opérateurs et sont
pré-conditionnées positivement ou négativement par un
état. Par exemple : « non (disponible (lieu A))»
signifie que si l `état du lieu A n'est pas disponible alors la
pré-condition est remplie et l'action peut se déclencher.
L'action est génératrice de changement d'état. Par
exemple, l'action « transmettre» peut provoquer le changement
d'état de la file d'attente de destination qui passe de
« vide » à l'état « non
vide ».
Les opérateurs
Un opérateur se défini par le quadruplet (nom,
pré-condition, faits à créer, faits à supprimer).
Par Exemple : « L'agent 2 sur le lieu X transmet le
Message M1 de la File F1 vers la file F2 du lieu Y» se
traduit en :
q Transmettre (2,X,M1,M2,F1,F2,Y)
q Precondition (precond) : actif(1), disponible(X),
disponible(Y), est_abrité(F1, X), Est_contenu(M1, F1)
q états généré : est_contenu(M1,
F2), non(est_contenu(M1, F1))
q états si retour arrière : est_contenu(M1,
F1), non(est_contenu(M1, F2))
Cette description permet d'entrevoir comment il va être
possible de gérer les retours arrières mais aussi de proposer des
solutions alternatives dans le cas où des pannes seraient
détectées (comme une indisponibilité d'un serveur
hébergeant un lieu par lequel les messages transitent). Un
opérateur est ensuite « encapsulé » de
façon ordrée avec d'autres opérateurs, dans ce qui est
appelé une méthode. Un nom et des pré-conditions viennent
compléter la description de cette dernière. Ainsi, pour illustrer
ce concept, la méthode « Transmettre un message M1 de F1
à F2 », ou autrement dit « Transmettre
(M1,F1,F2) », peut être exprimée de la manière
suivante :
-- transmet un message M1 de F1 à F2 (avec l'agent 1)
transmettre (M1,F1,F2)
precond: disponible(F1), est_contenu(M1,F1),
est_accessible(M1,F1), actif(1),
reduction: lit(1,M1,F1), transmet(1,M1,F2),
supprime(1,M1,F1)
La réduction définit la séquence
d'opérateurs à réaliser et permet d'imaginer les plans de
retour arrière en cas de panne. Cela nous renvoie aussi au concept de
processus composite d'OWL-S et à la nécessité d'une
coordination complète gérant les échecs.
|