Angehängte Dokumente


Wertauflöser - Kurzfassung

Zweck: Gibt die Inhalte aller Dokumente zurück, die einer Entität im Eingabewert zugewiesen sind und dem optional spezifizierbaren Dokumententyp angehören.

images/download/attachments/119253859/image2023-1-23_15-57-56-version-1-modificationdate-1674485876214-api-v2.png

Der Angehängte Dokumente-Wertauflöser erwartet eine Entität als Eingabewert und liefert ein Array, das die "Inhalte" aus dem documentContent-Feld aller Dokumente auflistet, die sämtliche der folgenden Kriterien erfüllen:

  1. Für das Dokument besteht Lesezugriff im anwendbaren Kontext.

  2. Das Feld "Referenziertes Objekt" (referencedEntity) des Dokuments verweist auf den Typ der Entität im Eingabewert.

  3. Das Feld "Referenziertes-Objekt-ID" (referencedEntityId) des Dokuments verweist auf die ID (id) der Entität im Eingabewert.

  4. Das Feld "Referenz-Status" (referenceStatus) des Dokuments verweist auf den Status "Referenziert" (REFERENCED).

ANMERKUNG◄ Bei jedem Speichern eines Dokuments werden die unter Dokumente zuweisen beschriebenen Prozesse erneut gestartet, um das Dokument zuzuweisen. Scheitert die Zuweisung für ein vorher bereits erfolgreich zugewiesenes Dokument, z. B. weil jetzt ein anderer Dokumentenreferenztyp ausgewählt ist, der keine Entität als Treffer liefert, dann lautet nach dem Speichern des Dokuments der Referenz-Status "Zuordnung fehlgeschlagen" (UNRESOLVED). Damit gilt das Dokument nicht als "angehängt" aus Sicht der Entität für die die Kriterien 2 und 3 weiter erfüllt wären.

Sonderfälle:

  • Falls als Eingabewert keine Entität vorliegt, gibt der Wertauflöser "Kein Wert" ($null) zurück.

  • Falls als Eingabewert eine Entität vorliegt, aber keine Dokumente gefunden werden, die die oben genannten Kriterien erfüllen, wird ein leeres Array zurückgegeben.

  • Falls als Eingabewert eine Entität vorliegt und genau ein Dokument nach die oben genannten Kriterien erfüllt, wird dessen Inhalt als einziger Eintrag in einem Array zurückgegeben.

HINWEIS◄ Der Wertauflöser dient nicht zum Zugriff auf Dokumente als Entitäten, sondern liefert nur deren Inhalt. Zugriff auf die Daten der Dokument-Entitäten für "angehängte Dokumente" würde dagegen z. B. eine Suche (Ereignisaktion) für den Entitätstyp "Dokument" (de.lobster.scm.doc.Document) ermöglichen, die die oben genannten Kriterien (2, 3 und 4) mit Bezug zum Eingabewert abbilden muss.

►ACHTUNG◄ Der Rückgabewert ist ein Array und KEINE Liste ...


Dass der Rückgabewert ein Array und keine echte "Liste" (List) ist, kann gelegentlich Einschränkungen bedingen bzw. Vorkehrungen erforderlich machen. Die folgende Liste erhebt keinen Anspruch auf Vollständigkeit:

  • Ein Array besteht eine Typprüfung auf den Typ "Liste" (List) nicht. Auch die Kombination der Option "Ist Liste von" in Verbindung mit dem Typ "Inhalt" in der Typprüfung löst dieses Problem nicht.

  • Der Zugriff auf bestehende Einträge im Array über den Listenwert-Wertauflöser ist (im Unterschied zu früheren Versionen von Lobster Data Platform / Orchestration) möglich.

    • Allerdings können dem Array keine Einträge hinzugefügt werden.

  • Mit dem Eingabeobjekt (Typsicher)-Wertauflöser kann das Array formal in eine "Liste" umgewandelt werden, die dann auch einer Typprüfung standhält.

    • Allerdings können auch dieser Liste keine Einträge hinzugefügt werden.

Konfiguration

Als Eingabewert wird eine Entität eines beliebigen Typs erwartet, da Dokumente nur an Entitäten zugewiesen, also an diese "angehängt", werden können.

Über den optionalen Parameter vom Typ kann die Auswahl der Dokumente durch statische Einfachauswahl auf genau einen bestimmten Dokumententyp eingeschränkt werden.

Ohne eine Auswahl für den Parameter vom Typ liefert der Wertauflöser die Inhalte aller zugewiesenen Dokumente (Kriterien s. oben) unabhängig von deren Dokumententyp.

Die Auswahl wird durch eine Suchfunktion unterstützt, die wie im Bild zu sehen neben der Lokalisierung auch den internen Namen für den Dokumententyp berücksichtigt.

Sind im Kontext der Konfiguration Dynamische Aufzählungsfilter für den Dokumententyp anwendbar, schränken diese die Auswahl ein. Das Laufzeitverhalten einer Konfiguration verändern Dynamische Aufzählungsfilter dagegen nicht.

images/download/attachments/119253859/image2023-1-24_11-30-45-version-1-modificationdate-1674556245546-api-v2.png

Beispiel

Einfacher Anwendungsfall: "Lebenslauf"-Datei(en) als Anhang zum Benutzer

Ein Zuordnungskriterium (s. Zuordnungskriterien) soll als bestanden gelten, wenn als Eingabewert im Datenkontext ein Benutzer vorliegt, für dessen Konto mindestens ein "angehängtes" Dokument vom Dokumententyp "Lebenslauf" (CV) gefunden wird.

