Fügen Sie ein XML-fragment vorhandene XML-payload in BPEL-Prozess
Meine aktuelle XML-payload von BPEL aussieht,
<Parent>
<child1>
<key>K1</key>
<value>V1<value>
</child1>
<child1>
<key>K11</key>
<value>V11<value>
</child1>
<child2>
<key>K2</key>
<value>V2<value>
</child2>
</Parent>
Möchte ich hinzufügen, ein neues fragment von child1 in das bestehende XML-Nutzlast, so dass die Ausgabe wie folgt aussieht,
<Parent>
<child1>
<key>K1</key>
<value>V1<value>
</child1>
<child1>
<key>K11</key>
<value>V11<value>
</child1>
<child1>
<key>K12</key>
<value>V12<value>
</child1>
<child2>
<key>K2</key>
<value>V2<value>
</child2>
</Parent>
Habe ich gegoogelt und gefunden, dass bpelx:append-Methode kann helfen, das einfügen des xml-fragment.
Aber ich kann immer noch nicht herausfinden, wie man zuerst erstellen/speichern eines neuen fragments in einen String/xml-Daten-Typ, so dass es übergeben werden kann, um die vorhandene Nutzlast.
Jegliche Hinweise oder Hilfe wäre sehr geschätzt werden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beginnen mit: Der XML-snippets, die Sie geschrieben sind nicht wohlgeformt, da Sie über das öffnen-tags an verschiedenen Positionen, in denen die schließenden tags werden sollten.
Zweite, die
bpelx:append
Funktion ist nicht Teil der BPEL -, sondern eine proprietäre Erweiterung von Oracle (was ich denke, Sie verwenden). Sie finden die Dokumentation auf diese Funktion, sowie andere, die nützlich sein könnten, um Sie hier. Drittens brauchen Sie diese transformation in ein XPath-Ausdruck in einerassign
Aktivität.Nun zu Ihrer eigentlichen Frage:
Dass hängt weitgehend davon ab, wo Sie möchten, zu bekommen, dass die Daten aus. Ist es hart-codiert in den Prozess? Oder kommt es aus einer Nachricht, die Sie empfangen?
Disclaimer: Da ich nicht über eine Instanz der Oracle-SOA-Suite installiert ist, habe ich nicht getestet, diese code-Fragmente.
Wenn es hart codiert sein, können Sie einfach legen Sie es in einem literal-block:
Wenn es darum geht aus einer Nachricht, die Sie erhalten, dann sollten Sie gespeichert haben, wird die Nachricht in eine variable aus, die Sie Lesen können:
Können Sie auch immer nur eine variable erstellen des XML-Typs. Aber das erfordert, dass der XML-Datentyp definiert ist, irgendwo in den WSDL-oder XSD-Dateien, die Sie importieren, was normalerweise der Fall sein sollte. Das sollte irgendwie so Aussehen:
Danach können Sie diese variable verwenden, die in einer
append
wie im zweiten Ausschnitt.War ich immer ein Kompilierungsfehler für
<literal>
und erkannte, dass ich hatte, zu verwenden namespace mit ihm. Einmal schaltete ich es an<bpel:literal>
ich war in der Lage zu kompilieren und bereitstellen, ohne Probleme. So stellen Sie sicher, dass Sie den richtigen Namen Raum.