You are not logged in.
Pages: 1
Bonjour,
Je suis entrain de faire communiquer deux agents via ce scénario :
-L'agent A va demander le prix d'un article au prés de l'agent B (le 1er message)
-L'agent B va envoyer ce prix là stocké dans un fichier excel à l'agent A
-L'agent A va envoyer un 2ème message à l'agent B ( le deuxiéme message)
-L'agent B doit enregistrer les données que contient le deuxième message reçu de l'agent A.
Le problème c'est que chacun de ces messages reçus par l'agent B nécessite un traitement spécifique,je sais pas qu'est ce que je dois écrire au niveau de handleMessage.
Ci-dessous vous trouverez le code du handle de l'agent B:
void handleMessage(StringMessage m)
{
println("message: " + m.getString() + " from " + m.getSender());
Reply(m); // réponse pour le premier message//
Read(m); // traitement du deuxième message//
}
Je sais pas qu'est ce je dois définir exactement au niveau du handle pour assurer le bon traitement des messages sachant que l'interface de l'agent B disparaît ( l'agent se tue) dès que je lance la simulation.
Offline
Bonjour,
Difficile à dire, il faudrait plus de code pour voir ce qui peut clocher, n'hésitez pas à en poster plus.
Offline
Est-ce qu'il y a une méthode qui permet de traiter tous les messages reçus ,et non seulement le dernier message?
une boucle ou une méthode qui permet de parcourir la boîte de message de l'agent?
Offline
pas de méthode spécifique car il existe des centaines de manières de le faire.
Vous pouvez par exemple faire quelque chose comme cela :
Message m = nextMessage();
while(m != null){
doSomeWorkOnMessage(m);
m = nextMessage();
}
Cela va appliquer le traitement doSomeWorkOnMessage sur tous les messages présents dans la boîte aux lettres jusqu'à ce qu'elle soit vide.
Offline
Bonjour ,
j'ai fait ce que vous m'avez dit mais cette fois-ci ,l'interface de l'agent n'affiche qu'un seul message ce qui n'était pas le cas avant d'introduire le nextMessage() . Mise à part le fichier de stockage(excel) qui ne s'ouvre plus (il m'affichait un message d'erreur disant que ce fichier est peut être endommagé ou son extension n'est plus la même d'ou c'est impossible de l'ouvrir).
Sachant que je suis entrain de créer une copie 'Copy' sur le fichier dejà crée 'workbook' pour que je puisse le modifier par la suite et ajouter de nouvelles cellules.
Voilà le code de la fonction :
void Read(StringMessage m)
{
WritableWorkbook copy=null ;
try {
try
//
Workbook workbook= Workbook.getWorkbook(new File("C:\\madkit4.2.0\\CarnetOrdres.xls"));
Sheet sheet = workbook.getSheet(0);
copy = Workbook.createWorkbook(new File("C:\\madkit4.2.0\\Copy.xls"), workbook);
WritableSheet sheet4 = copy.getSheet(0);
String IdInvest= (m.getSender().toString());
String Prix =m.getString();
Label label = new Label(0,0, "Prix");
sheet4.addCell(label);
Label id = new Label(1, 1, "IDinvest");
sheet4.addCell(id);
while(m!=null)
{
for(int j=0; j < 20; j++){
Label label2 = new Label(0,j,Prix);
sheet4.addCell(label2);
Label address = new Label(1, j,IdInvest);
sheet4.addCell(address);
}
}
copy.write();
m = (StringMessage)nextMessage();
}
/* On ecrit le classeur */
catch (IOException e) {
e.printStackTrace();
}
catch (BiffException e) {
e.printStackTrace();
}
catch (WriteException e) {
e.printStackTrace();
}
}
Offline
Le problème d'ouverture de fichier est résolu mais ce dernier affiche toujours un seul message et non pas la totalité des messages reçus.
Help please
Last edited by hiba (2013-07-10 18:03:31)
Offline
Est-ce qu'il y a une autre méthode permettant le parcours de la messagerie à pars nextMessage() parce que celle-là me retourne toujours un seul message!!
Le fichier excel stocke le même message plusieurs fois donc ça se voit qu'il fait pas le parcours de toute la boîte.
Merci pour votre aide.
Offline
Bonjour,
nextMessage renvoie toujours un seul message (qui est enlevé de la boîte et qu n'est donc jamais le même), c'est normal puisque c'est la spécification de cette méthode, d'où la boucle pour parcourir tous les messages jusqu'à ce qu'il n'y en ait plus.
Je vous conseille de faire un test uniquement sur la boucle, en dehors de votre projet, afin de bien maîtriser son fonctionnement. Peut être que votre problème provient du fait que l'expéditeur envoie toujours le même message par exemple.
Offline
Bonjour ,
En fait l'interface de l'agent récepteur affiche tous les messages reçus suivis des adresses de tous les émetteurs mais le fichier excel stocke uniquement le dernier message et l'adresse de son émetteur 20 fois.!!!
Offline
Pages: 1