Druckdokument

Siehe auch: Druckdokumente, Druckdokumenttyp, Druckdokumentkategorie

Wertauflöser - Kurzfassung

Zweck: Bildet die Daten von einem oder mehreren Bezugsobjekten auf ein explizit bereitgestelltes oder eines der im Datenkontext anwendbaren Druckdokumente ab und erzeugt daraus Inhalt in einem wählbaren Ausgabeformat.

images/download/attachments/153256999/image-2023-10-17_13-58-23-version-1-modificationdate-1697543903412-api-v2.png

Der Druckdokument-Wertauflöser bildet die Daten von einem oder mehreren serialisierbaren Objekten auf ein explizit bereitgestelltes oder eines der im Datenkontext anwendbaren Druckdokumente ab und gibt den daraus im gewählten Ausgabeformat erzeugten Inhalt als Datenobjekt des Typs Aktionsereignis-Inhalt (content) zurück.

Ausgehend vom Bezugsobjekt des Druckdokument-Wertauflösers wird analog zum interaktiven "Drucken" zunächst ein Objekt vom Typ "Drucken" (core:Print) erzeugt (s. a. Befehl "Druck-XML anzeigen" im "Export"-Ribbon in relevanten Views). Das Print-Objekt enthält einerseits allgemeine Informationen zum anwendbaren Anmeldekontext (v. a. Benutzer/user , Firma/currentOwner und Sprache/locale). Andererseits beinhaltet es die Daten der druckbaren Objekte (als Liste im Feld printObjects). In der Regel beziehen sich Druckdokumente auf ausgewählte Inhalte aus dem Print-Objekt, in dem sie über XPath-Ausdrücke auf die Struktur des Druck-XML zugreifen.

Hintergrund: Was sind "druckbare Objekte"?

Als "druckbare Objekte" werden alle serialisierbaren Objekte betrachtet, also solche, die sich auf eine serverseitig definierte Klasse beziehen und deren vordefinierte Datenstruktur verwenden.

  • Handelt es sich beim Bezugsobjekt des Druckdokument-Wertauflösers um ein einzelnes serialisierbares Objekt, dann erscheinen dessen Daten als einziges Element der Liste im Feld printObjects.

  • Handelt es sich beim Bezugsobjekt des Druckdokument-Wertauflösers um eine Liste von Objekten, dann listet das Feld printeObjects die Teilmenge der serialisierbaren Objekte aus dieser Liste auf.

HINWEIS◄ Während beim interaktiven "Drucken" durch den Kontext einer Übersicht sichergestellt ist, dass sich alle selektierten Objekte auf dieselbe Klasse beziehen, kann der Druckdokument-Wertauflöser auch mit einer Liste von Objekten unterschiedlicher Klassen ausgeführt werden. Sofern von dieser Möglichkeit Gebrauch gemacht wird, ist dies bei der Gestaltung der Druckdokumente und deren Zuordnungskriterien in geeigneter Form zu berücksichtigen.

Die Auswahl des effektiv verwendeten Druckdokuments erfolgt nach folgendem Schema:

Wenn eine Wert-Konfiguration für den Parameter Druckdokument vorliegt, wird für dessen Rückgabewert zur Laufzeit eine "Druckdokument"-Entität erwartet. Der Auswahlprozess über Zuordnungskriterien und weitere Parameter entfällt dann.

  • Ob einer explizit bereitgestellten "Druckdokument"-Entität überhaupt Zuordnungskriterien zugewiesen sind, ist ebenso unerheblich wie ob zugewiesene Zuordnungskriterien im Kontext zutreffen.

  • Der Datenstand einer explizit bereitgestellten "Druckdokument"-Entität kann auch "volatil" - also: ungespeichert - sein. Sie kann also gegenüber dem serverseitigen Stand geändert oder dort noch überhaupt nicht bekannt sein.

  • Liefert die Wert-Konfiguration keine "Druckdokument"-Entität oder eine, deren Dokumenttyp nicht mit dem gewählten Ausgabeformat kompatibel ist, ist der Rückgabewert "Kein Wert" ($null). Eine Fehlermeldung tritt nicht auf!

