Antwort auf: Zeitgesteuerte Aufgabe: Zeitpunkt der letzten Ausführung ermitteln

    Sebastian Melzer
    Moderator
    Hallo Stefan,

    dafür kannst Du eine Kombination aus der neuen zeitgesteuerten Aufgabe Nachricht mit Zeitstempel erstellen und einem einfachen Abfrage-Prozess nutzen.

    Ich habe Dir dafür mal ein kleines Best-Practice gebaut:
    Orchestrierung im Best-Practice-Beispiel

    Der Einstieg ist die zeitgesteuerte Aufgabe 20minuteTrigger, vom Typ Nachricht mit Zeitstempel erstellen. Sie erzeugt eine TRANSCONNECT®-Nachricht, die den aktuellen sowie den letzten Ausführungszeitpunkt enthält. Neben den bekannten zeitlichen Konfigurationsmöglichkeiten kannst Du den erzeugten Nachrichtentyp, das gewünschte Zeitstempel-Format, die Zeitzone sowie die Ausführungsart (synchron oder asynchron) einstellen:
    Aufgabe 20minuteTrigger im Best-Practice-Beispiel

    Eine Nachricht sieht dann also z.B. so aus:
    Beispiel-Nachricht im Best-Practice-Beispiel

    Das kannst Du dann benutzen, um in einem einfachen Prozess
    Prozess im Best-Practice-Beispiel
    Deine Datenbankabfrage per Transformation zusammenzustellen:

    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xsl:template match="/">
       <ROOT>
          <SELECT>
             <COLUMN NAME="data" />
             <COLUMN NAME="updated_at" />
             <FROM TABLE="example_table" />
             <WHERE>updated_at > ?
                <VALUE TYPE="Datetime" FORMAT="yyyy-MM-dd HH:mm:ss Z">
                   <xsl:value-of select="//LASTRUN" />
                </VALUE>
             </WHERE>
          </SELECT>
       </ROOT>
    </xsl:template>
    </xsl:stylesheet>

    Den letzten Ausführungszeitpunkt kannst Du übrigens auch von Hand überschreiben, um zum Beispiel bei der ersten Ausführung gleich den richtigen Zeitraum zu importieren. Dazu klickst Du einfach in der Aufgabe auf Letzte Ausführung und stellst das gewünschte Datum ein. Wenn Du das nicht machst, enthält die erste Ausführung der Aufgabe nur den aktuellen Zeitstempel:
    Beispiel-Nachricht für erste Ausführung im Best-Practice-Beispiel

    Das vollständige Minimalbeispiel hier als Repo zum Downloaden (erstellt mit TRANSCONNECT®-Version: 2.3.4.15176), dann kannst Du es selber ausprobieren:

    https://community.transconnect-online.de/user_uploads/1396/BestPractice_QueryUsingLastRun

    Feedback oder Fragen? Immer her damit!

    Viele Grüße,

    Sebastian

    PS: Der große Vorteil dieser Lösung ist, dass Du sie auf beliebige Zielsysteme anwenden — und dabei die volle Mächtigkeit von Transformationen, Prozessen und Fehlerbehandlung bei Nachrichten benutzen kannst.

    PPS: Wenn Du Deine Abfrage um ein “updated_at <= //TIMESTAMP” ergänzt, kannst Du im Fall eines Verbindungsabbruchs einfach alle fehlgeschlagenen Nachrichten neu routen und hast damit automatisch alle fehlenden Zeiträume ergänzt.

    1
    0