core:FindEntityAttribute (Präprozessor)
Der FindEntityAttribute-Präprozessor dient zum Zugriff auf die ID oder einen anderen Wert einer Entität in einem Import für eine andere Entität, der einem bestimmten Zielattribut (XML-Attribut) der importierten Entität als Wert zugewiesen werden soll.
Der Präprozessor muss dazu innerhalb des XML-Knotens der Objektstruktur platziert werden, deren Attribut er setzen soll. Er enthält einen search-Knoten, der als Suche oder Tupel-Suche ausgeprägt werden kann.
Aus einer Suche wird immer die ID (id ) als Wert für das Zielattribut übernommen.
Um einen anderen Wert als die ID (id)zuzuweisen, kann anstelle des Knotens ISearchProjection genau eine Projektion angegeben werden, um eine einspaltige Tupel-Suche zu definieren.
In beiden Fällen definiert das erste Egebnis den Wert des Zielattributs.
Die folgende Struktur kann ausgehend von der Vorlage preProcessor:FindEntityAttribute (s. Orchestration-Vorlagen) direkt an der gewünschten Position einer Import-Struktur eingebunden werden.
|
Parameter |
Typ |
Bedeutung |
Inhalt (Fixwert/Beispiel) |
xsi:type |
String-Attribut |
Typ des Preäprozessors |
core:FindEntityAttribute |
type |
String-Attribut |
Entitätstyp für die auszuführende Suche |
base:Role |
targetAttribute |
String-Attribut |
Name des Zielattributs, dessen Wert gesetzt werden soll |
role |
|
search |
Unterknoten |
definiert eine Suche für den per type spezifizierten Entitätstyp |
s. Beispiel unten |
Beispiel:
Für die Firma "MY COMPANY" soll per Single-Import ein Gastbenutzer (s. Gastbenutzer) erstellt werden, für den das Firmenkonto als Besitzer (ownerId) gelten soll, das auch die "MY COMPANY" besitzt.
<?xml version="1.0" encoding="UTF-8"?><core:Import ... xmlns:base="SCM.BASE" action="CREATE"> <base:GuestUser loginToken="DEMO_GUEST_USER_TOKEN" active="true" locale="de" roleId="2201" maxLogins="3" loginCount="0" emailAddress="user@madeup.compa.ny" maxConcurrentSessions="1"> <!-- Firmenkonto für den Gastbenutzer als Attribut companyId zuordnen --> <preProcessor xsi:type="core:FindEntityAttribute" type="base:CompanyAccount" targetAttribute="companyId"> <search> <core:SimplePropertySearch projection="address.name1" compareType="==" stringValue="MY COMPANY"></core:SimplePropertySearch> </search> </preProcessor> <!-- Dessen Besitzer auch als Besitzer des Gastbenutzerkontos per Attribut ownerId zuordnen --> <preProcessor xsi:type="core:FindEntityAttribute" type="base:CompanyAccount" targetAttribute="ownerId"> <search> <core:SimplePropertySearch projection="address.name1" compareType="==" stringValue="MY COMPANY"></core:SimplePropertySearch> <core:PropertyProjection property="ownerId"></core:PropertyProjection> </search> </preProcessor> </base:GuestUser></core:Import>Der erste Präprozessor führt eine Suche nach einem Firmenkonto aus, dessen Name (address.name1) "MY COMPANY" lautet. Dessen ID (id) wird dem Firma-Feld (XML-Attribut companyID) für den Gastbenutzer zugewiesen.
Der zweite Präprozessor führt eine Tupel-Suche nach einem Firmenkonto mit denselben Kriterien aus, spezifiziert aber eine Projektion für das Besitzer-Feld (ownerId). Diese wird dem Besitzer-Feld (XML-Attribut ownerId) für den Gastbenutzer zugewiesen.