Nur wenn keine Wert-Konfiguration für den Parameter Druckdokument vorliegt, greift das konventionellen Auswahlverfahren mit den folgenden Schritten:

  1. Nach dem all-matching-Prinzip werden durch die Auswertung von Zuordnungskriterien die für den aktuellen Kontext anwendbaren Druckdokumente ermittelt:

    • Dies betrifft alle Druckdokumente mit einer Zuweisung zu mindestens einem Zuordnungskriterium, das im aktuellen Datenkontext zutrifft und für das im aktuellen Anmeldekontext Lesezugriff besteht.

    • Zuweisungen zu einer Variablen über die optionalen Parameter Suchschlüssel und Suchwert können innerhalb Zuordnungskriterien geprüft werden.

    • Falls kein Druckdokument existiert oder keines der konfigurierten Druckdokumente anwendbar ist, gibt der Druckdokument-Wertauflöser "kein Wert" (null) zurück.

  2. Soweit die Konfiguration Vorgaben für die teilweise optionalen Parameter Dokumenttyp, Modus und Kategorie beinhaltet, wir die Liste der anwendbaren Druckdokumente auf "geeignete" Kandidaten eingeschränkt (Detail s. "Konfiguration").

    • Entspricht keines der anwendbaren Druckdokumente sämtlichen verwendeten Kriterien, wird kein Inhalt erzeugt und der Rückgabewert des Wertauflösers ist "kein Wert" (null).

  3. Falls mehrere Druckdokumente sämtliche Kriterien erfüllen, gibt die Priorität der zutreffenden Zuordnungskriterien (aus dem 1. Schritt) den Ausschlag: Das zutreffende Zuordnungskriterium mit dem höchsten Wert für die Priorität bestimmt die Auswahl. Ergibt auch das noch keine eindeutige Zuordnung, wird das erste Druckdokument aus der Liste der gleich priorisierten Kandidaten verwendet.

Sofern nach diesem Schema ein für den "Druck" anwendbares Druckdokument identifiziert werden konnte, wird anschließend versucht, aus diesem Druckdokument das in der Konfiguration parametrierte Ausgabeformat (s. Drucktyp) als Rückgabewert zu gewinnen. Das Druckdokument kann dabei alle Inhalte aus dem Datenkontext berücksichtigen, die im Druck-XML enthalten sind, namentlich: druckbare Objekte (printObjects), Benutzer der Session, Firma der Session und Aktuelle Sprache.

HINWEIS◄ Die Optionen für das Ausgabeformat entsprechen grundsätzlich den Auswahlmöglichkeiten im Ribbon unter "Export/Druck" im interaktiven Ablauf:

images/download/attachments/153256999/image-2023-10-17_10-51-18-version-1-modificationdate-1697532680308-api-v2.png

Konfiguration

Eine Auswahl für den Parameter Ausgabeformat ist Pflicht. Sie legt das Format des erzeugten Aktionsereignis-Inhalts, also den Drucktyp für den Export fest.

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/warning.svg ACHTUNGimages/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/warning.svg Der als Ausgabeformat bestimmte Drucktyp kann nur erzeugt werden, wenn der Druckdokumenttyp in der Konfiguration des vom Wertauflöser automatisch ausgewählten Druckdokuments dieses Format auch unterstützt. Diese Kompatibilität ist allerdings kein Auswahlkriterium für die Auswahl des zu verwendenden Druckdokuments. Falls zur Laufzeit ein Druckdokument bereitgestellt oder ausgewählt wird, das das in der Konfiguration vorgegebene Ausgabeformat nicht unterstützt, gibt der Wertauflöser keinen Aktionsereignis-Inhalt sondern "Kein Wert" ($null) zurück.

  • Der Druckdokumenttyp "RAW" unterstützt das Ausgabeformat "Text" (TXT), "Web" (HTML) oder "Zebra" (ZPL).

images/download/attachments/153256999/image-2023-10-17_11-1-30-version-1-modificationdate-1697533291370-api-v2.png

Für die weitere Konfiguration sind zwei Varianten zu unterscheiden, die in den folgenden Abschnitten beschrieben werden.

Konfiguration mit explizit bereitgestelltem Druckdokument

Sobald eine Wert-Konfiguration für den Parameter Druckdokument vorliegt, werden alle weiteren Parameter (außer dem Pflichtfeld Ausgabeformat) ausgeblendet.

Als Rückgabewert der Wert-Konfiguration wird eine Entität des Typs "Druckdokument" erwartet, also eine konkrete Definition für ein Druckdokument (s. Druckdokumente).

