IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Appel de script dynamique et partage de variable


Sujet :

Java

  1. #1
    Membre régulier Avatar de fatypunk
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2007
    Messages : 71
    Points : 74
    Points
    74
    Par défaut Appel de script dynamique et partage de variable
    Bonjour,

    J'aimerais appeler un script dynamique depuis un appli java et je bute sur le choix de langage de script (java exécuté, ruby, groovy, ...). Pour expliciter plus clairement mon problème je le simplifie à l'extrême :

    Tout d'abord j'ai des fichiers XML de configuration (défini par un shema xml) qui ressemble à ça (en plus complexe), et qui sont modifiable pour une installation donnée de l'application :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <resultat>
        <variable id="res1" type="integer"/>
        <variable id="res2" type="integer"/>
    </resultat>
    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
    <calcul>
        <variable id="i1" type="integer"/>
        <variable id="i2" type="integer"/>
        <variable id="b1" type="boolean"/>
        <script>
            if(<variable id="b1"/>) {
                <resultat id="res1"/> = <variable id="i1"/> + <variable id="i2"/>;
                <resultat id="res2"/> = 3.14; 
            } else {
                int i = <variable id="i1"/>++;
                <resultat id="res1"/> = <variable id="i2"/>--;
                <resultat id="res2"/> = i + <variable id="i2"/>;
            }
        </script>
    </calcul>
    L'intégrité des valeurs des attributs "id" sont garanties par des clés relationnelles définies dans le shema XML. Pour le script évidemment sa forme dépendra du langage choisi...

    Ensuite mon appli java génère un formulaire Swing en fonction des variables demandées dans le calcul choisi par l'utilisateur. Lorsque celui-ci lance la calcul l'appli lance le script et doit pouvoir utiliser les valeurs fournies dans les variables de résultats...

    Pour ce qui est des variables de calcul l'appli java peut faire des "replace" des balises par les valeurs entrées par l'utilisateur avant de lancer le script. Mais les variables de résultat, l'appli doit pouvoir en récupérer la valeur...

    Si quelqu'un a une idée de la meilleure manière de procéder je lui serait extrêmement reconnaissant de m'entretenir de ses idées...
    Développeur Java SE, Java EE (EJB3)
    IDE : Netbeans 6.5 / Serveur d'application : Glassfish v2.1 / OS : Ubuntu 8.10 Intrepid Ibex et CentOS 5
    Historique : GWBasic, Turbo Pascal (beaucoup), Visual Basic, C (un peu), C++ (beaucoup), Assembleur (6800 et x86 / un peu), Java, Smalltalk (un peu), Lisp (un peu), Prolog (un peu), PHP, Ruby (un peu), et retour à Java (beaucoup).

    Pas de questions techniques par MP s'il vous plait !

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    t'as essayé de travailler en beanshell?

    avec ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Integer res1;
    Integer res2;
    //
    // le script inséré ici
    //
    Object[] resultat = new Object[]{res1,res2};
    return resultat;

  3. #3
    Membre régulier Avatar de fatypunk
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2007
    Messages : 71
    Points : 74
    Points
    74
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    t'as essayé de travailler en beanshell?
    Non, je ne connaissait pas mais ça a l'air intéressant ! En fait ça ressemble bigrement à ce que je cherchais...

    Bon dans ton exemple les variables res1 et res2 sont déclarées statiquement (très mauvais terme qui prête à confusion mais dans le sens opposé à dynamiquement...). En fait le nombre et le type des variables de sorties n'est pas défini d'avance. Leur utilisation se borne à leur affichage dans un jTable construit dynamiquement en fonction de la définition en XML et à leur sauvegarde dans un autre fichier XML (dans une appli légère utilisant de très petits ensembles de données, je préfère l'XML à un moteur de DB, car fusse-t-il light... le moteur de DB requiert une installation, alors que l'utilisation de l'XML ne requiert qu'une API (JAXB love...)).

    Mais bon je devrais trouver une solution... en fait un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            Map<String, Object> resultMap = new TreeMap<String, Object>();
     
            // TODO : appel du script, insertion des resultats (key=id de la variable et value=valeur calculée)
     
            for(Map.Entry<String, Object> result : resultMap.entrySet()) {
                System.out.println("Valeur de " + result.getKey() + " = " + result.getValue().toString());
            }
    Développeur Java SE, Java EE (EJB3)
    IDE : Netbeans 6.5 / Serveur d'application : Glassfish v2.1 / OS : Ubuntu 8.10 Intrepid Ibex et CentOS 5
    Historique : GWBasic, Turbo Pascal (beaucoup), Visual Basic, C (un peu), C++ (beaucoup), Assembleur (6800 et x86 / un peu), Java, Smalltalk (un peu), Lisp (un peu), Prolog (un peu), PHP, Ruby (un peu), et retour à Java (beaucoup).

    Pas de questions techniques par MP s'il vous plait !

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    dans mon exemple, le bout qui n'est pas derrirère "//" est ce qui doit être généré dynamiquement, en fonctions des caractéristiques de ton xml (où tu défini visiblement le nombre et le nom des variables de retour), la partie avec // quand a elle, c'est là que t'injecte le script du xml. Un fois que t'as constitué le tout, tu le balance de bsh.

  5. #5
    Membre régulier Avatar de fatypunk
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2007
    Messages : 71
    Points : 74
    Points
    74
    Par défaut
    Après documentation et tests les Beanshell se révèle la solution idéale pour ce que j'ai à faire !!

    Merci beaucoup
    Développeur Java SE, Java EE (EJB3)
    IDE : Netbeans 6.5 / Serveur d'application : Glassfish v2.1 / OS : Ubuntu 8.10 Intrepid Ibex et CentOS 5
    Historique : GWBasic, Turbo Pascal (beaucoup), Visual Basic, C (un peu), C++ (beaucoup), Assembleur (6800 et x86 / un peu), Java, Smalltalk (un peu), Lisp (un peu), Prolog (un peu), PHP, Ruby (un peu), et retour à Java (beaucoup).

    Pas de questions techniques par MP s'il vous plait !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 16
    Dernier message: 23/05/2014, 10h46
  2. appel de script php a distante avec envoie de variable
    Par xtaze dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/05/2006, 15h53
  3. Réponses: 6
    Dernier message: 23/05/2005, 08h33
  4. Appeler une méthode dynamiquement
    Par doof dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 03/01/2005, 23h15
  5. [DLL] partage de variables globales
    Par tut dans le forum MFC
    Réponses: 5
    Dernier message: 29/02/2004, 10h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo