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

XMLRAD Discussion :

Variable d'environnement


Sujet :

XMLRAD

  1. #1
    EJ
    EJ est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 84
    Par défaut Variable d'environnement
    C'est encore moi... ^_~
    Bon alors voilà, comme on n'est rien que des feignants d'informaticiens, on essaye au maximum d'avoir des choses en raccourcis: les requêtes réutilisées sont importées, les infos réaffichées sont en template etc.
    Maintenant je voudrais faire encore "pire"
    J'ai un service qui change une donnée dans une table: je saisis dans une fenêtre, puis ça envoie un service aveugle qui update. Ensuite le service redirige sur une fenêtre de confirmation.
    maintenant je voudrais appeler le service aveugle depuis une autre fenêtre (facile) mais je veux qu'il redirige ailleurs: on va se le faire en jscript (je vois pas comment d'autre.)
    Donc en fait je cherche la variable d'environnement "page précédente" pour renvoyer systématiquement sur la page où était l"utilisateur avant de changer sa donnée.

    J'ai rien trouvé, et pourtant y'en a des XMLC_Params...

  2. #2
    Membre confirmé
    Inscrit en
    Novembre 2002
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 243
    Par défaut
    Tu peux peut-être te servir de Request.Referer

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2003
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 214
    Par défaut
    Ou bien en affectant à la valeur de contexte NextAction le nom de la prochaine fenêtre à afficher ...

    Context.Values['NextAction'] := 'MAFENETRE'

  4. #4
    EJ
    EJ est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 84
    Par défaut
    Hum excusez mon ignorance, mais après une petite recherche, request.referer semble être du php... Ca se fait en js aussi? Parce que je ne me vois pas trop ajouter du php dans mon xsl...

    Quand à la next action, j'ai dit que je voulais, à partir du même service, appeler soit une fenêtre, soit une autre, or next action c'est une fenêtre appelée après le service et c'est tout, me semble-t-il.

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2003
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 214
    Par défaut
    Hum excusez mon ignorance, mais après une petite recherche, request.referer semble être du php... Ca se fait en js aussi? Parce que je ne me vois pas trop ajouter du php dans mon xsl...
    Javascript s'appuie sur un certain nombre d'objets (comme PHP) reliés à des caractéristiques de la fenêtre de navigateur. Pour les ajouter dans ton xsl, ton code doit être relié à un évènement de ta fenêtre de navigateur (onclic, onload, ....)

    Quand à la next action, j'ai dit que je voulais, à partir du même service, appeler soit une fenêtre, soit une autre, or next action c'est une fenêtre appelée après le service et c'est tout, me semble-t-il.
    Ok, un service n'appelle QUE la fenêtre dont le nom est contenu dans NextAction. Mais le contenu de Nextaction peut être modifié dynamiquement, donc tu peux passer un paramètre différent.

    Consiédrons une fenetre A et une fenêtre B qui doivent appeler un service C qui doit appeler soit une fenetre D soit une fenetre E

    si tu tapes http:\\madllbin\madll\ServiceC?NextAction=FenetreD
    ou http:\\madllbin\madll\ServiceC?NextAction=FenetreE

    Dans ce cas là, tu as bien un seul service C, et en fonction de NextAction, tu est redirigé sur la fenêtre D ou E

    Est-ce clair ??

  6. #6
    EJ
    EJ est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 84
    Par défaut
    Waow bravo pour la réactivité

    Oui, effectivement je comprends ce que tu veux dire.
    Mais le problème, c'est que je veux:
    Si A appelle C, C appelle A
    Si B appelle C, C appelle B
    Or dans ton exemple comment je peux prévoir à l'avance? Dans ce que tu présentes, je vois 2 boutons type submit dans C => retourner à A et retourner à B, mais j'aurais voulu que ça soit transparent pour l'utilisateur...
    En plus c'est idiot ce que je dis, de toute façon il n'y a pas de bouton pour quitter la fenêtre, puisque je suis dans un service aveugle...

  7. #7
    Membre confirmé
    Inscrit en
    Novembre 2002
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 243
    Par défaut
    Pour request.referer tu fais MonServiceAppelant = Context.GetValue('Request.Referer'). Et oui c'est dans le context comme pas mal de chose.
    Si tu peux faire planter ton application, tu aura un log et tu verras ce qui était dans le context à ce moment là

  8. #8
    Membre confirmé
    Inscrit en
    Janvier 2003
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 214
    Par défaut
    Attention, je parle du 'NextAction' !! Cette valeur de contexte est utilisée dans le FrameWork. Tu n'as rien à faire de plus que d'initialiser cette valeur de contexte et automatique ton appli lancera le service du nextaction.
    Donc, pas de code supplémentaire à faire ....

  9. #9
    EJ
    EJ est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 84
    Par défaut
    Ok je commence à voir un peu le truc.
    Bon après 2 ou 3 problèmes bien bêtes (Hé il exécute pas mon code??? Ok faudrait peut-être enlever le symbole commentaire... )
    J'en suis là:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function MonServiceAveugle_AfterXMLService(XMLService)
    {
      if (Context.GetValue("Request.Referer") == "NomFenêtre1") 
        Context.Values['NextAction'] := "NomFenêtre1";
      if (Context.GetValue("Request.Referer") == "NomFenêtre2") 
        Context.Values['NextAction'] := "NomFenêtre2";
    }
    Est-ce que c'est bien comme ça qu'il faut s'y prendre?
    Parce que ça ne fonctionne pas: il m'affiche un xml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      <?xml version="1.0" encoding="ISO-8859-15" ?> 
    - <document>
      <Params /> 
    - <Aliases>
      <AnonymatDLL>/ProjectsBin/Anonymat/Bin/Anonymat.dll/</AnonymatDLL> 
      <XMLRADDLL>/XMLRADBin/XMLRAD.dll/</XMLRADDLL> 
      </Aliases>
      </document>
    Et je ne sais même pas d'où sort ce xml (de quel service)?

    ...

  10. #10
    EJ
    EJ est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 84
    Par défaut
    Citation Envoyé par rgarnier
    Attention, je parle du 'NextAction' !! Cette valeur de contexte est utilisée dans le FrameWork. Tu n'as rien à faire de plus que d'initialiser cette valeur de contexte et automatique ton appli lancera le service du nextaction.
    Donc, pas de code supplémentaire à faire ....
    Heu... Tu me la refais en francais s'il te plait?
    Le framework je ne sais même pas ce que c'est: je suis allée trainer dans l'appendice 9 (http://xmlrad.com/Manual/Appendix09/) et j'ai trouvé des mots réservés, ok mais bon l'endroit où aller chercher ces mots...?

  11. #11
    Membre confirmé
    Inscrit en
    Novembre 2002
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 243
    Par défaut
    Le framework c'est tout ce qui fait que tu peux développer des applis avec XMLRAD. Dans le répertoire e-delos\XMLComponents\Source tu as un certain nombre de fichiers pascal qui constituent le framework.

    Pour ton code ça semble correct. As tu essayer de le mettre dans before ou after XMLGRAM ?

  12. #12
    EJ
    EJ est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 84
    Par défaut
    Heu si je fais before XMLGRAM il ne va pas executer mon service aveugle, puisque dans ce service j'ai juste un XMLGRAM...?
    J'ai mis en after XMLGRAM, et alors là c'est du fun de chez fun:
    Une erreur est intervenue, elle est detaillée ci-dessous:
    Il ne reste plus de résultats
    J'ai vérifié que j'appelais bien le service depuis mafenêtre2...

  13. #13
    Membre confirmé
    Inscrit en
    Novembre 2002
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 243
    Par défaut
    Pour que le xmlgram ne soit pas exécuté il faut faire Skip. Le fait de renseigner NextAction ne va pas bloquer l'exécution du xmlgram mais simplement renseigner le framework sur l'action à exécuter lorsque le service aura été traité. As tu vérifié le valeur de Request.Referer ? Ton traitement est juste mais que se passe-t-il si par hasard Request.Referer n'est pas l'une de tes fenetres ?

  14. #14
    EJ
    EJ est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 84
    Par défaut
    Ok pour le skip.
    En fait, en théorie il me semblait que le service aveugle m'affichait un xml, enfin c'est ce que j'avais pu constater avant de renseigner nextAction, donc si Request.Refere valait autre chose, il devrait me renvoyer mon xml, pas une erreur? Enfin je vais faire un else pour être sûre

    edit: Ok tu avais raison, effectivement il m'envoie toujours la valeur par défaut.
    D'où ma question: est-ce que vous êtes bien sur de votre Request.referer, parce qu'apparemment il ne contient pas le nom de ma fenêtre, ou alors j'ai raté une étape...

    Et sinon pour les archives, le code exact est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function MonServiceAveugle_AfterXMLService(XMLService)
    {
    if (Context.GetValue("Request.Referer") == "Maform1") 
        Context.SetValue("NextAction","Maform1") ;
      if (Context.GetValue("Request.Referer") == "Maform2") 
        Context.SetValue("NextAction","Maform2")
      else Context.SetValue("NextAction","Maform3"); 
    }

  15. #15
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 284
    Par défaut
    Je pense qu'on peut faire ca par xsl vite fait, sans avoir a faire des tests sur le referer, ce qui est un peu compliqué et pas très sûr. En plus, faut taper du code, beurkbeurk

    Dans tes formulaires, il suffit de rajouter un champ style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <form action="ServiceQui">
      <input type="hidden" name="NextAction" value="{/document/XMLC_Params/XMLC_Action}" />
      ...
    </form>
    L'élément XMLC_Action contient le nom du XMLService courrant, celui sur lequel se trouve actuellement l'utilisateur.
    Lorsque celui-ci va valider son <form>, il appellera le service aveugle (disons business service) en lui passant dans le champ NextAction le nom du service depuis lequel il vient. Il sera donc redirigé directement sur ce formulaire là.

    Au passage, il n'est necessaire de passer ce champ NextAction que lorsque tu veux rediriger vers un autre formulaire que celui déclaré par défaut dans ton business service.

    Tu peux faire la meme chose avec un simple lien hypertexte : il suffit de passer le parametre directement dans l'URL appellée, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <a href="{/document/Aliases/Project1DLL}ServiceAveugle">test normal</a>
    <a href="{/document/Aliases/Project1DLL}ServiceAveugle?NextAction=Ping">test redirection</a>
    "Ping" est une action contenue dans toutes les appli XMLRAD qui renvoie simplement PONG, pour tester que l'appli se charge bien.
    Avec cet exemple, tu verras qu'en cliquant sur le premier lien, tu reviens sur la NextAction par défaut (celle configurée dans XMLRAD pour le service ServiceAveugle) et qu'en cliquant sur le 2eme lien, tu reviendras sur le service Ping.

  16. #16
    EJ
    EJ est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 84
    Par défaut
    Heu attends j'ai dû mal m'exprimer.
    C'est un service aveugle qui doit rediriger sur A ou B, donc je n'ai pas de xsl...
    La redirection sur le service aveugle, c'est effectivement un lien hypertexte. Pour passer de l'aveugle à la form A, c'est le NextAction du service.
    Or maintenant j'appelle le service aveugle depuis A ou B et donc je voudrais que ce service aveugle renvoie sur A ou B selon la provenance.

    Tes explications étaient claires au niveau du principe, mais sans xsl je ne vois pas comment faire...

  17. #17
    RDM
    RDM est déconnecté
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Par défaut
    c'est dans le XSL de la form de départ qu'il faut que tu le fasses.
    la form de départ appelle alors sont service "aveugle" (= BusinessService).
    une fois executé ce XMLService, le NextAction est alors pris et on revient sur la form appelante.
    si ce n'est pas ca redéfini de facon plus clair ton problème. ( en décomposant bien les étapes)

  18. #18
    EJ
    EJ est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 84
    Par défaut
    Ok tu veux dire que je dois dire à ma form aveugle de revenir sur ma form d'appel?
    Si c'est ça, ben c'est là que je suis embêtée: je ne sais pas quelle est la form de départ, puisque c'est soit A, soit B qui a appelé le service aveugle C...

  19. #19
    Membre averti
    Inscrit en
    Janvier 2003
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 18
    Par défaut
    Bonjour EJ,

    Mais le problème, c'est que je veux:
    Si A appelle C, C appelle A
    Si B appelle C, C appelle B
    la réponse tu l'as dans ce que t'a dit nicolas.cogi.

    Pour toi A et B représentent des fiches disposant de formulaire. Dans ces 2 formulaires met en place un hidden comme proposé par nicolas.cogi

    <form action="ServiceAveugle">
    <input type="hidden" name="NextAction" value="{/document/XMLC_Params/XMLC_Action}" />
    ...
    </form>
    ensuite que ce soit A ou B qui appelle ServiceAveugle, chacun lui fournira son retour vers lui-même.

    bon test

    delicatessen2

  20. #20
    EJ
    EJ est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 84
    Par défaut
    Oui en fait je n'avais pas très bien compris, mais j'ai eu des éclaircissements depuis.
    Merci néanmoins pour ta réponse qui finit de régler le problème...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [langage] Création de variable d'environnements
    Par Smaugg dans le forum Langage
    Réponses: 20
    Dernier message: 26/04/2004, 09h32
  2. [BES] Création d'une variable d'environnement
    Par NGI80 dans le forum Autres
    Réponses: 2
    Dernier message: 17/10/2002, 07h31
  3. nom de fichier et variables d'environnement
    Par joebarthib dans le forum Langage
    Réponses: 2
    Dernier message: 18/07/2002, 15h21
  4. Réponses: 4
    Dernier message: 18/07/2002, 13h32

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