lundi, novembre 02, 2009

BPEL Java Embedded : retourner du XML vers BPEL

La plupart du temps, l'output généré par une méthode java embarquée dans du code BPEL se résume à un setVariableData d'une string vers une variable BPEL.

Je ne connais pas de méthode simple pour renvoyer un document XML directement (voir plus bas).
Cependant, il suffit de convertir votre variable bpel string en document XML. Simple, concis et efficace :
<from expression="ora:parseEscapedXML(bpws:getVariableData('myStringVariable'))"/>


== La méthode suivante ne fonctionne pas (mais il me semble qu'elle le devrait) ==

Au début du document BPEL, réaliser les imports suivants:
<!-- Import for building XML document to string -->
<bpelx:exec import="javax.xml.parsers.DocumentBuilderFactory" />
<bpelx:exec import="org.xml.sax.InputSource" />
<bpelx:exec import="org.w3c.dom.Document" />
<bpelx:exec import="java.io.StringReader" />

Dans la fonction java, voici comment construire un document XML à partir d'une string :

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
InputSource source = new InputSource( new StringReader(xmlStr));
Document document = factory.newDocumentBuilder().parse(source);
// Copy the file in the BPEL variable
setVariableData("myVariable","parameters", "/xpath:myxpath",document);