Zum Inhalt springen

Erfassen Sie Datenänderungen mit Tabellen- oder Dateiänderungen im Jitterbit Design Studio

Anwendungsfall

Wenn andere Muster zur Änderungsdatenerfassung nicht durchführbar sind (Integrationsmuster zur Änderungsdatenerfassung mithilfe zeitstempelbasierter Abfragen, Integrationsmuster zur Änderungsdatenerfassung unter Verwendung von Quellfeldwerten, Integrationsmuster zur Änderungsdatenerfassung unter Verwendung von Dateiquellen, Integrationsmuster: Änderungsdatenerfassung - in Echtzeit/ereignisgesteuert), könnte dieses Muster zutreffen.

Dieses Muster gilt in Fällen, in denen die Quelle keinen Zeitstempel hat, nicht geändert werden kann, um ein für die Abfrage zu verwendendes Feld bereitzustellen, oder keine Änderungen senden kann.

Dieses Muster setzt voraus, dass die Quell- und Zieldatensätze verglichen und die Unterschiede isoliert werden können. Nehmen wir beispielsweise an, dass eine Kundentabelle in einer Quelle 150 Zeilen und die Kundentabelle im Ziel 100 Zeilen hat. Ziel ist es, die Zeilen in der Quelle zu ermitteln, die neu (nicht im Ziel vorhanden), unterschiedlich (dieselbe Zeile und unterschiedliche Daten) und fehlend (Zeile im Ziel nicht vorhanden) sind. Wenn neu, dann in das Ziel einfügen. Wenn unterschiedlich, die Zeile im Ziel aktualisieren. Wenn fehlend, aus dem Ziel löschen.

Die Dokumentation der Jitterbit-Diff Funktion enthält detaillierte Erklärungen zu den verschiedenen Diff Funktionen: Diff-Funktionen.

Ein häufiger Anwendungsfall dieses Musters ist, dass ein Prozess benötigt wird, um eine Änderung in einer Datenbanktabelle von einem Zeitraum zum nächsten abzurufen.

Warnung

Diff-Funktionen können nur auf einem einzelnen privaten Agenten verwendet werden, da Diff-Snapshots nicht freigegeben werden. Verwenden Sie sie nicht in einer Agentengruppe mit mehr als einem Agenten. Sie werden von Cloud-Agenten nicht unterstützt.

Beispiel 1: Datenbank-zu-Datenbank-Vergleich

In diesem Beispiel verfügt der Kunde über eine Datenbank, die einem Transaktionssystem zugrunde liegt, und möchte zu Prüfzwecken bestimmte Geschäftsobjekte mit einem externen Datenspeicher synchronisieren.

Die grundlegenden Schritte sind:

  • Initialisieren Sie den Diff und fügen Sie Datensätze zum Snapshot auf der Festplatte hinzu. Wenn der Prozess nicht zum ersten Mal ausgeführt wird, werden hierdurch die neuen Datensätze ausgewählt.
  • Übergeben Sie neue Datensätze an die Transformation und aktualisieren Sie die Zieldatenbank.
  • Verarbeiten der Aktualisierungen (Änderungen seit der letzten Ausführung des Prozesses)
  • Übergeben Sie die Transformation und aktualisieren Sie die Zieldatenbank
  • Verarbeiten der Löschungen
  • Übergeben Sie die Transformation und aktualisieren Sie die Zieldatenbank

Anhang

Der Main- Operation steuert eine Reihe verketteter Vorgänge und wählt als Beispiel nur eine Tabelle aus.

Durch Übergeben eines 'false' Argument, das RunOperation() Funktionen (siehe Allgemeine Funktionen des Formel-Generators) wird asynchron ausgeführt:

Anhang

InitializeDiff wird aufgerufen und ausgewertet. Wenn dies fehlschlägt, wird ResetDiff aufgerufen.

DiffKeyList legt die eindeutige Kennung des Datensatzes fest.

Wenn dies das erste Mal ausgeführt wird, werden alle Datensätze in der Quelle zum Snapshot hinzugefügt. Andernfalls werden die neuen Datensätze ausgewählt.

Kommt es zu einer Störung, wird die Operation abgebrochen.

Anhang

Anhang

