core:clear (Löschen aller Einträge einer Liste)
Datenstrukturen können "plurale Merkmale" unterschiedlicher Typen enthalten, die vereinfacht als "Liste" mit ggf. mehreren "Einträgen" beschrieben können.
Das Attribut core:clear kann innerhalb einer Importstruktur für eine Aktualisierung (UPDATE) verwendet werden, um aus solche "Listen" gezielt alle bestehenden Einträge zu entfernen, ggf. um sie anschließend mit neuen Einträgen zu bevölkern.
Eine Liste wird genau dann gelöscht, wenn das Attribut den Wahrheitswert true enthält.
Mit dem Wert false (oder einem anderen von true verschiedenen Wert) wird das Attribut ignoriert und die Einträge der Liste in der Importstruktur werden individuell verarbeitet, um Listeneinträge entweder hinzuzufügen, zu aktualisieren oder zu löschen (s. core:delete (Löschen individueller Elemente)).
►WICHTIG◄ Abhängig vom Typ der Datenstruktur, die als Liste gelöscht werden soll, unterscheidet sich die Vorgehensweise in Details, wie die folgenden Beispiele verdeutlichen.
Beispiel 1: Alle Werte einer Liste löschen
Zu einem bestimmten Zeitpunkt im Lebenszyklus eines Geschäftsobjekts vom Typ "Bestellung" sollen durch einen Import sämtliche bestehenden Attribute gelöscht werden, so dass anschließend ausschließlich die in demselben Import bereitgestellten Attributwerte belegt sind. Diese sollen die Bestellung als "archiviert" kennzeichnen und eine Referenznummer benennen, über die bei Bedarf archivierte Daten beschafft werden können.
Der rechts abgebildete Import verwendet die Aktion UPDATE.
►ANMERKUNG◄ Die Kopfdaten der Bestellung sowie die Positionsdaten (inkl. Attribute) bleiben unverändert erhalten. |
<?xml version="1.0" encoding="UTF-8"?> |
Beispiel 2: Alle Werte eines Mehrfachattributs löschen
Per Import aus einem anderen System sollen regelmäßig "Kommunikationsinformationen" in die Adressdaten für Benutzer synchronisiert werden. Soweit für dieses Mehrfachattribut (s. Plurale Attribute) bereits Angaben vorliegen, sollen die Angaben aus dem Import diese komplett ersetzen. Im folgenden Beispiel stellt das Fremdsystem nur zwei E-Mail-Adressen bereit, die über das Merkmal "Kontext" (communicationContext) klassifiziert werden, das für den automatischen Versand von Benachrichtigungen (z. B. per Wertauflöser Mailadresse Benutzer) ausgewertet wird.
►WICHTIG◄ Die Werte eines Mehrfachattributs werden nicht in einem eigenen Listenelement zusammengefasst, sondern erscheinen als Gruppe von formal eigenständigen Elementen des Typs AddressCommunicationInfo in der Liste attributes, die auch alle anderen Attribute enthält. Deshalb kann das core:clear-Attribut im Import keinem übergeordneten Element für "Kommunikationsinformationen" zugeordnet werden. Stattdessen muss es (mit dem Wert true) genau einmal, nämlich im ersten importierten AddressCommunicationInfo-Element erscheinen, damit alle bestehenden Einträge entfernt und durch die im Import enthaltenen ersetzt werden.
Falls der Import keine Einträge erzeugen, sondern nur bestehende Einträge in der Liste ersatzlos löschen soll, muss der Import trotzdem einen Dummy-Eintrag wie den folgenden enthalten, der neben dem Attribut core:clear auch das Attribut core:delete mit dem Wert true verwenden muss, um zu verhindern, dass ein leerer Eintrag erzeugt wird:
<base:AddressCommunicationInfo core:clear="true" core:delete="true"></base:AddressCommunicationInfo>
Vor dem Import liegen für ein bestimmtes Benutzerkonto die rechts gezeigten Angaben zu "Kommunikationsinformationen" vor:
|
|
Der rechts abgebildete Import verwendet die Aktion UPDATE:
|
<?xml version="1.0" encoding="UTF-8"?> |
Nach dem Import erscheinen im Benutzerkonto (für die ID 4252) nur noch die beiden neuen E-Mail-Adressen;
|
|
Beispiel 3: Alle Werte eines typisierten pluralen Attributs löschen
Für ein typisiertes plurales Attribut greift grundsätzlich dieselbe Methodik wie für ein Mehrfachattribut (s. voriges Beispiel). Allerdings ist eine Angabe für den Typ des typisierten pluralen Attributs notwendig, dessen Werte gelöscht werden sollen.
Im folgenden Beispiel sollen bei einem Import alle Einträge für ein plurales Textattribut "Container Nr." (CONTAINER_NO) auf der Kopfebene einer Bestellung gelöscht werden.
Der rechts abgebildete Import verwendet die Aktion UPDATE:
|
<?xml version="1.0" encoding="UTF-8"?> |