-
- 31. Mai 2021 um 16:36 Uhr
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:
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:
Eine Nachricht sieht dann also z.B. so aus:
Das kannst Du dann benutzen, um in einem einfachen Prozess
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:
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.
10