core:delete (Löschen individueller Elemente)
Siehe auch: core:clear (Löschen aller Einträge einer Liste)
Als XML Attribut
Mit dem Steuerungsattribut core:delete können per Import einzelne Elemente (z. B. Attribute oder Postionen) aus einem Datenobjekt gelöscht werden.
Das Attribut muss dabei immer dem Element zugewiesen werden, das gelöscht werden soll.
Wie beim Aktualisieren muss das betreffende Element eindeutig identifiziert sein, damit es effektiv gelöscht wird. Dazu gibt es abhängig vom Elementtyp unterschiedliche Möglichkeiten, wie die Beispiele verdeutlichen.
►HINWEIS◄ Wenn der Import das Steuerungsattribut core:delete für ein Element spezifiziert, das bisher im Datenobjekt nicht vorhanden ist, wird es durch den Import auch nicht erzeugt. Diese Technik wird z. B. genutzt, um Plurale Attribute komplett zu leeren (s. Beispiele für core:clear (Löschen aller Einträge einer Liste)).
►HINWEIS◄ In einfachen Listen, die keinen eindeutigen Zugriff auf die enthaltenen Einträge unterstützen, können Einträge nicht individuell aktualisiert oder gelöscht werden. Solche Listen können nur per core:clear komplett geleert und neu befüllt werden (s. core:clear (Löschen aller Einträge einer Liste)). Dies betrifft z. B. die Aufzählungen für Rollen (roles) und Firmen (companies) für einen Benutzer.
Als XML Knoten
Darüber hinaus kann core:delete auch als Knoten verwendet werden, dessen Textwert den Namen des zu "löschenden" Feldes beinhaltet. Dabei können mehrere core:delete Knoten in einer Hierarchiestufe vorkommen.
Die Knoten Variante wird benötigt, um simple Felder eines Geschäftsobjektes explizit auf null zu setzen. Dies wäre nicht ohne weiteres möglich, da Felder mit leeren oder null-Werten von einem Import im UPDATE Modus ignoriert werden.
Ferner würden Felder mit numerischem Typ von der _data Integration Unit zu 0 umgewandelt werden.
Beispiel: <core:delete>attributes</core:delete> Löscht sämtliche Attribute eines Geschäftsobjekts.
Hinweis: Mit core:delete Knoten markierte Felder werden unabhängig vom Wert des zugehörigen Feldes zurückgesetzt. Somit entscheidet einzig die Sichtbarkeit des core:delete Knotens darüber, ob das Feld zurückgesetzt wird oder nicht.
Beispiel 1: Entfernen eines per Typ identifizierten Typisierten Attributs
Eine Bestellung verwendet das Datumsattribut "Liefertermin fix". Durch einen Import sollen Angaben für dieses Merkmal unter bestimmten Voraussetzungen (z. B. weil das führende System ein Storno-Kennzeichen übermittelt) entfernt werden. Diese Bedingung kann beim Mapping im Importprofil abgebildet werden, indem dem Attributfeld core:delete_attr durch eine geeignete Funktion der Wert true oder false zugewiesen wird.
Der rechts abgebildete Import verwendet die Aktion UPDATE.
|
<?xml version="1.0" encoding="UTF-8"?> |
►ACHTUNG◄ Während es für die Ausführung des Import-Profils keine Rolle spielt, ob das Datumsattribut in der Bestellung vorhanden ist, wird das Profil mit einer Fehlermeldung abgebrochen, falls der angegebene Datumstyp in Lobster Data Platform / Orchestration unbekannt ist.
Beispiel 2: Entfernen einer per "Pos. Nr." identifizierten Bestellposition
Ein Import soll die den ersten Eintrag für einen bestimmten Positionstyp ("Serviceposition" mit dem internen Präfix SER für die Positionsnummer) aus einer Bestellung entfernen.
Der rechts abgebildete Import verwendet die Aktion UPDATE.
Die erste "Serviceposition" wird gelöscht, sofern vorhanden. |
<?xml version="1.0" encoding="UTF-8"?> |
Beispiel 3: Entfernen eines per Index identifizierten Eintrags für ein plurales Attribut
Ein Import soll aus einer Bestellung den zweiten Eintrag für das plurale Textattribut "Container Nr." entfernen.
Der rechts abgebildete Import verwendet die Aktion UPDATE.
Die zweite "Container Nr." wird gelöscht, sofern vorhanden. |
<?xml version="1.0" encoding="UTF-8"?> |
►HINWEIS◄ Anstelle des für plurale Attribute explizit als XML-Attribut je Wert definierten index könnte man auch auf den internen Index per core:index-Attribut zugreifen. Allerdings muss der Indexwert dann im Attribut-Knoten selbst und nicht im Unterknoten value zugewiesen werden:
<?xml version="1.0" encoding="UTF-8"?> |
Beispiel 4: Zurücksetzen/Löschen des Wertes eines einfachen Objektfeldes
Das rechts abgebildete Import XML sucht und updatet eine Bestellung |
<? xml version = "1.0" encoding = "UTF-8" ?> < core :Import ... action = "UPDATE" > < search > ... </ search > < ord :Order> < core :delete>numberOfPackages</ core :delete> </ ord :Order> </ core :Import> |