Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Outils > XMLRAD
XMLRAD Environnement de développement Web XML/XSL. Avant de poster -> F.A.Q XMLRAD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/06/2004, 16h01   #1
EJ
Nouveau Membre du Club
 
Inscription : mai 2004
Messages : 84
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 84
Points : 34
Points : 34
Envoyer un message via ICQ à EJ Envoyer un message via AIM à EJ Envoyer un message via MSN à EJ
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...
__________________
Il existe 10 catégories de gens.
Ceux qui comprennent le binaire et ceux qui ne le comprennent pas...
EJ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2004, 16h48   #2
Membre habitué
 
Inscription : novembre 2002
Messages : 243
Détails du profil
Informations forums :
Inscription : novembre 2002
Messages : 243
Points : 149
Points : 149
Tu peux peut-être te servir de Request.Referer
Pierre FORAZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2004, 17h19   #3
Membre régulier
 
Inscription : janvier 2003
Messages : 207
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 207
Points : 94
Points : 94
Envoyer un message via MSN à rgarnier
Ou bien en affectant à la valeur de contexte NextAction le nom de la prochaine fenêtre à afficher ...

Context.Values['NextAction'] := 'MAFENETRE'
__________________
Renaud
W2003 / XP /VISTA
SQL SERVER / ORACLE
ADO
rgarnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2004, 08h21   #4
EJ
Nouveau Membre du Club
 
Inscription : mai 2004
Messages : 84
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 84
Points : 34
Points : 34
Envoyer un message via ICQ à EJ Envoyer un message via AIM à EJ Envoyer un message via MSN à EJ
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.
__________________
Il existe 10 catégories de gens.
Ceux qui comprennent le binaire et ceux qui ne le comprennent pas...
EJ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2004, 08h47   #5
Membre régulier
 
Inscription : janvier 2003
Messages : 207
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 207
Points : 94
Points : 94
Envoyer un message via MSN à rgarnier
Citation:
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, ....)

Citation:
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 ??
__________________
Renaud
W2003 / XP /VISTA
SQL SERVER / ORACLE
ADO
rgarnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2004, 08h55   #6
EJ
Nouveau Membre du Club
 
Inscription : mai 2004
Messages : 84
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 84
Points : 34
Points : 34
Envoyer un message via ICQ à EJ Envoyer un message via AIM à EJ Envoyer un message via MSN à EJ
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...
__________________
Il existe 10 catégories de gens.
Ceux qui comprennent le binaire et ceux qui ne le comprennent pas...
EJ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2004, 09h13   #7
Membre habitué
 
Inscription : novembre 2002
Messages : 243
Détails du profil
Informations forums :
Inscription : novembre 2002
Messages : 243
Points : 149
Points : 149
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à
Pierre FORAZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2004, 10h02   #8
Membre régulier
 
Inscription : janvier 2003
Messages : 207
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 207
Points : 94
Points : 94
Envoyer un message via MSN à 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 ....
__________________
Renaud
W2003 / XP /VISTA
SQL SERVER / ORACLE
ADO
rgarnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2004, 10h04   #9
EJ
Nouveau Membre du Club
 
Inscription : mai 2004
Messages : 84
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 84
Points : 34
Points : 34
Envoyer un message via ICQ à EJ Envoyer un message via AIM à EJ Envoyer un message via MSN à EJ
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 :
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 :
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)?

...
__________________
Il existe 10 catégories de gens.
Ceux qui comprennent le binaire et ceux qui ne le comprennent pas...
EJ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2004, 10h06   #10
EJ
Nouveau Membre du Club
 
Inscription : mai 2004
Messages : 84
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 84
Points : 34
Points : 34
Envoyer un message via ICQ à EJ Envoyer un message via AIM à EJ Envoyer un message via MSN à EJ
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...?
__________________
Il existe 10 catégories de gens.
Ceux qui comprennent le binaire et ceux qui ne le comprennent pas...
EJ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2004, 10h18   #11
Membre habitué
 
Inscription : novembre 2002
Messages : 243
Détails du profil
Informations forums :
Inscription : novembre 2002
Messages : 243
Points : 149
Points : 149
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 ?
Pierre FORAZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2004, 10h25   #12
EJ
Nouveau Membre du Club
 
Inscription : mai 2004
Messages : 84
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 84
Points : 34
Points : 34
Envoyer un message via ICQ à EJ Envoyer un message via AIM à EJ Envoyer un message via MSN à EJ
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:
Citation:
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...
__________________
Il existe 10 catégories de gens.
Ceux qui comprennent le binaire et ceux qui ne le comprennent pas...
EJ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2004, 10h31   #13
Membre habitué
 
Inscription : novembre 2002
Messages : 243
Détails du profil
Informations forums :
Inscription : novembre 2002
Messages : 243
Points : 149
Points : 149
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 ?
Pierre FORAZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2004, 11h13   #14
EJ
Nouveau Membre du Club
 
Inscription : mai 2004
Messages : 84
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 84
Points : 34
Points : 34
Envoyer un message via ICQ à EJ Envoyer un message via AIM à EJ Envoyer un message via MSN à EJ
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 :
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"); 
}
__________________
Il existe 10 catégories de gens.
Ceux qui comprennent le binaire et ceux qui ne le comprennent pas...
EJ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2004, 13h32   #15
Membre éclairé
 
Inscription : janvier 2003
Messages : 284
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 284
Points : 311
Points : 311
Envoyer un message via MSN à Nicolas.Cogi
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 :
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 :
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.
__________________
Nicolas
Nicolas.Cogi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2004, 14h00   #16
EJ
Nouveau Membre du Club
 
Inscription : mai 2004
Messages : 84
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 84
Points : 34
Points : 34
Envoyer un message via ICQ à EJ Envoyer un message via AIM à EJ Envoyer un message via MSN à EJ
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...
__________________
Il existe 10 catégories de gens.
Ceux qui comprennent le binaire et ceux qui ne le comprennent pas...
EJ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2004, 13h14   #17
RDM
Membre Expert
 
Inscription : mars 2002
Messages : 1 426
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 1 426
Points : 1 546
Points : 1 546
Envoyer un message via ICQ à RDM
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)
__________________
RDM
Tout Est Relatif
Rubrique XMLRAD: http://xmlrad.developpez.com
FAQ XMLRAD: http://xmlrad.developpez.com/faq/
RDM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2004, 13h56   #18
EJ
Nouveau Membre du Club
 
Inscription : mai 2004
Messages : 84
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 84
Points : 34
Points : 34
Envoyer un message via ICQ à EJ Envoyer un message via AIM à EJ Envoyer un message via MSN à EJ
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...
__________________
Il existe 10 catégories de gens.
Ceux qui comprennent le binaire et ceux qui ne le comprennent pas...
EJ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2004, 18h03   #19
Futur Membre du Club
 
Inscription : janvier 2003
Messages : 18
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 18
Points : 18
Points : 18
Bonjour EJ,

Citation:
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

Citation:
<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
delicatessen2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2004, 09h42   #20
EJ
Nouveau Membre du Club
 
Inscription : mai 2004
Messages : 84
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 84
Points : 34
Points : 34
Envoyer un message via ICQ à EJ Envoyer un message via AIM à EJ Envoyer un message via MSN à EJ
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...
__________________
Il existe 10 catégories de gens.
Ceux qui comprennent le binaire et ceux qui ne le comprennent pas...
EJ est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h11.


 
 
 
 
Partenaires

Hébergement Web