You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

Deutsche Version

Example: Synchronization of multiple Job Chains (cross-over)

We have three job chains. Two of them have included parallel execution. These job chains are also synchronized in a way , that one node of a chain is waiting of the successful ending of a node in the other job chain.

The third chain has to be started after the other chains are both ended successfully.

This requirement was implemented as follows:

  • JobChain1: JobChain-Interlink-1 with the jobs JobInterlink-1-<n> , <nh1. 1-8
  • JobChain2: JobChain-Interlink-2 with the jobs JobInterlink-2-<n> , <n>1-8
  • JobChain3: JobChain-Interlink-3 with job JobInterlink-3-1
  • There is another job chain, which generate an orders for each job chain by using the Command statement.

Generating the job chains of the requirement

Parallel executing within the job chains

the parallel executing is realized with split- and Sync jobs- as it is described in the example Parallel Execution in a job chain.
Als Splitter wird der im JITL mitgelieferte Job /sos/jitl/JobChainSplitter aus dem Verzeichnis ./live/sos/jitl verwendet. Die Sync-Jobs verwenden die Klasse com.sos.jitl.sync.JobSchedulerSynchronizeJobChainsJSAdapterClass.

Synchronisation zwischenden beiden Jobketten JobInterlink1 und JobInterlink2

Vorgabe ist, dass der Knoten JobInterlink-2-2 erst starten kann, wenn der Knoten JobInterlink-1-6 erfolgreich abgeschlossen wurde. Daher wird nach dem Job JobInterlink-1-6 und vor dem Job JobInterlink-2-2 jeweils ein Sync-Knoten mit identischer Knoten-Bezeichnung Sync_Interlink1_Interlink2 eingeschoben. Sobald der Job JobInterlink-1-6 abgeschlossen ist, wird die Sychronisation aktiv, der nachfolgende Knoten JobInterlink-2-2 startet und in der ersten Kette erreicht dieser Zweig der Parallelverarbeitung den Sync-Knoten.

Synchronisation Start der dritten Jobkette

Die dritte Jobkette darf erst starten, wenn die beiden Vorläufer-Ketten JobInterlink1 und JobInterlink2 erfolgreich abgeschlossen wurden. Auch diese Abhängigkeit wird mit einem Sync-Job realisiert. Wir definieren den Sync_Job Sync_Interlink12_Interlink3, der zum einen ans Ende der Vorgänger-Jobketten eingefügt wird als auch in der zu startenden Jobkette als erster Knoten nach dem Kettenstart-Knoten.

Jede Synchronisation hat ihren eigenen Sync-Job!

Darstellung der Jobketten im JOE

Die Jobketten wurden unter Verwendung der Jobeditors JOE realisiert.

"Cross-Over" Diagramm

Das Diagramm der Beispiel-Jobkette (erstellt mit der Sandbox-JOE-Version).

Starter-Kette anlegen

Jede der drei Jobketten benötigt eine Order zum starten. In diesem Beispiel wird eine Starter-Jobkette angelegt, die für jede Kette einen Job enthält, der die Order erstellt.

Die Order wird über ein Kommando gesteuert, das nach am Ende des Scripts durchgeführt wird.Die zu startende Kette muß ggf. mit dem Pfad unterhalb des Live-Verzeichnisses angegeben werden

Best practices

Start- und End-Knoten verwenden

Wir empfehlen, in jeder Jobkette im ersten Knoten den Startjob /sos/jitl/JobChainStart und im letzten Knoten den Endjob /sos/jitl/JobChainEnd zu verwenden.

Konventionen für Knoten-Namen

Splitter-Knoten

Wir empfehlen, den Knoten-Namen eines Splitter-Jobs mit der Zeichenfolge split zu beginnen, zum Beispiel Split_Interlink1. Damit "weiß" der Algorithmus, der das Diagramm erstellt, dass es sich um einen Splitter-Knoten handelt und kann ihn korrekt darstellen. Den Knote-Typ "Splitter" gibt es in der Syntax der Job-Knoten nicht.

Parallele Knoten

Für die Knoten-Namen der parallel zu verarbeitenden Jobs empfehlen wir die Syntax "Knoten-Name des Splitter-Jobs" ":" "Name des Jobs", zum Beispiel split_Interlink1:Job-1-2. Damit "weiß" der Diagramm-Algorithmus, welche Knoten die direkten Nachfolger des Splitters sind und kann dies korrekt darstellen. Die Syntax des JobScheduler kennt eine Vorgänger Beziehung nicht, deshalb die hilfsweise Kennzeichnung des Vorgängers über den ersten Teil des Knoten-Namens.

Job-Knoten

Soweit möglich sollte der Name des Job-Knotens identisch sein mit dem Job-Namen (evtl. ohne Folder Namen). Wird ein Job mehrfach in einer Job-Kette verwendet, so können die Knoten-Namen durch eine angehängte Ziffer (oder Nummer) eindeutig spezifiziert werden.

Fehler-Knoten

Der Name des Fehler-Knotens sollte den Job-Namen enthalten oder identisch sein mit diesem. Damit kann bei einem Fehler im Ablauf der Jobkette sofort in JOC erkannt werden, an welcher Stelle die Jobkette abnormal beendet wurde.
Außerdem sollte der Name mit einem "!" (Ausrufezeichen) begonnen werden. Damit wird im JID eine Fehler-Status erkannt und rot markiert.

siehe auch

Downloads

Das verwendete Beispiel können Sie hier herunterladen synchronization_jobchains.zip.

  • No labels