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

Compare with Current View Page History

« Previous Version 5 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 for the successfully 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 by split jobs and Sync jobs - as it is described in the example Parallel Execution in a job chain.
For the splitter job the job /sos/jitl/JobChainSplitter in the directory ./live/sos/jitl is used, which is part of the JobScheduler download. In the sync jobs the JAVA class com.sos.jitl.sync.JobSchedulerSynchronizeJobChainsJSAdapterClass is used.

Synchronization of the two job chains JobInterlink1 and JobInterlink2

According to request the job jobInterlink-2-2 starts only when the job jobInterlink-1-6 is successfully completed. Therefore we need a sync state after the job jobInterlink-1-6 and before the job jobInterlink-2-2 with the identical state name Sync_Interlink1_Interlink2.
As soon as the job jobInterlink-1-6 has finished, the synchronization is activated, the subsequent job jobInterlink-2-5 starts running and the branch of the parallel execution including job jobInterlink-1-6 comes to its sync state.

Synchronization start of the third job chain

The third job chain is to be started only when the both predecessor job chains JobInterlink1 and JobInterlink2 are finished successfully. This dependency is also realized with a sync job. We define the sync job Sync_Interlink12_Interlink3 and inserted the node after the jobs jobInterlink-1-8 and jobInterlink-2-8 in the predecessor job chains and before the "jobInterlink-3-1_in the job chain which is to be started._
'Every synchronization has its own sync job!h3. Schema of the Job Chains in JOE
The job chains were realized by using the job editor JOE.

h3. "Cross-Over" Diagram
Das Diagramm der Beispiel-Jobkette (erstellt mit der Sandbox-JOE-Version).

h2. 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

h2. Best practices
h3. Start- und End-Knoten verwenden
Wir empfehlen, in jeder Jobkette im ersten Knoten den Startjob/sos/jitl/JobChainStartund im letzten Knoten den Endjob/sos/jitl/JobChainEnd_' zu verwenden._
h3. Konventionen für Knoten-Namen
h4. 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._
h4. 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