utilisation de context.getValue dans ISIS
Bonjour, Après maintes tentatives d'utilisation de context.getValue dans une règle afin de récupérer des valeurs/TimeStep/Population définis dans une autre règle je viens lacer un appel au secours : Comment est-on sensés uriliser cette commande ? En ce qui concerne setValue on a dans l'API : setValue(String name, Object value) Permet de stocker une valeur en fonction d'une cle. Donc est-ce que ça ne permet de stocker qu'une valeur ou peut-on aussi stocker le nom d'une population ou un timestep ? Pour getValue on a : getValue(String name) Permet de recuperer une valeur prealablement stocker avec un setValue. Apparemment ça rend un "Object" ce qui tendrait à me faire dire qu'on peut stocker et retrouver n'importe quoi avec setValue et getValue et pas juste des valeurs, est-ce juste ? Autre question : Comment ISIS sait-il que le "Object" sorti par getValue est une "Population" ou un "TimeStep" ? Dans SiMatrix getVAlue est utilisé de la manière suivante : SiMatrix result = (SiMatrix) context.getValue(SiMatrix.class.getName()); ce qui ne semble pas tout à fait correspondre à ce qui est décrit dans la doc des API donc je suis un peu paumé... Il faut déjà que ISIS sache à quoi correspond "context", et apparemment le import fr.ifremer.isisfish.simulator.SimulationContext; au début ne suffit pas ? Il faut faire comme dans SiMatrix et rajouter protected SimulationContext context = null; ?? A quoi servent le (SiMatrix) avant context.get... et le SiMatrix au début de al ligne ? Help ? Loïc
Le 18/12/2012 12:06, Loic GASCHE a écrit :
Bonjour,
Après maintes tentatives d'utilisation de context.getValue dans une règle afin de récupérer des valeurs/TimeStep/Population définis dans une autre règle je viens lacer un appel au secours : Comment est-on sensés uriliser cette commande ?
En ce qui concerne setValue on a dans l'API : setValue(String name, Object value) Permet de stocker une valeur en fonction d'une cle. Donc est-ce que ça ne permet de stocker qu'une valeur ou peut-on aussi stocker le nom d'une population ou un timestep ?
Pour getValue on a : getValue(String name) Permet de recuperer une valeur prealablement stocker avec un setValue. Apparemment ça rend un "Object" ce qui tendrait à me faire dire qu'on peut stocker et retrouver n'importe quoi avec setValue et getValue et pas juste des valeurs, est-ce juste ?
Autre question : Comment ISIS sait-il que le "Object" sorti par getValue est une "Population" ou un "TimeStep" ? Il ne le sais pas justement, tu doit lui dire.
En gros, dans ta règle A: public preAction(SimulationContext context, TimeStep step, Metier metier) { context.putValue("myPop", population); } et dans ta règle B: public preAction(SimulationContext context, TimeStep step, Metier metier) { population = (Population)context.getValue("myPop"); } -- Éric Chatellier <chatellier@codelutin.com> Tel: 02.40.50.29.28 http://www.codelutin.com
participants (2)
-
Eric Chatellier -
Loic GASCHE