core:itemMatcher (Identifizieren eines Listeneintrags per Regel)
Prev Next Struktur
XML
Beschreibung
Eingabe XML
<?xml version="1.0" encoding="UTF-8"?>
<shp:Shipment xmlns:shp="SCM.SHIPMENT" creatorId="1" ownerId="1" lastModifierId="1">
<lineItems>
<lineItem lineItemId="1" parentLineItemId="">
<attributes>
<shp:ShipmentLineItemReference>
<value referenceType="ORDER_NUMBER" reference="4711"/>
</shp:ShipmentLineItemReference>
<shp:ShipmentLineItemText>
<value textType="COMMENT">
<textValue>TMS</textValue>
</value>
</shp:ShipmentLineItemText>
</attributes>
</lineItem>
<lineItem lineItemId="2" parentLineItemId="">
<attributes>
<shp:ShipmentLineItemReference>
<value referenceType="ORDER_NUMBER" reference="4712"/>
</shp:ShipmentLineItemReference>
<shp:ShipmentLineItemText>
<value textType="COMMENT">
<textValue>Lobster_pro</textValue>
</value>
</shp:ShipmentLineItemText>
</attributes>
</lineItem>
<lineItem lineItemId="3" parentLineItemId="">
<attributes>
<shp:ShipmentLineItemReference>
<value referenceType="ORDER_NUMBER" reference="4713"/>
</shp:ShipmentLineItemReference>
<shp:ShipmentLineItemText>
<value textType="COMMENT">
<textValue>ERP</textValue>
</value>
</shp:ShipmentLineItemText>
</attributes>
</lineItem>
</lineItems>
</shp:Shipment>Die Daten einer Sendung (s. Sendungen ) mit 3 Positionen und jeweils 2 Attributen (Referenzattribut ORDER_NUMBER und Textattribut COMMENT) soll geändert werden.
Zielsetzung:
Ein Import soll den Kommentar (COMMENT) für eine per Auftragsnummer (ORDER_NUMBER) identifizierte Position ändern.
Import XML
[...]
<shp:Shipment [...]
<lineItems>
<lineItem>
<core:itemMatcher>
<core:EntityPropertyRule>
<core:EqualsMatcher deepCompare="false">
<core:LiteralValueResolver>
<value xsi:type="xsd:string">4712</value>
</core:LiteralValueResolver>
</core:EqualsMatcher>
<core:ChainedResolver>
<core:TypedAttributeResolver typedAttribute="base:ReferenceAttribute"
type="base:ReferenceType#ORDER_NUMBER" />
<core:PropertyResolver property="reference" />
</core:ChainedResolver>
</core:EntityPropertyRule>
</core:itemMatcher>
<attributes>
<shp:ShipmentLineItemText>
<value textType="COMMENT">
<textValue>Lobster Data Platform / Orchestration</textValue>
</value>
</shp:ShipmentLineItemText>
</attributes>
</lineItem>
</lineItems>
</shp:Shipment>
[...]Einer Position, deren Referenzattribut ORDER_NUMBER als Referenz (reference) den Text “4712” enthält, soll im Textattribut COMMENT der Textwert “Lobster Data Platform / Orchestration” zugewiesen werden.
Das Beispiel links zeigt einen Ausschnitt aus der Zielstruktur für einen Import . Im abgebildeten lineItem-Knoten definiert der core:itemMatcher-Knoten, wie die zu aktualisierende Position identifiziert werden soll. Im Beispiel ist eine Objekt-Feld-Regel (EntityPropertyRule), definiert, die für das Referenzattribut ORDER_NUMBER die Übereinstimmung des Referenzwerts (refernce) mit einem statischen Text (4712) verlangt.
Der nachfolgende attributes-Knoten definiert die Daten, die einer durch diese Regel “gefundenen” Position als Update zugewiesen werden sollen.
Ausgabe XML
<?xml version="1.0" encoding="UTF-8"?>
<shp:Shipment xmlns:shp="SCM.SHIPMENT" creatorId="1" ownerId="1" lastModifierId="1">
<lineItems>
<lineItem lineItemId="1" parentLineItemId="">
<attributes>
<shp:ShipmentLineItemReference>
<value referenceType="ORDER_NUMBER" reference="4711"/>
</shp:ShipmentLineItemReference>
<shp:ShipmentLineItemText>
<value textType="COMMENT">
<textValue>TMS</textValue>
</value>
</shp:ShipmentLineItemText>
</attributes>
</lineItem>
<lineItem lineItemId="2" parentLineItemId="">
<attributes>
<shp:ShipmentLineItemReference>
<value referenceType="ORDER_NUMBER" reference="4712"/>
</shp:ShipmentLineItemReference>
<shp:ShipmentLineItemText>
<value textType="COMMENT">
<textValue>Lobster Data Platform / Orchestration</textValue>
</value>
</shp:ShipmentLineItemText>
</attributes>
</lineItem>
<lineItem lineItemId="3" parentLineItemId="">
<attributes>
<shp:ShipmentLineItemReference>
<value referenceType="ORDER_NUMBER" reference="4713"/>
</shp:ShipmentLineItemReference>
<shp:ShipmentLineItemText>
<value textType="COMMENT">
<textValue>ERP</textValue>
</value>
</shp:ShipmentLineItemText>
</attributes>
</lineItem>
</lineItems>
</shp:Shipment>Ergebnis:
Die zweite Position (mit der ORDER_NUMBER “4712”) wurde aktualisiert.
War dieser Artikel hilfreich?
Ja Nein