PDA

View Full Version : burst report et passage de paramètre



NGUYEN
08-20-2007, 12:08 PM
Je génère un xaction qui extrait une liste d'éléments et m'envoie un mail par élément retourné, avec les valuers dans le corps du texte.
C'est supposé ultra-simplissime, car je suis encore en phase de découverte de pentaho...

Dans mon action loop, je n'ai qu'un envoie de mail.
Si je ne déclare pas d'input, j'ai bien une salve de mails qui partent ; ce qui signifie que la connection à la BDD est bonne, que la requête renvoie bien un nombre déterminé d'éléments et que l'envoie de mail ne pose aucun problème.
Par contre, dès que je déclare en input (de l'envoie de mail) les colonnes en output (de la requête avant l'Action Loop), afin d'écrire ces valeurs dans le corps du texte, alors j'ai l'erreur suivante :
Erreur : RuntimeContext.ERROR_0018 - [fr_39] The requested parameter tam_id could not be fulfilled (org.pentaho.core.runtime.RuntimeContext)

J'ai beau regarder l'exemple de burst report, je ne vois pas ce qui cloche... Les valeurs devraient être transmises.
Je joins mon xaction.

Merci d'avance pour votre aide.

BPM_PBE
08-21-2007, 02:21 AM
Bonjour,

Après avoir étudié toute l'xaction, la réponse est toute simple, et le message d'erreur de Pentaho est correct : vous avez décléré une colonne "empl_id" comme paramètre de surcharge de colonne dans un SQL dynamique, et non "tam_id" (il y a une confusion avec tam_list).

Donc, quand vous faites un {PREPARE:tam_id }, le moteur ne peut trouver cette variable, et produit un message d'erreur,

Bonne journée,
Patrick

NGUYEN
08-21-2007, 03:39 AM
Bonjour Patrick,

Tout d'abord, merci pour la réponse.

Ensuite, en voulant simplifier mon xaction, j'ai effectivement laissé une erreur. Mais même en la corrigeant, j'ai toujours le même problème.
Erreur : RuntimeContext.ERROR_0018 - [fr_39] The requested parameter empl_id could not be fulfilled (org.pentaho.core.runtime.RuntimeContext)

Pourtant, Pentaho Design Studio contrôle les variables, puisque si je met empl_ID en entrée, il me dit que cela n'existe pas.
Mais à l'exécution, j'ai toujours le problème...

Merci d'avance,
Van Hoang

PS : le xaction sans surcharge des noms est ci-joint.

BPM_PBE
08-21-2007, 07:55 AM
oui, tout Pentaho est en java, donc case-sensitive.

Je regarderai vers une autre piste : je ne suis pas certain que le "PREPARE" puisse être utiliser dans la zone "html" (mais je peux me tromper).

Moi, j'aurai fait un "format message", comme cela est montré ds le BurstAction Sequence, avec comme paramètre (en bas) votre empl_id

Patrick

NGUYEN
08-21-2007, 10:13 AM
Merci encore pour ton attention.

Me référant à l'exemple, j'ai retiré les PREPARE ; il est probable qu'il ne sont utilisable que dna sles sous-requêtes.
J'ai donc mis en place une action pour formatter le corps du texte.

J'ai longtemps tenté de récupérer mon empl_id, mais comme c'est un integer, l'action format-string ne le reconnait pas.
J'ai donc décidé de simplifier encor ele problème en ne tentant de ne récupérer que les chaînes de caractères.

Mais encore une fois j'ai la même erreur :
Erreur : RuntimeContext.ERROR_0018 - [fr_39] The requested parameter nom could not be fulfilled (org.pentaho.core.runtime.RuntimeContext)

J'ai vraiment l'impression que c'est le passage des paramètres dans l'action-loop qui ne fonctionne pas.

Voici le nouveau fichier xaction.

Merci d'avance,
Van Hoang

BPM_PBE
08-21-2007, 11:42 AM
Le passage de paramètres dans une boucle fonctionne sans souci ... je te rassure.

J'ai regardé ton xaction, cela semble en effet ok. As-tu essayé avec d'autres syntaxes dans ton "formatted Message", comme par exemple juste {0} (sans "", et sans le second paramètre).

Pour concatener des paramètres, et transformer ton int en string, il peut être intéressant d'utiliser le composant "javascript".

Autre workaround (le temps qu'on trouve) : concatène tes 3 champs dans ta requête SQL, et ne travaille plus qu'avec ce champ calculé.

Je reste à l'écoute,

Patrick

NGUYEN
08-22-2007, 09:56 AM
Je viens de trouver l'erreur !
En fait cela vient de l'ordre de déclaration des outputs...

Dans l'action qui ramène la liste à parser, les outputs étaient classés de telle façon que le résult-set était déclaré en première ligne. A chaque fois j'avais l'erreur parameter cannot be fullfiled. Or quand je déplace le result-set à la dernière ligne, je n'ai plus ce message d'erreur, mais un autre problème.

Mais justement, cet ordre de déclaration des outputs me pose problème ; il semble très crucial contrairement à ce que je pensais...
Pour illustrer mes propos, je vais m'appuyer sur les fichiers xactions ci-joints.



Tout d'abord, envoi_mail.xaction, result-set est en premier et je ne fais appel à aucun paramètre. Tout se passe bien ; la requête renvoie 4 valeurs et je reçois bien 4 mais dans ma boite aux lettres.

Ensuite erreur_param.xaction, result-set est toujours en premier et je fais appel au paramètre nom, même s'il n'a aucune incidence sur l'envoi de mails. J'ai alors l'erreur parameter nom could not be fullfiled.

Enfin ok_mais_sans_mail.xaction, result-set est placé en dernier et je fais appel au paramètre nom, même s'il n'a aucune incidence sur l'envoi de mails. Je n'ai aucune erreur, pentaho m'affiche action réussie ; mais je ne reçois aucun mails ! Alors qu'ils ne prennent aucun paramètre.

A titre indicatif, j'ai mis MDFS_bursting_TAM.xaction, avec result-set en dernier et un appel au paramètre nom pour remplir le corps du texte du mail. De la même façon, je n'ai pas de message d'erreur mais je ne reçois aucun mail...



En résumé, si result-set est déclaré en premier, je ne peux pas faire appel aux paramètres ; mais s'il est déclaré en dernier, je n'ai alors aucun mail de généré.
Quelqu'un pourrait-il m'aider ? Parce que là, j'arrive pas à comprendre ; ou alors pentaho a une logique tout autre...