Der Druckdokument-Wertauflöser verwendet den ggf. "volatilen" Datenstand für das bereitgestellte "Druckdokument", um daraus - typischerweise unter Berücksichtigung der Daten des Bezugsobjekts - den Inhalt für ein Dokument im ausgewählten Ausgabeformat zu erzeugen.

Im Beispiel rechts soll ein Variable-Wertauflöser das Druckdokument bereitstellen.

Typischerweise sollte man diese Variable über eine Suche (Ereignisaktion) für die Entität Druckdokumente befüllen, die geeignete Kriterien (z. B. den Namen des Druckdokuments und ggf. weitere Eigenschaften) enthält. Die Zuweisung über eine durch einen Long-Wert statisch festgelegte ID (id) ist mit Blick auf einen Meta Exchange zwischen Systemen (z. B. Test- und Produktivsystem) keine wirklich solide Lösung (s. Beispiel unten).


HINWEIS◄ Bei der Auswahl für den Typ ist die Auswahl der richtigen "Druckdokument"-Option entscheidend:

  • Korrekt ist: "Druckdokument" (de.lobster.scm.print.PrintDocument).

  • Aufgrund der identischen Lokalisierung leicht zu verwechseln mit:
    "Druckdokument" (de.lobster.scm.actionevent.actor.content.PrintDocumentContentBuilder)

images/download/attachments/153256999/image-2023-10-17_15-40-6-version-1-modificationdate-1697550006814-api-v2.png

Konfiguration für die automatische Zuweisung eines Druckdokuments

Die automatische Zuweisung eines Druckdokuments greift nur, wenn für den Parameter Druckdokument keine Wert-Konfiguration vorliegt.

HINWEIS◄ Eine bestehende Wert-Konfiguration muss über die Kontextmenüfunktionen "Ausschneiden" oder "Wert entfernen" gelöscht werden, damit die Konfigurationsoberfläche die Auswahlparameter wieder anzeigt. Das Zuweisen von Kein Wert für den Parameter Druckdokument ist dagegen nicht zielführend für diesen Zweck.

images/download/attachments/153256999/image-2023-10-17_10-53-49-version-1-modificationdate-1697532831037-api-v2.png

Der optionale Parameter Dokumenttyp kann verwendet werden, um einen bestimmten Druckdokumenttyp festzulegen, dem das auszuwählende Druckdokument entsprechen muss. Alle Druckdokumente müssen eindeutig einem hier auswählbaren "Typ" zugeordnet sein.

Ohne Auswahl für den Dokumenttyp werden anwendbare Druckdokumente ohne Rücksicht auf ihren "Typ" akzeptiert.

HINWEIS◄ Anwendbare Dynamische Aufzählungsfilter für den Druckdokumenttyp schränken die Auswahl im Zuge der Konfiguration ein, nicht aber die Anwendbarkeit von Druckdokumenten zur Laufzeit.

HINWEIS◄ Der Typ "GLS BOX" (GLS_BOX) ist nur verfügbar, wenn das betreffende Modul installiert und lizenziert ist.

images/download/attachments/153256999/image-2023-10-17_11-5-12-version-1-modificationdate-1697533514109-api-v2.png

Eine Angabe für den Parameter Modus ist Pflicht. Sie definiert eine Anforderung für den Druckdokumentmodus, den das auszuwählende Druckdokument unterstützen muss. Alle Druckdokumente müssen eindeutig einem hier auswählbaren "Modus" zugeordnet sein. Die Angabe bezieht sich darauf, ob das Druckdokument im printObjects-Feld des übergebenen Druck-XML (bzw. Print-Objekts) ein einzelnes oder multiple Objekte erwartet.

  • Ein Druckdokument mit dem Modus "Einzeln und Multi" ist mit jeder Auswahl für den Parameter Modus kompatibel.

  • Die Auswahl "Einzeln und Multi" für den Parameter Modus akzeptiert nur Druckdokumente für diesen Modus.

HINWEIS◄ Anwendbare Dynamische Aufzählungsfilter für den Druckdokumentmodus schränken die Auswahl im Zuge der Konfiguration ein, nicht aber die Anwendbarkeit von Druckdokumenten zur Laufzeit.

images/download/attachments/153256999/image-2023-10-17_11-6-4-version-1-modificationdate-1697533565657-api-v2.png

