Alarm bei Auftragsauslieferung - Workflow-Ereignis-Handler

Wenn ein Auftrag an ein Unternehmen ausgeliefert wird und ein Portalanwender aus diesem Unternehmen Auftragsauslieferungsalarme abonniert hat, informiert dieser Ereignis-Handler den Anwender über die erfolgte Auslieferung.

Wenn der Ereignis-Handler aktiviert wird, wird ein neuer Ereignis-Trigger für den Alarm erstellt, um die Planung der Email-Benachrichtigungen für diesen Alarm zu steuern. Standardmäßig werden Auftragsauslieferungsalarme täglich um 15:00 Uhr ausgesendet. Die Standardeinstellungen im Zusammenhang mit der Terminierung des Ereignisses können Sie in der Maske Ereignis-Trigger ändern, indem Sie die Werte für die Bedingung, für das Intervall für das erneute Testen der Bedingung und für das Trigger-Zurücksetzungsintervall in der Maske zurücksetzen.

Wenn der Ereignis-Handler aktiviert und der Ereignis-Trigger OrderShippingAlert für die Auftragsauslieferungsalarme erstellt wurde, verwendet das System die Tabelle TrackRows, um eine Liste der Lieferungen zu führen, für die Benachrichtigungen gesendet werden müssen (sofern beim Kunden Abonnenten für Auftragslieferungsalarme vorhanden sind). Diese Liste wird bei jeder Auslieferung eines Auftrags aktualisiert.

Technische Details

Der Ereignis-Trigger führt täglich zum angegebenen Zeitpunkt die gespeicherte Prozedur OrderShippingAlertsSp aus. Dabei werden die folgenden Tasks ausgeführt:

  • Anhand der Kundennummern wird geprüft, ob Publikationsabonnenten für Auftragslieferungsalarme vorhanden sind. Die Publikationsabonnenten werden in der Maske Publikationsabonnenten mithilfe von Publikationsname = 'OrderShippingAlert' und Schlüsselwert = Kundennummer gesucht.
  • Wenn Publikationsabonnenten vorhanden sind, ruft die gespeicherte Prozedur die Email-Adressen für die Abonnenten ab. Dabei wird die Adresse verwendet, die in der Maske Anwender definiert wurde.
  • Für jeden Publikationsabonnenten sucht die gespeicherte Prozedur alle Datensätze zu Auftragslieferungen für diesen Kunden, die seit der letzten Ausführung der gespeicherten Prozedur erstellt wurden. Diese werden in eine Variable eingefügt, die als Nachrichtentext einer Email verwendet wird.
  • Die gespeicherte Prozedur gibt die folgenden Werte aus:
    • Eine Variable mit einer Liste der Abonnenten.
    • Ein Nachrichtentext für die Email mit der Alarmmeldung zur Auftragslieferung.

    Der Nachrichtentext einer Email sollte immer nur einen Auftrag und die zugehörigen Positionen enthalten. Der Nachrichtentext hat eine Kapazität von etwa 4.000 Zeichen (ungefähr 40 Zeilen). Wenn der erstellte Nachrichtentext mehr als 4.000 Zeichen enthält, wird eine weitere Email mit den Positionen erstellt, die nicht mehr in die vorherige Email gepasst haben.

Nachdem die Email mit der Benachrichtigung über die verspätete Auftragslieferung erfolgreich gesendet wurde, wird der Inhalt der Tabelle "TrackRows" durch die gespeicherte Prozedur "DeleteCoShipTrackRowsSp" gelöscht.

Das Ereignis OrderShippingAlert enthält 3 Aktionen:

  • Aktionstyp: Datenbankmeth. aufr. Ruft OrderShippingAlertsSp auf und gibt zwei Variablen zurück, eine Variable für die Liste der Abonnenten und die zweite Variable für den Nachrichtentext.
  • Aktionstyp: Email senden: Erstellt eine Email und sendet sie an die Abonnenten in der Liste und verwendet dabei die Variablen, die von OrderShippingAlertsSp übergeben wurden.
  • Aktionstyp: Datenbankmeth. aufr. Ruft DeleteCoShipTrackRowsSp auf. Dieser Aufruf erfolgt nur dann, wenn eine Email, die in der vorherigen Aktion generiert wurde, erfolgreich gesendet wurde.

Für die Terminierung des Ereignis-Triggers OrderShippingAlert werden die folgenden Standardwerte verwendet:

  • Bedingung: CONDITION(DATEPART(hour, CURDATETIME()) = 15)
  • Intervall für erneutes Testen der Bedingung: 60
  • Trigger-Zurücksetzungsintervall: 85.500
  • Planung: Täglich um 15:00 Uhr Trigger wird für 23,75 Stunden deaktiviert und überprüft die Bedingung dann minütlich im verbleibenden Zeitraum bis 15:00 Uhr.