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

Glassfish et Payara Java Discussion :

[SOA / OpenESB / BPEL] Comment utiliser le tag ForEach


Sujet :

Glassfish et Payara Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 59
    Points : 70
    Points
    70
    Par défaut [SOA / OpenESB / BPEL] Comment utiliser le tag ForEach
    Bonjour,

    Je suis en train de tester Open ESB 2 (version Bundle OpenESB 2 + Glassfish 2UR2 + Netbeans 6.1).

    Tout fonctionne plutôt bien. Je parviens à utiliser les Binding SOAP et JDBC.

    J'ai un PartnerLink "QuestWebService" avec une opération "GetQuests" qui me renvoie un tableau d'objets que j'appellerai "GetQuestsResponse" (le tableau d'objets). Or dans mon BPEL Process, j'aimerais pouvoir effectuer un traitement particulier pour chaque instance du tableau "GetQuestResponse".

    Pour info, "GetQuestResponse" contient plusieurs "Record".

    J'ai vu quelque part qu'il me fallait utiliser le tag "ForEach" mais je ne trouve pas d'explication claire sur le sujet. J'avoue patauger un peu. Si quelqu'un avait un exemple sous Netbeans, je suis preneur.

    Merci à tous de votre aide.

  2. #2
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2008
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    avertissement :-) : cela vient de mon experience en Java CAPS 5, mais ca devrait être valide.
    Java CAPS 6 est le pendant commercial d'OpenESB.

    Si tu as un noeud multiple, tu déclares une boucle (while par exemple) et un compteur de boucle du type :
    compteur = 1 (il me semble que le parcours de tableau en BPEL démarre à 1)
    While compteur <= nbElementsNoeud do {
    quelque chose
    }


    ce quelque chose, dans le mappeur BPEL en JCAPS 5 et
    6 (XPATH), s'appelle un prédicat que tu déclares (click droit ?) sur le noeud.
    Le prédicat, en quelque sorte, est une expression qui permet de pointer un élément de ta liste. Dans le cas présent ton prédicat retournera simplement le compteur (indice courant dans le tableau).
    Attention, pour une raison qui m'échappe, il fallait appliquer une conversion en number entre le compteur et le retour du prédicat.

    Dans les variables disponiblent au mapping, tu devrais voir apparaitre ton prédicat. C'est sur lui que tu travailleras pour effectuer un traitement sur chacune des occurences.

    Un exemple de prédicat, mais sans parcour de boucle.
    https://open-esb.dev.java.net/kb/60/...de-mapper.html (scénario prédicat)

    Pourras-tu m'indiquer si ca marche de la même manière en OpenESB ?

    Cordialement,
    Albert

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 59
    Points : 70
    Points
    70
    Par défaut
    Bonjour,

    Merci pour ces éléments d'informations. Je viens de tester la notion de prédicat. Cela fonctionne visiblement de la même manière.

    Je vais essayer de tester cela pour parcourir ma boucle.

    En revanche, une fois que je suis dans ma boucle, comment je fais pour récupérer le nœud courant ? Y a t'il une fonction XPath permettant de récupérer le nœud correspondant à un indice particulier ? Je crois qu'il y a position() mais comment l'utiliser dans OpenESB (plus exactement dans le fichier .bpel) ?

    Exemple :


    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
     
    <GetQuestsResponse>
      <Record>
        <id>5</id>
        <nom>Michel</nom>
      </Record>
      <Record>
        <id>6</id>
        <nom>JeanPierre</nom>
      </Record>
      <Record>
        <id>7</id>
        <nom>Toto</nom>
      </Record>
    </GetQuestsResponse>
    Je veux donc parcourir les "Record" dans une boucle et lancer un "Invoke" sur un PartnerLink avec en paramètre l'id et le nom. Je pense donc qu'au sein de la boucle ForEach ou While, on doit pouvoir utiliser un Assign sur le Record courant vers les paramètres d'entrée de l'opération du PartnerLink.

    En tout cas, merci beaucoup pour ton aide.

    Séb.

  4. #4
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 32
    Points : 13
    Points
    13
    Par défaut
    Bonjour

    je cherche à faire exactement la meme chose
    ceci fait plusieurs jour que je bloque dessus

    avez vous finalement trouvé comment faire un

    "Assign sur le Record courant" ?

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 59
    Points : 70
    Points
    70
    Par défaut
    Bonjour,

    Désolé pour le retard de la réponse. Je n'ai malheureusement pas réussi à lancer un Invoke sur un PartnerLink sur le Record courant.

    J'ai malheureusement dû laisser tomber... Pourtant, j'ai des ouvrages sur le sujet mais aucun n'aborde cette question pourtant basique

    Si vous y êtes parvenu, je suis preneur...

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 13
    Points : 15
    Points
    15
    Par défaut
    Bonjour Leod38 & Sébastien,

    J'arrive, je me raccroche au wagon et je vais essayer de publier un "sample" sur ce site (si j'y arrive ;-) ).
    Je sais que çà marchait bien en BPEL 1.0, y a pas de raison que çà marche pas en BPEL 2.0 ...

    A bientôt,
    Alicante

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 13
    Points : 15
    Points
    15
    Par défaut
    Camarades,

    Voici un sample projet (pièce jointe) avec un boucle ForEach.
    (Possible aussi avec une boucle While aussi, mais je n'ai pas testé)

    A+
    Alicante
    Fichiers attachés Fichiers attachés

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 59
    Points : 70
    Points
    70
    Par défaut
    Salut !

    Merci beaucoup pour ces éléments. Je reviens vers vous dès que je trouve un peu de dispo pour étudier cela.

Discussions similaires

  1. [Security] Comment utiliser le tag "authorize" avec des droits dynamiques
    Par andlio dans le forum Spring
    Réponses: 4
    Dernier message: 01/02/2012, 13h00
  2. comment utiliser SAX pour ne pas afficher le contenu vide d'un Tag
    Par titi42 dans le forum Débuter avec Java
    Réponses: 0
    Dernier message: 14/08/2009, 11h48
  3. Comment utiliser OpenESB stand-alone (JBI-SE) ?
    Par RudyWI dans le forum Services Web
    Réponses: 0
    Dernier message: 17/04/2009, 15h23
  4. [DisplayTag] Comment utiliser Display tag
    Par myriam818 dans le forum Taglibs
    Réponses: 1
    Dernier message: 29/11/2007, 13h44
  5. comment utiliser display tag
    Par jamelbenalla dans le forum Struts 1
    Réponses: 1
    Dernier message: 24/10/2006, 08h54

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