Bonjour,
je présente mon petit problème:
je dois créer une classe java qui doit exécuter un script (que je dois créer aussi). J'utilise le moteur JavaScript Rhino. je précise que ça fait partie d'un gros projet déjà existant.
La classe java récupère une liste de pilotes. Après je parcoure la liste et pour chaque pilote je dois exécuter le script qui doit calculer le temps de vol de chaque pilote.
Voici le code java:
Le script doit récupérer pour chaque pilote la liste des vols qu'il a effectués, la date de début et la date de fin du vol. les méthodes getListFlights, getFlightBeginDate et getFlightEndDate se trouvent dans d'autres classes du projet que j'importe dans mon script :importClass(....);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 for (Pilote pilote : piloteList) { ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName("JavaScript"); try { engine.put("pilote", pilote); engine.eval(new FileReader("ScriptHcv.js")); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (ScriptException e) { e.printStackTrace(); } Invocable inv = (Invocable) engine; try { inv.invokeFunction("calculHcv", pilote); } catch (ScriptException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } }
Le script:
J'arrive à récupérer la liste des vols grâce à pilote.getListFlights(); mais j'ai une erreur quand j'appelle la méthode getFlightBeginDate et j'obtiens ce message d'erreur : Cannot find function getFlightBeginDate.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 function calculHcv(pilote){ var listFlights = pilote.getListFlights(); for (var flight in listFlights) { var beginDate = flight.getFlightBeginDate();
Donc j'ai conclu que je ne peux utiliser les méthodes java que pour les objets que j'exporte dans mon code JavaScript grâce à la méthode put, sauf que je sais plus comment m'y prendre dans ce cas pour effectuer le traitement demandé dans le script.
Sinon je précise aussi que j'ai pas de contraintes pour le choix du langage de script, donc si vous connaissez d'autres langages mieux adaptés à ce genre de traitement ça sera pas de refus
Partager