Übersicht
Diese Action erlaubt es, ein XML zu splitten und die einzelnen Teile in einem neuen Channel weiterzuverarbeiten.
Technische Beschreibung
Klassenpfad: org.b2bbp.runtime.actions.internal.XmlSplitAction
Konfigurationsmöglichkeiten
ActionProperty / Eigenschaften | Beschreibung | Werte |
---|---|---|
B3P_XML_SPLIT_STRATEGY | Klassenpfad, der zu verwendenden XmlSplitStrategy | Default: org.b2bbp.runtime.actions.splitting.strategies.xml.DomXmlSplitStrategy |
SplitStrategies
DomXmlSplitStrategy
Klassenpfad: org.b2bbp.runtime.actions.splitting.strategies.xml.DomXmlSplitStrategy
Folgende ActionProperties werden von der DomXmlSplitStrategy verwendet.
ActionProperty / Eigenschaften | Beschreibung | Werte |
---|---|---|
B3P_SPLIT_CONDITION | XPath-Angabe, welche Elemente gesplittet werden sollen. | Beispiel: /*/*/*/EContracts/* |
B3P_SPLIT_CHANNEL | Channel, in dem die Splits weiterverarbeitet werden. | |
B3P_XML_SKELETON | Extension-Name, in dem das XML-Skeleton hinterlegt ist. | |
B3P_KEY_FOR_XML | MessageContext-Feld, in dem das zu splittende XML abgelegt ist | Default: CURRENT_PAYLOAD |
B3P_XPATH_FOR_SKELETON_INSERT | ||
B3P_ENCODING | Encoding | Default: UTF-8 |
Beispiel-Konfiguration
Folgendes XML soll anhand der item-Elemente gesplittet werden:
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<soap-env:Header/>
<soap-env:Body>
<exampleRequest>
<EContracts>
<item>
<key1>value1</key1>
<key2>value2</key2>
<key3>value3</key3>
<key4>value4</key4>
</item>
<item>
<key1>value11</key1>
<key2>value12</key2>
<key3>value13</key3>
<key4>value14</key4>
</item>
</EContracts>
<EReturn>
<Message>Anfrage wurde prozessiert.</Message>
<ReturnCode>0</ReturnCode>
</EReturn>
</exampleRequest>
</soap-env:Body>
</soap-env:Envelope>
Als B3P_SPLIT_CONDITION wird der XPath-Ausdruck /*/*/*/EContracts/*
verwendet, der die item-Elemente im XML selektiert.
Als XML-Skeleton ist die Extension INBOUND_WS_XML_SKELETON konfiguriert. Diese sieht wie folgt aus:
Das Skeleton wird als Hülle für jedes gesplittete item-Element verwendet. Das erste Split-item würde dann wie folgt aussehen:
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<soap-env:Header/>
<soap-env:Body>
<exampleRequest>
<EContracts>
<item>
<key1>value1</key1>
<key2>value2</key2>
<key3>value3</key3>
<key4>value4</key4>
</item>
</EContracts>
</exampleRequest>
</soap-env:Body>
</soap-env:Envelope>
Da das zu splittende XML zweit item-Elemente enthält, werden durch die XmlSplitAction 2 gesplittete Xmls erzeugt und diese in 2 Channel-Aufrufen des Channels INBOUND_WS_SPLIT weiterverarbeitet:
Weitere XmlSplit-Klassen
org.b2bbp.eai.actions.XmlSplitActionWithSyncWorkflow