Ein Wiederholendes Element für den Parameter Kategorie ermöglicht optional die Angabe von Werten aus der Dynamischen Aufzählung Druckdokumentkategorie. Sofern mindesten eine Kategorie ausgewählt ist, werden nur Druckdokumente berücksichtigt, deren "Kategorie" einem der hier angegebenen Werte entspricht.

Solange keine Kategorie angegeben ist, werden anwendbare Druckdokumente ohne Rücksicht auf ihre "Kategorie" akzeptiert.

HINWEIS◄ Anwendbare Dynamische Aufzählungsfilter für die Druckdokumentkategorie schränken die Auswahl im Zuge der Konfiguration ein, nicht aber die Anwendbarkeit von Druckdokumenten zur Laufzeit.

images/download/attachments/153256999/image-2023-10-17_13-59-50-version-1-modificationdate-1697543990568-api-v2.png

Die Parameter Suchschlüssel und Suchwert können in Kombination genutzt werden, um durch statische Texte anzugeben, dass einer Variablen mit dem per Suchschlüssel definierten Namen der Textwert aus dem Parameter Suchwert zugeordnet wird, bevor die Auswahl der anwendbaren Druckdokumente anhand von Zuordnungskriterien ausgeführt wird.

Entsprechende Zuweisungen können innerhalb der für Druckdokumente zugewiesenen Zuordnungskriterien untersucht werden, etwa um mit einer Variablenregel die exakte Übereinstimmung mit dem Suchwert festzustellen oder in einer Objekt-Feld-Regel mit dem Variable-Wertauflöser (per Beginnt mit, Endet mit oder Enthält-Matcher) eine teilweise Übereinstimmung.

images/download/attachments/153256999/image-2023-10-17_14-1-45-version-1-modificationdate-1697544105483-api-v2.png

Beispiele

Einfaches Beispiel mit direkter Bereitstellung des Druckdokuments

Wir haben ein Druckdokument mit dem Namen "HELLO_USER" und dem Druckdokumenttyp "RAW" angelegt und zur Definition der RAW-Ausgabe eine Textdatei mit folgendem Inhalt hochgeladen:

Hello {/core:Print/base:User/address/@name1}!

Dieses "Druckdokument" kann in einem beliebigen Kontext eingesetzt werden, um einen Anrede-Text (z. B. für einen Hinweis) für den angemeldeten Benutzer zu erzeugen.

Laufzeitbeispiel:

Hello Karola!

Das betreffende Druckdokument soll im Kontext einer Ereignisbehandlung ohne Berücksichtigung von Zuordnungskriterien etc. direkt herangezogen werden, um den im Titel eines Hinweises auszugeben.

Konfiguration:

Als vorbereitenden Schritt führen wir eine Suche (Ereignisaktion) aus, um die relevante Instanz der Druckdokument-Entität zu identifizieren:

  • Der Parameter Ergebnis speichern als gibt den Name der Variablen (myPrintDocument) an, in die das Suchergebnis geschrieben werden soll.

  • Die Suche soll die Entität "Druckdokument" (PrintDocument) mit dem Modus "Erstes Ergebnis" betreffen, sodass als Rückgabewert direkt das erste Druckdokument ist, das die Bedingung erfüllt.

  • As einzige Bedingung sehen wir eine Feld Einschränkung für die Feldprojektion auf das "Name"-Feld (name) vor, dessen Inhalt exakt "HELLO_USER" lauten soll.