Dies ist die von der Operation verwendete Transformation. Beachten Sie, dass, obwohl eine DB-Quelle vorhanden ist, die Quelle der Operation nicht verwendet wird, wenn dem Operation ein Diff-Aufruf vorangeht. Wenn ein DiffUpdate aufgerufen wird, wird diese Operation aufgerufen und wir erhalten die Ausgabe der DiffUpdate-Funktion:

Anhang

Anhang

Ruft DiffUpdate auf. Beachten Sie die Verwendung eines globalen Variablentags, um dem Ziel anzuzeigen, welche Art von Aktion ausgeführt wurde.

Anhang

Anhang

Anhang

Anhang

Dieses Script wird der Vollständigkeit halber angezeigt. Der Kunde wollte einen Datensatz der neuen und geänderten Zeilen speichern und nicht zwei Datenspeicher synchronisieren. Daher wurde in den Diff-Prozessen eine Methode zur Generierung eindeutiger Schlüssel integriert, die die Änderungen am gleichen Datensatz im Laufe der Zeit anzeigen.

Anhang

Anhang

Beispiel 2: Vergleich zwischen Organisationen

In diesem Beispiel werden zwei Salesforce Objekte gleichzeitig verglichen.

Im Allgemeinen sind die Diff-Schritte:

  • Löschen Sie die alte Diff Datei (ResetDiff). Wir verfolgen keine Änderungen im Laufe der Zeit. Wir verfolgen die Unterschiede zwischen Quell- und Zieldateien zum aktuellen Zeitpunkt.
  • Erstellen Sie den Diff (InitializeDiff). Dadurch wird ihm ein eindeutiger Name zugewiesen, der als Schlüssel für das Diff-Verzeichnis verwendet wird, das auf der privaten Agent-Server-Festplatte erstellt wird. Der Objektname wird als Diff-Name verwendet.
  • Legen Sie das Schlüsselfeld (DiffKeyList) fest. Dadurch wird Diff mitgeteilt, welches Feld in der Zeile das Schlüsselfeld ist und zum Vergleichen bestimmter Zeilen in der neuen Diff-Datei mit Zeilen in der alten Diff Datei verwendet wird.
  • Füllen Sie den Diff (DiffAdd) aus der Zielkundentabelle (in diesem Fall eine CSV-Datei, die durch Abfragen der Zielkundentabelle erstellt wurde). Die Zeilen aus der „Quelle“ (in diesem Fall die CSV-Datei, die durch Abfragen der Zielkundentabelle erstellt wurde) werden in die Diff Datei eingelesen. Das Verhalten ist anders, wenn die Diff Datei leer ist, d. h. wenn der Diff zum ersten Mal erstellt wird.
  • Speichern Sie den Diff (DiffComplete). An diesem Punkt gibt es einen Snapshot der Zielkundentabelle auf der privaten Agent-Server-Festplatte.
  • Starten Sie den Vergleich der Quelle (in diesem Fall eine CSV-Datei, die durch Abfragen der Quell-Kundentabelle erstellt wurde) mit dem Ziel (eine CSV-Datei, die durch Abfragen der Ziel-Kundentabelle erstellt wurde), beginnend mit dem Lesen der Datensätze in der Quell-CSV-Datei (DiffAdd). Obwohl wir also dieselbe DiffAdd-Funktion wie oben verwenden, verhält sie sich anders, da eine vorhandene Diff Datei vorhanden ist. Dieses Mal vergleicht sie die beiden Dateien und gibt die neuen Zeilen basierend auf dem von der DiffKeyList festgelegten Feld aus.
  • Vergleichen auf Basis von Änderungen (DiffUpdate). Diff hasht die einzelnen Datensätze sowohl in der alten als auch in der neuen Datei und identifiziert geänderte Datensätze auf Basis desselben Schlüssels, aber unterschiedlicher Hashes. Dadurch werden die geänderten Zeilen ausgegeben.
  • Speichern Sie den Diff (DiffComplete).
  • Löschen Sie das Diff (ResetDiff).

Anhang

