2017-07-26 2 views
0

Ich habe eine Anforderung zum Erstellen eines Workflow löst eine Reihe von Batch-Jobs durch den Aufruf einer API und fragt dann eine andere API, um zu überprüfen, wann jeder Batch-Job abgeschlossen ist. Erst wenn alle Batch-Jobs abgeschlossen sind, kann der Workflow zum nächsten Schritt übergehen. Was ist der beste Weg, dies zu tun?Abrufen in Mule, bis alle Jobs abgeschlossen sind

Ich hatte über die Verwendung der Umfrage-Komponente nachgedacht, aber ich bin mir nicht sicher, wie ich die Umfrage starten und stoppen könnte, da meine Erfahrung darin bestand, die Umfrage zu einem geplanten Zeitpunkt auszuführen oder ständig die externe Quelle abzurufen. Mein aktueller Gedankengang ist die Verwendung eines Flags in der Ausdrucksbox, das auf "True" gesetzt wird, sobald alle Batch-Jobs abgeschlossen sind. Das andere Problem ist, dass die Stapeljob-IDs alle in einem JSON-Objekt enthalten sind und was wäre der beste Weg, um jede Batch-Job-ID abzufragen, wenn die API beginnt, Ergebnisse zu den abgeschlossenen Batch-Jobs zurückzugeben? Angenommen, Ihre api Rufauslösung 5 Batch-Jobs -

I AnyPoint Studio 6.2 und Mule 3.8.3

Dank

Antwort

0

Zuerst verwenden. Nach Abschluss jedes Jobs müssen Sie den Status des erfolgreichen/fehlgeschlagenen Jobs in db oder im Objektspeicher (oder einer anderen abrufbaren Weise) aktualisieren.

Sagen Sie, Ihre Mindestzeit, die Ihre Jobs in 1 Stunde abgeschlossen werden.

Angenommen, Sie aktualisieren den Status in der DB.

Erstellen Sie einen Abfrageablauf, um zu überprüfen, ob der Auftragsstatus in db für jede Stunde erfolgreich war/fehlgeschlagen ist, und geben Sie den Status stopped ein.

Da sich der Durchfluss im gestoppten Zustand befindet, wird die Abfrage erst ausgelöst, wenn der Durchfluss in den Anfangszustand übergegangen ist. Du hast eine Kontrolle.

Immer ist der Fluss im gestoppten Zustand.Wenn Sie anfordern, dass api 5 Batch-Jobs gleichzeitig auslöst, starten Sie auch den 'Job_status_check_flow' zu start (Sie können groovy-Komponente verwenden, um den Fluss auf der Basis zu starten und zu stoppen Bedingung). Bitte überprüfen Sie die Links unten

Starting a mule flow programmatically using groovy

auto-starting Mule flow

In diesem Fall fließen Poll den Status für jede 1 Stunde überprüfen, bis DB alle den Status von 5 Jobs abgeschlossen Status abruft. Wenn ja, haben Sie eine groovige Komponente am Ende des 'Job_status_check_flow' zu stopped state. Diese Abfrage wird also nicht erneut ausgelöst.

Verwandte Themen