ANMERKUNGEN

    • Sofern mehrere Druckdokumente mit dem gesuchten Namen angelegt werden, liefert die Datenbank das mit der höchsten internen ID. Die zuletzt erstellte Variante demnach herangezogen. Unter Umständen könnten zusätzliche UND-verknüpfte Kriterien (z. B. für den Druckdokumenttyp, die Druckdokumentkategorie oder das Feld "Beschreibung" genutzt werden, um Verwechslungen zu vermeiden.

    • Auf eine Fehlerbehandlung für den Fall, dass kein passendes Druckdokument gefunden wird, verzichten wir in diesem Beispiel.

    • Natürlich muss der Lesezugriff auf Druckdokumente im Ausführungskontext gegeben sein, damit wir überhaupt eine Druckdokument-Definition per Suche (Ereignisaktion) inden können. Bei Bedarf kann die Suche (Ereignisaktion) innerhalb einer Ausführen als-Ereignisaktion in einem abweichenden Kontext ausgeführt werden, damit die Variable sicher befüllt werden kann.

images/download/attachments/153256999/image-2023-10-17_16-48-5-version-1-modificationdate-1697554085527-api-v2.png

Das über die Variable myPrintDocument identifizierte "Druckdokument" wird anschließen in einem Druckdokument-Wertauflöser im Parameter Druckdokument verwendet, um in Verbindung mit dem Ausgabeformat "Text" (TXT) den Inhalt für den Titel einer Hinweis anzeigen-Ereignisaktion zu definieren. Die Meldung unterhalb ist als statischer Text definiert.

HINWEIS◄ Der Druckdokumenttyp "RAW" liefert hier Klartext, der direkt ausgegeben werden kann.

Laufzeitbeispiel:

images/download/attachments/153256999/image-2023-10-17_17-12-3-version-1-modificationdate-1697555523836-api-v2.png

ANMERKUNG◄ Im Beispiel erfolgt die Ausgabe ohne Rücksicht auf die die Aktuelle Sprache in Englisch. Im Druckdokument könnten man zwar auf lokalisierte Inhalte für Textabschnitte zugreifen. Alternativ könnte man auch sprachspezifische Druckdokumente erstellen und die Aktuelle Sprache bei der Suche (Ereignisaktion) einbeziehen, um nach Namen wie "HELLO_USER_en" oder "HELLO_USER_fr" zu suchen.

images/download/attachments/153256999/image-2023-10-17_17-9-7-version-1-modificationdate-1697555347806-api-v2.png

Komplexeres Beispiel mit direkter Bereitstellung des Druckdokuments

Das reine Ausfüllen eines "XPath-Lückentexts" mit Informationen aus dem Aufrufkontext - wie im vorherigen Beispiel - könnte man z. B. über den Vorlage-Wertauflöser oder eine Textverkettung noch "direkter" umsetzen. Aber das Anwendungsbeispiel war zugunsten der Übersichtlichkeit auch untypisch einfach gehalten.
In der Praxis kommen typischerweise aufwändigere Druckdokumente mit dem Druckdokumenttyp "Jasper Report" (s. Integration Jaspersoft Studio) zum Einsatz, für die dann auch komplexere Ausgabeformate (z. B. PDF) unterstützt werden.

Das folgende Konfigurationsbeispiel demonstriert, wie man ausgehend von einer Suche (Ereignisaktion) mit dem Modus "Ergebnisliste" dem Benutzer die Wahl überlässt, welches Druckdokument verwendet werden soll, um Kontextdaten in einem neuen Tab als PDF anzuzeigen.

Konfiguration:

Innerhalb einer Ereignisbehandlung werden folgende Ereignisaktion verkettet:

  • Die einleitende Suche (Ereignisaktion) ermittelt anhand von für den Einsatzfall maßgeschneiderten Kriterien alle für den gegebenen Kontext qualifizierten Druckdokumente und schreibt die "Ergebnisliste" in eine willkürlich benannte Variable candidatePrintDocuments.

  • Die nachfolgende Öffne Kontextmenü-Ereignisaktion bietet die Kandidaten zur Auswahl an und benennt im Beschriftungsausdruck den "Namen" (name) und den Druckdokumentmodus (mode) des Kandidaten. Die Auswahl wird auf eine weitere willkürlich benannte Variable selectedPrintDocument abgebildet.

    ANMERKUNGEN◄ Nach dem Aufrufen eines Kontextmenüs sollte eigentlich geprüft werden, ob eine Auswahl getroffen wurde oder nicht. Auf die typische Wenn Dann Sonst-Ereignisaktion für die bedingte Ausführung von Aktionen haben wir hier zugunsten der Übersichtlichkeit verzichtet. Man könnte vor dem Aufruf eines Kontextmenüs natürlich auch prüfen, ob überhaupt eine Auswahl aus mehreren Kandidaten erforderlich ist. Wenn die Suche kein Ergebnis liefert, sind weitere Schritte überflüssig. Liegt ein eindeutiges Ergebnis vor, möchte man das betreffende Druckdokument vielleicht ohne Auswahl anzeigen.

  • Auf das ausgewählte Druckdokument greifen wir abschließend über die Variable selectedPrintDocument zu, um zunächst über den Druckdokument-Wertauflöser den Inhalt für die aktuellen Kontextdaten (Bezugsobjekt, Anmeldekontext) zu erzeugen, Das zurückgegebene "Inhalt"-Datenobjekt wird hier gleich dem Parameter Inhalt zum Anzeigen einer Inhalt anzeigen-Ereignisaktion zugeführt. Das PDF erscheint in einem eigenständigen Browser-Tab, sofern der Browser diesen Dateityp direkt anzeigen kann. Alternativ wird es als Datei heruntergeladen.

images/download/attachments/153256999/image-2023-10-18_7-30-27-version-1-modificationdate-1697607028132-api-v2.png

Beispiel mit konventioneller Auswahl des Druckdokuments

Im folgenden Beispiel wird das anwendbare Druckdokument über den konventionellen Mechanismus unter Berücksichtigung von Zuordnungskriterien und parametrierten Eigenschaften ausgewählt.

Ausgelöst durch ein Eigenes Aktionsevent soll eine Suche (Ereignisaktion) alle Sendungen mit dem Arbeitsstatus "Freigegeben" für einen bestimmten Empfänger ermitteln.

Der Empfänger soll per E-Mail über die freigegebenen Sendungen informiert werden und dabei im E-Mail-Anhang ein HTML-Dokument erhalten, das wichtige Informationen zu einer Sendung in einem standardisierten "Lieferschein" widerspiegelt.

Wie im Beispiel rechts gezeigt, soll der "Lieferschein" dabei die Namen und Werte von allen Textattributen, Numerischen Attributen und Referenzattribute im Sendungskopf tabellarisch auflisten, denen ein konkreter Wert zugewiesen ist.

Als Werte eines Textattributs (TRACKING_LINK) erscheint hier auch eine URL über die Lobster Data Platform / Orchestration weitere Details zur Tracking-Historie der jeweiligen Sendung bereitstellt.

images/download/attachments/153256999/image2021-11-23_16-32-44-version-1-modificationdate-1697529719527-api-v2.png

Das folgende Beispiel für die Definition eines Druckdokuments mit dem Dokumententyp "RAW" soll veranschaulichen, wie der Quelltext für das oben angezeigte HTML-Dokument erzeugt werden könnte. Details zur Syntax werden in der Dokumentation für den Vorlage-Wertauflöser erörtert, der nach derselben Logik die Daten eines Print-Objekts über XPath-Ausdrücke auswertet, um eine bestimmte Textausgabe zu generieren. Hier soll der Quelltext für ein komplettes HTML-Dokument als Textausgabe erzeugt werden, das die relevanten Daten aller Sendungen auswertet, die das Feld printObjects zur Laufzeit für den konkreten Datenkontext auflistet.

Beispiel für ein RAW-Druckdokument
<html><body>
<h2>{$r(de.lobster.scm.base.bto.workingstate.WorkingState,RELEASED)}</h3>
<hr>
{$foreach({//printObjects/*})
<h3>{$r(de.lobster.scm.print.PrintDocumentKind,DELIVERY_NOTE)} #{@id} - {$with({attributes/shp:ShipmentDate/value[@dateType='ARRIVAL_PLANNED']/date}){$date(dd.MM.yy,{@start};{@timeZone})}}</h3>
<style>
table \{border: 1px solid grey; font-family: Courier\}
tr:nth-child(odd) \{background-color: #DDDDDD;\}
td:nth-child(1) \{background-color: grey; color: white; text-align:right\}
</style>
<table>
{$foreach({attributes/shp:ShipmentText/value[textValue/text()!='']})<tr><td>{@textType}</td><td>{textValue}</td></tr>}
{$foreach({attributes/shp:ShipmentNumericValue/value[@value>0]})<tr><td>{@numericValueType}</td><td>{@value} {@unit}</td></tr>}
{$foreach({attributes/shp:ShipmentReference/value[@reference!='']})<tr><td>{@referenceType}</td><td>{@reference}</td></tr>}
</table>
}
</body></html>

HINWEIS◄ Analog zu diesem Anwendungsfall könnten XPath-Ausdrücke verwendet werden, um anstelle eines HTML-Dokuments den ZPL-Quelltext für einen "Zebra"-Etikettendruck mit Sendungsdaten zu erzeugen.

Konfiguration:

Innerhalb einer Ereignisbehandlung wird zunächst die Suche (Ereignisaktion) ausgeführt, um die relevanten freigegebenen Sendungen zu identifizieren.

  • Die Suche (Ereignisaktion) schreibt die gefundenen Sendungen hier als "Suchwert" in die Variable releasedShipments. Diese wird anschließend über den Variable-Wertauflöser im Objekt Resolver einer Ausführen mit-Ereignisaktion als abweichendes Bezugsobjekt angegeben.

  • Damit steht die Liste der relevanten Sendungen als Bezugsobjekt für den Druckdokument-Wertauflöser bereit, der innerhalb einer E-Mail-Versand-Ereignisaktion im Reiter Anhänge eingesetzt wird, um den Parameter Inhalt, also die als Datei anzuhängenden Daten, zu definieren:

    • Auf eine optionale Angabe für den Dokumenttyp für das Druckdokument wurde hier verzichtet.

    • Da als Modus "Einzeln und Multi" ausgewählt wurde, muss dieser Modus auch für das Druckdokument eingestellt sein.

    • Die Auswahl der Druckdokumentkategorie "Lieferschein" muss im auszuwählenden Druckdokument ebenfalls ausgewählt sein.

    • Als Ausgabeformat wird hier "Web" (HTML) zugewiesen. Dies legt hier v. a. fest, dass im Feld mediaType für den erzeugten
      Aktionsereignis-Inhalt der Textwert text/html eingetragen wird. Diese Zuordnung übernimmt die E-Mail-Versand-Ereignisaktion per Standard für den Parameter Mime type (weiter unten).

    • Als Suchschlüssel wird der Variablenname shipmentFormat angegeben. Dieser Variablen wird der Suchwert htmlList zugeordnet. Ein Zuordnungskriterium, das diesen willkürlich zugeordneten Wert z. B. durch eine Variablenregel prüft, sollte also verwendet werden, um gezielt bestimmte Druckdokumente für den zugehörigen Automatisierungskontext zu qualifizieren:

      images/download/attachments/153256999/image2021-11-23_18-0-23-version-1-modificationdate-1697529719513-api-v2.png



  • Als Dateiname für den Anhang wird hier statisch der Text "details.htm" festgelegt, um darauf hinzuweisen, dass Details im HTML-Format angehängt wurden.

images/download/attachments/153256999/image-2023-10-17_14-47-50-version-1-modificationdate-1697546870088-api-v2.png

Laufzeitbeispiel:

Die nachfolgend abgebildete E-Mail wurde mit dem oben abgebildeten E-Mail-Anhang "details.htm" erzeugt:

images/download/attachments/153256999/image2021-11-23_18-11-59-version-1-modificationdate-1697529719510-api-v2.png

ANMERKUNG◄ Die oben abgebildete Vorschau zeigt den E-Mail-Body, der hier ebenfalls im HTML-Format über den Druckdokument-Wertauflöser erzeugt wurde. Allerdings wurde dabei über den Kategorie-Parameter mit der Auswahl "Textbaustein" (oben: "Lieferschein") ein anderes Druckdokument herangezogen, das eine Definition wie die folgende verwendet:

Beispiel für ein RAW-Druckdokument
<h3>{$r(de.lobster.scm.base.bto.workingstate.WorkingState,RELEASED)}</h3>
<hr>
<ul>
{$foreach({//printObjects/*})
<li>{$r(de.lobster.scm.print.PrintDocumentKind,DELIVERY_NOTE)} #{@id}
- {$with({attributes/shp:ShipmentDate/value[@dateType='ARRIVAL_PLANNED']/date}){$date(yyyy-MM-dd,{@start};{@timeZone})}}
- {$with({attributes/shp:ShipmentText/value[@textType='TRACKING_LINK']})<a HREF="{textValue}">{textValue}</a>}
</li>
}
</ul>
<hr>
  • Der HTML-Quelltext kommt hier ohne die Elemente html und body aus, da diese im E-Mail bereitgestellt werden.

  • Im Unterschied zum HTML-Anhang definiert das Druckdokument für den Mail-Body die Tracking-Links als Anker-Elemente (a), die ggf. auch mit einer alternativen Beschriftung ("Tracking-Link") versehen werden könnten.
    HINWEIS◄ Damit ein öffentlicher Tracking-Link funktioniert, muss per Lobster_data ein Web-Service konfiguriert werden, der geeignete Daten bereitstellt.