Konfiguration:

Das Zuordnungskriterium kombiniert zwei Regeln in einer UND-Verknüpfung:

  • Eingangs stellt eine Typprüfung sicher, dass im Kontext ein Benutzer vorliegt.

  • Ist dies der Fall, soll eine Objekt-Feld-Regel über den negierten Ist leer-Vergleichstyp feststellen, ob für den Benutzer im Eingabewert (mindestens) ein Lebenslauf-Dokument gefunden wird:

    • Der Angehängte Dokumente-Wertauflöser sucht nach Dokumenten vom Typ "Lebenslauf" (CV) und gibt im Erfolgsfall eine Liste von "Inhalt"-Objekten mit dem documentContent der gefundenen Dokumente zurück.

    • Der verkettete Wert als Variable speichern-Wertauflöser speichert die Ergebnisliste in der Variablen docCV. Wenn das vorliegende Zuordnungskriterium z. B. im Kontext einer Ereignisbehandlung als Sub-Zuordnungskriterium verwendet wird, kann über diese Variable auf die angehängten "Lebenslauf"-Inhalte zugegriffen werden.

images/download/attachments/119253859/image2023-1-24_13-49-41-version-1-modificationdate-1674564581864-api-v2.png

Laufzeitbeispiel: Wert der Variablen docCV, wenn genau ein angehängtes PDF-Dokument mit dem Dokumententyp "Lebenslauf" (CV) für den Benutzer gefunden wurde:

<value xsi:type="array">
<item mediaType="application/pdf" name="cv-2801.pdf" xsi:type="core:Content">
<body>JVBERi0xLjUNCiW1tbW1DQoxID[...]</body>
</item>
</value>
  • Der Rückgabewert ist ein array-Objekt mit einem Eintrag (item) vom Typ "Inhalt" (Content).

  • Das durch das item-Element repräsentierte "Inhalt"-Objekt beinhaltet neben dem base64-Dateiinhalt im body-Element auch die Felder "Medientyp"(mediaType) und "Name" (name) als XML-Attribute.

Komplexerer Anwendungsfall: Dateianhänge für eine Sendung zusammenstellen

Ein Eigenes Aktionsevent soll im Kontext eines Workflows für ein Geschäftsobjekt vom Typ "Sendung" (Sendungen) eine Benachrichtigung per E-Mail auslösen.

Der erzeugten E-Mails sollen folgende Dateien angehängt werden:

Der Textkörper (Body) der E-Mail soll die Namen der angehängten Dokumente auflisten. Deshalb sollen alle Anhänge in einer Listenvariablen attachments gesammelt werden, bevor die E-Mail-Versand-Ereignisaktion ausgeführt wird.

Konfiguration:

Der Screenshot rechts zeigt einen Ausschnitt aus einer Ereignisbehandlung, die die Zuweisung an die Listenvariable attachments per Setze Wert-Ereignisaktion regelt:

Auf der rechten Seite der Zuweisung wird die Liste aller relevanten Anhänge durch eine Wertauflöserkette zusammengestellt:

  • Der erste Eintrag im Erzeuge Liste-Wertauflöser beschafft die Inhalte aller Dokumente, die der Sendung im Eingabewert zugewiesen sind:

    • Hier wird der Angehängte Dokumente-Wertauflöser ohne Auswahl für den Parameter vom Typ verwendet, damit er die Inhalte aller Dokumente ohne Rücksicht auf den Dokumententyp als Array bereitstellt.

    • Der verkettete Eingabeobjekt (Typsicher)-Wertauflöser wandelt das Array in eine Liste (List) um, was hier erforderlich ist, da die Option Listen vereinen im weiter unten verketteten Sammle Werte-Wertauflöser das Array nicht automatisch wie eine echte Liste behandelt.
      HINWEIS◄ Der Typ "Inhalt" (Content) hier nur zwecks Transparenz in der Konfiguration explizit zugewiesen. Eine Typumwandlung auf der Ebene der Einträge ist hier weder erforderlich noch wäre sie in dieser Form überhaupt darstellbar (s. Eingabeobjekt (Typsicher)).

  • Der zweite Eintrag im Erzeuge Liste-Wertauflöser beschafft über den Dateireferenz-Wertauflöser die "Allgemeinen Geschäftsbedingungen" über einen statisch definierten relativen Pfad (./upload/AGB.pdf). Dieser Wertauflöser liefert zur Laufzeit den "Inhalt" (Content) der dort abgelegten Datei.

  • Der unterhalb verkettete Sammle Werte-Wertauflöser wandelt die oberhalb erzeugte "verschachtelte" Listenstruktur in eine flache Liste von "Inhalt"-Objekten um, indem die Option Listen vereinen gesetzt und der Wert zum Sammeln per Objekt-Feld-Wertauflöser ohne Auswahl eines Felds konfiguriert wird.
    WICHTIG◄ Es wäre hier kontraproduktiv für den Wert zum Sammeln anstelle des Objekt-Feld-Wertauflösers einen Eingabeobjekt (Typsicher)-Wertauflöser mit dem Typ "Inhalt" (Content) zu verwenden, da das Listen vereinen erst nach dem Wert zum Sammeln angewendet wird.

images/download/attachments/119253859/image2023-1-25_8-41-1-version-1-modificationdate-1674632461248-api-v2.png