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

Compare with Current View Page History

« Previous Version 7 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 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 jobInterlink-3-1 in the job chain which is to be started.

Every synchronization has its own sync job!

Schema of the Job Chains in JOE

The job chains were realized by using the job editor JOE.

Generating orders by a starter job chain

Each of the three job chains requires an order to start. In this example we have a starter job Chain with one job for each chain, which generates the order.

In these jobs the command order is used with the name of the job chain as paramter. I necessary the path under the LIVE folder is included.

Another way to generate an order is using a script like:

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