Ü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

View Me   Edit Me