Date: Wed, 26 Mar 2003 18:39:39 -0500 (EST)

From: Houcine Ben Ameur <benameho@IRO.UMontreal.CA>
To: gift6802@IRO.UMontreal.CA
Subject: Modification et proposition finale


Bonjour,


Conformement aux  directives de M. Vaucher, je resoumet ma proposition 
comme une modification du protocole de Assia que je trouve simple et 
efficace.


Une boucle d'interaction s'effectue en deux etapes :

1/ demande de prix de vente
2/ proposition de prix et quantite pour achat


1/ Demande de prix de vente 
----------------------------

Resto --> QUERY_REF() --> Grossiste


Grossiste --> INFORM(produit, prix) --> Resto



2/ Proposition d'achat
----------------------------

Resto --> PROPOSE(produit, quantite, prix) --> Grossiste


Grossiste --> ACCEPT_PROPOSAL(produit, quantite, prix) --> Resto
ou
Grossiste --> REJECT_PROPOSAL (raison) --> Resto



C'est tout.


Le resto est l'initiateur, il peut iterer entre 1/ et 2/ autant qu'il 
veut.

Le grossiste traite deux types de msg : QUERY_REF et PROPOSITION
1/ il informe le resto de son prix actuel et du produit qu'il vend
2/ il accepte ou refuse une proposition d'achat 

En cas de refus, le grossiste informe le Resto de la raison de son refus : 
quantite indisponible, ou prix trop bas.

Le resto peut alors adapter sa proposition et en refaire une nouvelle 
(etape 2/). Ou redemander l'etape 1/ ...

Aucune obligation de reponse des grossistes n'est essentielle. C'est au 
Resto de se debrouiller en cas de non reponse : contacte un autre 
grossiste, ou refaire une proposition.


Je pense que c'est un protocole assez simple et efficace.


Une fois le resto a recu un ACCEPT_PROPOSAL, il peut (ou non) decider 
d'entamer une transaction. Il envoie alors un message au controleur avec 
copie au Grossiste :

Resto --> REQUEST(transfert) --> Controleur

(voir enonce du TP4 pour les details de ce message)

Et enfin le Grossiste repond par AGREE ou REFUSE au Controleur et au Resto 
(voir details dans enonce du TP4). Le grossiste est oblige de repondre a 
un request.
On devrait ajouter la raison en cas de refus (de meme que pour 
REJECT_PROPOSAL):

Grossiste --> REFUSE(raison)


Notez que dans le protocole propose, seul un Resto peut initier une 
transaction. (c'est plus simplecomme ca).


---------------------

ONTOLOGIE
---------------------


- Produit : string [viande, legume, fruit]  (tel que defini dans enonce 
du TP4)

- prix : integer (entier pour des raison de simplification)

- quantite : integer

- raison : string [quantite, prix]
la raison du refus indique si c'est a cause d'une quantite demandee 
indisponible, ou a cause d'un prix trop bas.