Welcome Guest! Log in
×

Notice

The forum is in read only mode.
Stambia versions 2.x, 3.x, S17, S18, S19 and S20 are reaching End of Support January, 15th, 2024. Please consider upgrading to the supported Semarchy xDI versions. See Global Policy Support and the Semarchy Documentation.

The Stambia User Community is moving to Semarchy! All the applicable resources have already been moved or are currently being moved to their new location. Read more…

Topic-icon Question Utiliser les paramètres d'un processus dynamiquement

  • Group Omnium Generic Account
  • Group Omnium Generic Account's Avatar Topic Author
  • Offline
More
10 Apr 2018 12:04 #1 by Group Omnium Generic Account
Utiliser les paramètres d'un processus dynamiquement was created by Group Omnium Generic Account
Bonjour,

Je suis actuellement en train de faire un meta-processus qui prend un certains nombre de paramètres en entrée mais dont le nombre n'est pas connu à l'avance. J'aurai donc 2 questions:

- Est-il possible de récupérer la liste des paramètres existants (name, label et value) dans le processus en cours d'exécution ?

- J'ai également pensé à une deuxième manière de procéder qui est de nommer les parmaètres p1, p2, p3 etc. et de passer en paramètre le nombre de paramètres. Du coup, il ne me reste plus qu'à faire une boucle sur le nombre de paramètre (boucle en SQL et traitement en SQL).
Cependant, au moment d'utiliser ces mêmes paramètres, je suis bloqué ; exemple :

Je fais un boucle SQL qui me génère autant de boucle que le nombre de paramètre avec l'action Sql Opération et un Bind Link :

SELECT LEVEL as NB
FROM dual
CONNECT BY level <= ${../nb_params}$

Ensuite, je bind donc sur une autre action Sql Opération qui va par exemple remplacer dans un champ VARCHAR un bout de texte par le paramètre :

REPLACE (champ,'param' || :{NB}:,'${../p' || :{NB}: '}$') => ce qui donnerait par exemple pour l'itération 2 : REPLACE (champ,'param2','${../p2}$')

Biensûr, ça ne marche pas, puisque Stambia n'interprète pas d'abord le le :{NB}: pour que ça donne par exemple pour l'itération 2 : ${../p2}$ puis remplace ce dernier par la valeur de p2 pour que ça donne au final

REPLACE (champ,'param2','valeur de p2')

Mais j'ai au final au niveau SQL : REPLACE (champ,'param2','${../p2}$')

Y a-t-il un moyen de générer dynamiquement le path du paramètre afin de prendre sa valeur par la suite ?

Merci par avance de votre retour sur ces 2 questions.

Cdt,
Rachid
  • Group Omnium Generic Account
  • Group Omnium Generic Account's Avatar Topic Author
  • Offline
More
24 Apr 2018 11:24 #2 by Group Omnium Generic Account
Replied by Group Omnium Generic Account on topic Utiliser les paramètres d'un processus dynamiquement
Bonjour,

Je me permet de relancer le topic n'ayant pas eu de réponse. En espérant qu'il y a une solution à mon problème.

Cdt,
Rachid
More
24 Oct 2018 17:03 #3 by Nicolas.Duret
Replied by Nicolas.Duret on topic Utiliser les paramètres d'un processus dynamiquement
Bonjour,

Je tombe sur ce vieux poste en cherchant autre chose...

Pour ta première question: Tu as essayé avec une variable XSL ?

Je pense que j'ai un cas similaire dans un processus réutilisable où j'ai utilisé une variable XSL nommée PARAMETERS_LIST et qui est définie comme ceci:
$this/parameter[not(
                                     starts-with(@name,'ERROR_') 
                                  or starts-with(@name,'E_') 
                                  or starts-with(@name,'WARNING_') 
                                  or starts-with(@name,'W_') 
                                  or starts-with(@name,'SPOOL') 
                                  or starts-with(@name,'NB_RECORDS_TO_PROCESS') 
                                  or starts-with(@name,'EMAIL_')
                                  or starts-with(@name,'CLEAN_')
                                )]
--> J'exclue juste une liste de paramètres possible que je ne veux pas considérer.

Dans ton cas, tu pourrais ensuite utiliser cette variable dans l'option Repetition d'un SQL Operation:
Xpath Query: $PARAMETERS_LIST
Variable Name: CURRENT_PARAMETER
--> ça va générer autant d'exécution du SQL que de nombre de paramètres listés dans $PARAMETERS_LIST.

Ou selon le besoin, peut être que tu peux construire en XSL un seul script SQL qui fait tout en une seule fois.

Salutations,
--
Nicolas
  • Group Omnium Generic Account
  • Group Omnium Generic Account's Avatar Topic Author
  • Offline
More
08 Nov 2018 10:56 #4 by Group Omnium Generic Account
Replied by Group Omnium Generic Account on topic Utiliser les paramètres d'un processus dynamiquement
Merci pour ta réponse Nicolas. C'est effectivement ce qu'il me fallait.
Par contre il me manque des notions de syntaxe concernant la variable généré à chaque itération car je n'arrive pas à récupérer sa valeur.

J'ai essayé un peu toutes les syntaxes à partir d'exemple dans les différents templates de Stambia mais rien ne marche. Quel est la syntaxe pour récupérer la valeur de la variable CURRENT_PARAMETER ? Si possible également son nom et son libellé ?

Cordialement,
Rachid
  • Group Omnium Generic Account
  • Group Omnium Generic Account's Avatar Topic Author
  • Offline
More
08 Nov 2018 11:00 #5 by Group Omnium Generic Account
Replied by Group Omnium Generic Account on topic Utiliser les paramètres d'un processus dynamiquement
C'est bon je viens de trouver, c'est de la syntaxe pure XSL (xpath). Du coup, la variable xsl je l'ai déclaré de type xpath et j'utilise les syntaxes suivantes :
%x{$CURRENT_PARAMETER/@name}x% 
%x{$CURRENT_PARAMETER/@label}x% 
%x{$CURRENT_PARAMETER/@value}x%
More
08 Nov 2018 14:30 #6 by Nicolas.Duret
Replied by Nicolas.Duret on topic Utiliser les paramètres d'un processus dynamiquement
Exact !
Effectivement, j'avais oublié de mentionner dans ma réponse que la "Xsl Variable" créée est de type "xpath".