Dieses Beispiel umfasst zwei Salesforce-Organisationen mit identischen Objekten und Feldern. Die Quellorganisation enthält Daten, die entweder in die Zielorganisation eingefügt oder dort aktualisiert werden müssen. Aufgrund der Verwendung von Triggern und Updates ist eine einfache Abfrage der Quelle anhand eines Objektzeitstempels nicht praktikabel. Eine vollständige Kopie durch Abfrage der gesamten Quelle und Upserving in das Ziel ist eine praktikable Methode, kann bei sehr großen Datensätzen jedoch sehr zeitaufwändig sein. Hier wurde eine Migration der Unterschiede zwischen den Quell- und Zielorganisationen mithilfe von Diff() bevorzugt Funktionen.

Da Diff nur mit Datenbanken oder CSV-Dateien arbeiten kann, werden die Quell- und Zielabfragen in dieses Format konvertiert:

Dadurch wird das Ziel abgefragt, und es gibt eine ähnliche Operation, die die Quelle abfragt.

Beachten Sie, dass die Abfrage auf Geschäftsdaten beschränkt ist und Systemdaten wie LastModifiedDate, die sich von Quelle und Ziel unterscheiden, sowie Datensatz-IDs ausschließt. Außerdem werden Header ausgewählt, da sie erforderlich sind, um dem Benutzer das Anzeigen der Daten zu erleichtern. Das Sicherungsziel ist bis auf die Salesforce-Organisation identisch.

Anhang

Anhang

Es wird eine temporäre Speicherquelle verwendet, bei der eine globale Variable für den Dateinamen verwendet wird und die erste Zeile ignoriert wird.

Anhang

Das Ziel ist eine temporäre Speicherdatei. Dies kann eine FTP Site oder eine Netzwerkdateifreigabe sein. Auch hier wird eine globale Variable verwendet, um den Dateinamen dynamisch auszuwählen.

Anhang

In diesem Beispiel wird ein Standardobjekt von Apttus verwendet. Dieses Dateiformat wird in der Vorgangskette wiederholt verwendet. In diesem Fall verwenden die Quell- und Zielobjekte eine externe ID namens „Jitterbit_Key“, um Datensätze in den verschiedenen Organisationen zu verknüpfen. Diff verwendet diese, um die neuen und die aktualisierten Zeilen zu identifizieren.

Anhang

Dadurch werden die Daten gemäß der Ausgabe der Diff Datei eingefügt.

Anhang

Nochmals die Verwendung einer globalen Variable zur dynamischen Auswahl eines Dateinamens:

Anhang

Wiederverwendung des Dateiformats, das jetzt dem Apttus-Objekt zugeordnet ist.

Anhang

Wichtige Hinweise:

Subject_Operation_Name ist eine lokale Variable und wird verwendet, um eine Zeichenfolge zu speichern, die wiederholt verwendet wird.

Bewährte Methode

SourceOrg und TargetOrg sind Jitterbit-Projektvariablen, die den Organisationsnamen enthalten. Eine Projektvariable ist ein Wert, der allen Jitterbit-Objekten zur Verfügung steht, die mit einer Variable arbeiten können. Beachten Sie, dass die Formatierung im Script grün und kursiv ist:

Anhang

Projektvariablen werden im Jitterbit Design Studio definiert:

Anhang

Anhang

Es wird ein weiteres Script aufgerufen, das die Ausgabe erfasst und als Anhang einer Email hinzufügt. Dazu ist der Einsatz eines Plugin Email mit Anhang senden erforderlich im Ziel. (Siehe Update unten).

Anhang

Der Diff Add and Update Der Operation wird wiederholt verwendet, da die Quellen und Ziele eine Variable („$OutputFile“) verwenden, um dynamisch zu verarbeitende Dateien auszuwählen. Dies erleichtert die Wiederverwendung von Vorgängen erheblich.

Aktualisierte Methode mithilfe von Email Zielen

Aktuelle Versionen von Harmony enthalten Email Ziele; sie eignen sich besser für die Verarbeitung von Email Anhängen, da sie die Verwendung eines Plugin nicht erfordern.

Erstellen Sie zunächst ein Email Ziel:

Anhang

Erstellen Sie zweitens eine Email und legen Sie die Größenbeschränkung für Anhänge fest:

Anhang

Sie können dieses Email Ziel jetzt verwenden, um die erfasste Ausgabe zu senden.