mardi 22 juillet 2008

BAM : Récupération des données provenant de Bpel

Si vous n'arrivez pas à récupérer les données du processus Bpel afin de les postionner dans le DataSet du BAM, c'est peut être parce que vous avez ce type d'erreur dans votre log SOA suite :

ERROR default.collaxa.cube.sensor
No value for key: _cde in BAM payload:
(_cde correspond à mon champ dans le DataSet du BAM)

En fait, c'était mon cas mais ce n'est pas une erreur, c'est une mauvaise utilisation de Bpel avec le BAM.

Tout vient de la transformation xsl utilisée entre BPEL et BAM.
Les données du processus BPEL sont sous l'arborescence XSD suivante:


Comme on le visualise dans l'image ci-dessus, l'ensemble des données du processus Bpel (pour instance qui vient de fonctionner) est sous l'arborescence Xpath :

/tns:actionData/tns:payload/tns:variableData/tns:data

Vous devez donc mapper comme dans l'image ci-dessus, /tns:actionData/tns:payload/tns:variableData/tns:data vers la donnée du DataSet du BAM présente à droite dans l'image.


Une fois cette opération effectuée, si vous avez un XSD contenant plusieurs champs pour votre processus BPEL, il suffit de spécifier dans le processus Bpel quelle variable XML vous souhaitez pousser vers le BAM.

Cette action se fait dans Jdev sur l'action de votre choix :


Sélectionnez l'onglet "Sensor"



Spécifier votre variable qui sera poussée dans la transformation XSL du dessus




Ensuite vous retrouverez les données du processus BPEL dans le BAM :



Et voilou ....

Aucun commentaire: