Zum Inhalt springen

Generieren Sie ein Zusammenfassungsprotokoll nach der Verarbeitung von Datensätzen in Jitterbit Studio

Einführung

Batchverarbeitungsintegrationen laufen unbeaufsichtigt und können Tausende von Datensätzen in einem einzigen Vorgang verarbeiten. Ohne ein Zusammenfassungsprotokoll nach dem Lauf müssen Betreiber die Rohprotokolle der Vorgänge durchsehen, um zu verstehen, was verarbeitet wurde, was erfolgreich war und was fehlgeschlagen ist. Ein Zusammenfassungsprotokoll löst dieses Problem, indem es während der Verarbeitung eine lesbare Ergebniszeile pro Datensatz sammelt und das vollständige Protokoll als Datei oder E-Mail liefert, wenn der Vorgang abgeschlossen ist.

Dieses Muster verwendet eine globale Variable, summary_log, um Ergebniszeilen während einer Transformation zu akkumulieren. Wenn die Verarbeitung abgeschlossen ist, schreibt eine verkettete Skriptoperation die Zusammenfassung mit WriteFile und sendet sie mit SendEmailMessage. Dieser Leitfaden erweitert das im Versenden einer E-Mail-Benachrichtigung aus einer Studio-Operation beschriebene Muster, das die Erstellung und Konfiguration von E-Mail-Benachrichtigungskomponenten behandelt.

Entwurfsmuster

Das Muster verwendet zwei Operationen in einer Kette:

  1. Verarbeitungsoperation: Quellaktivität → Transformation → Zielaktivität. Ein Skript im Wurzelknoten der Transformation fügt der globalen Variable summary_log eine Ergebniszeile pro Datensatz hinzu.
  2. Zusammenfassungs-Skriptoperation (wird bei Erfolg ausgeführt): Liest summary_log und ruft WriteFile auf, um das Protokoll zu speichern, SendEmailMessage, um es zu liefern, oder beides.

Globale Variablen bestehen während der Lebensdauer einer Operationskette. summary_log wird von der Transformation geschrieben und ist weiterhin im Geltungsbereich, wenn das verkettete Zusammenfassungs-Skript ausgeführt wird, ohne dass zusätzliche Verkabelungen erforderlich sind.

Teil 1: Ergebniszeilen in der Transformation akkumulieren

  1. Öffnen Sie im Studio Ihr Projekt und die Transformation, die in Ihrer Verarbeitungsoperation verwendet wird.

  2. Wählen Sie den Wurzelknoten der Transformation (den obersten Quellinstanzknoten) aus und öffnen Sie den Formeleditor für diesen Knoten.

  3. Fügen Sie ein Skript hinzu, das für jeden Datensatz eine Ergebniszeile zu summary_log hinzufügt. Das Skript sollte einen Wert zurückgeben, der von der Transformation verwendet werden kann. Verwenden Sie true, um sicherzustellen, dass alle Datensätze verarbeitet werden:

    // Append a result line for this record
    $summary_log = $summary_log + Source.record_id + " | " + Source.name + " | processed\n";
    
    // Increment the record count
    $summary_count = $summary_count + 1;
    
    // Return true so the transformation processes every record
    true;
    

    Ersetzen Sie Source.record_id und Source.name durch die tatsächlichen Feldnamen aus Ihrem Quellschema.

    Hinweis

    summary_log beginnt als null. Jitterbit Script behandelt null bei der Zeichenfolgenverkettung als leere Zeichenfolge, sodass keine explizite Initialisierung erforderlich ist, bevor der erste Datensatz hinzugefügt wird.

  4. Um eine Kopfzeile mit dem Ausführungsdatum und der Gesamtanzahl der Datensätze einzuschließen, fügen Sie ein separates Initialisierungsskript zur Operation hinzu, das vor der Transformation ausgeführt wird, oder fügen Sie die Kopfzeile im Zusammenfassungs-Skriptbetrieb nach Abschluss der Verarbeitung hinzu.

    Tipp

    Speichern Sie die Kopfzeile separat in summary_header, damit sie nach der Verarbeitung aller Datensätze zusammengesetzt werden kann, wenn summary_count seinen endgültigen Wert hat:

    $summary_header = "Ausführung: " + Now() + " | Datensätze: " + $summary_count + "\n\n";
    

Teil 2: Verknüpfen Sie die Zusammenfassungs-Skriptoperation

  1. Klicken Sie im Entwurfscanvas mit der rechten Maustaste auf die Operation und wählen Sie Einstellungen, um die Betriebseinstellungen zu öffnen.

  2. Wählen Sie die Registerkarte Aktionen.

  3. Bedingung: Wählen Sie Bei Erfolg.

  4. Aktion: Wählen Sie Operation ausführen.

  5. Operation: Wählen Sie eine Skriptoperation aus oder erstellen Sie eine, die die Zusammenfassung schreibt und sendet. Wenn die Operation noch nicht existiert, erstellen Sie eine neue Skriptoperation und kehren Sie dann zu diesem Einstellungsdialog zurück, um sie auszuwählen.

  6. Klicken Sie auf Aktion hinzufügen und speichern Sie die Einstellungen.

Die Zusammenfassungs-Skriptoperation wird jetzt automatisch ausgeführt, nachdem die Verarbeitungsoperation erfolgreich abgeschlossen wurde.

Teil 3: Schreiben Sie die Zusammenfassung in eine Datei

Rufen Sie in der Zusammenfassungs-Skriptoperation WriteFile auf, um summary_log in eine Datei-Zielaktivität zu schreiben:

// Assemble the full log with header and body
fullLog = $summary_header + $summary_log;

// Write to the file target activity
WriteFile("<TAG>activity:target:Summary Log File</TAG>", fullLog);

Ersetzen Sie Summary Log File durch den Namen Ihrer Datei-Zielaktivität, wie sie im Projekt erscheint.

Hinweis

WriteFile ist eine Jitterbit-Skriptfunktion, kein Schritt eines Datei-Connectors. Sie schreibt Inhalte in eine bereits im Projekt konfigurierte Datei-Zielaktivität. Konfigurieren Sie die Zielaktivität mit dem Zielpfad und dem Dateinamen, bevor Sie WriteFile aufrufen.

Tipp

Fügen Sie das Ausführungsdatum in den Dateinamen ein, um das Überschreiben vorheriger Protokolle zu vermeiden. Konfigurieren Sie eine Projektvariable wie [run_date] im Dateipfad der Zielaktivität (zum Beispiel summary_[run_date].txt), und füllen Sie $run_date in Ihrem Skript aus, bevor Sie WriteFile aufrufen:

$run_date = Format(Now(), "yyyy-MM-dd");
WriteFile("<TAG>activity:target:Summary Log File</TAG>", fullLog);

Teil 4: Senden Sie die Zusammenfassung als E-Mail

  1. Erstellen Sie eine E-Mail-Benachrichtigungskomponente, die die Zusammenfassung enthält. Für vollständige Anweisungen zur Einrichtung siehe Senden Sie eine E-Mail-Benachrichtigung aus einer Studio-Operation.

  2. Im Feld Betreff der Benachrichtigung verweisen Sie auf summary_count, um die Gesamtzahl der Datensätze einzuschließen:

    Verarbeitung abgeschlossen: $summary_count Datensätze
    
  3. Im Feld Nachricht verweisen Sie auf summary_log, um die akkumulierten Ergebniszeilen einzuschließen:

    $summary_header$summary_log
    

    Globale Variablen werden zum Zeitpunkt des Sendens aufgelöst, sodass der Nachrichteninhalt die während des Verarbeitungsdurchlaufs festgelegten Werte widerspiegelt.

  4. Rufen Sie in der Zusammenfassungs-Skriptoperation SendEmailMessage nach WriteFile (falls verwendet) auf:

    SendEmailMessage("<TAG>email:Processing Summary</TAG>");
    

    Ersetzen Sie Processing Summary durch den Namen Ihrer E-Mail-Benachrichtigungskomponente.

Überprüfen Sie die Integration

  1. Bereitstellen und ausführen Sie die Verarbeitungsoperation gegen einen kleinen Testdatensatz von zwei oder drei Datensätzen.

  2. Bestätigen Sie in den Betriebsprotokollen, dass die Verarbeitungsoperation ohne Fehler abgeschlossen wurde und dass die Zusammenfassungs-Skriptoperation bei Erfolg ausgeführt wurde.

  3. Wenn Sie WriteFile konfiguriert haben: Überprüfen Sie den Zielpfad der Dateiaktivität und bestätigen Sie, dass die Zusammenfassungsdatei erstellt wurde. Öffnen Sie sie und vergewissern Sie sich, dass sie eine Ergebniszeile pro Datensatz sowie die Kopfzeile enthält.

  4. Wenn Sie SendEmailMessage konfiguriert haben: Überprüfen Sie das Postfach des Empfängers und bestätigen Sie, dass die E-Mail mit dem erwarteten Betreff und Inhalt angekommen ist.

  5. Wenn der E-Mail-Inhalt oder der Dateiinhalte leer ist, stellen Sie sicher, dass das Akkumulationsskript im Transformationsstammknoten platziert ist (nicht in einer separaten Skriptoperation), damit es einmal pro Datensatz während der Transformation ausgeführt wird.

  6. Wenn die Zusammenfassungs-Skriptoperation nicht ausgeführt wird, bestätigen Sie, dass die On Success-Aktion an die Verarbeitungsoperation angehängt ist, nicht an eine übergeordnete oder untergeordnete Operation in der Kette. Überprüfen Sie die Betriebsprotokolle, um zu sehen, ob die Erfolgsbedingung ausgelöst wurde.

  7. Wenn WriteFile einen Fehler zurückgibt, bestätigen Sie, dass die Datei-Zielaktivität korrekt konfiguriert ist und dass der Agent Schreibzugriff auf den Zielpfad hat.