Die Ablaufsteuerung eines Jobs befasst sich einerseits mit der Ausführung eines Jobs und anderseits mit dem Übergang zwischen den einzelnen Steps.
Im Standardfall werden Steps sequentiell und innerhalb eines Threads verarbeitet. Aber die JSL bietet Sprachmittel, um auch andere Verarbeitungsabläufe zu beschreiben.
Diese Sprachmittel werden in diesem Teil vorgestellt.
Nebenläufige Verarbeitung – Split
In Normalfall werden in einem Job die einzelnen Steps nacheinander abgearbeitet. Es sind allerdings auch andere als eine sequentielle Ablaufszenarien vorzustellen. Der Ablauf von Steps innerhalb eines Jobs heißt Flow. Diese Ablaufszenarien innerhalb eines Jobs heißen Flows. Flows können Steps, aber auch weitere Flows enthalten.
Flows können so konfiguriert werden, dass sie nebenläufig ausgeführt werden (Split). Jeder Flow wird dann in einem eigenen Thread ausgeführt. Ein Split ist also eine Gruppe von Flows, die parallel ausgeführt werden. Die Batchlaufzeitumgebung startet die einzelnen Flows. Sind alle Flows beendet, so verzweigt die Batchlaufzeitumgebung zum nachfolgenden Step/Flow. Auf diese Weise wird das Ende der einzelnen Flows synchronisiert und zu einem gemeinsamen Ende zusammengeführt.
Abbildung 3 zeigt den Verarbeitungsablauf eines Splits, der aus drei Flows besteht. Innerhalb des Flows flow1 sind zwei Steps konfiguriert, welche sequentiell verarbeitet werden. Sind alle Flows beendet, so wird zu StepA verzweigt.
Dieser Mechanismus erlaubt eine parallele Verarbeitung. Dazu müssen die Arbeitsabläufe, die parallelisiert werden sollen, in jeweils einem Flow beschrieben werden und diese Flows in einem Split zusammengefasst werden.
Die Batchlaufzeitumgebung ist für das Management der Threads zuständig und entscheidet, welche Flows nebenläufig auszuführen sind. Sie ist ebenso für die Synchronisierung der parallel ablaufenden Splits verantwortlich.
Von Schritt zu Schritt – Transitionen
Transitionen beschreiben, wie die Verarbeitung nach Ende eines Steps weitergeht. Es muss entschieden werden, ob der gesamte Job beendet oder zu einem nachfolgenden Step verzweigt wird.
Ist der Step erfolgreich beendet, so kann mittels des next-Attributs der nachfolgende Step vereinbart werden. Fehlt dieser, so wird der Job beendet.
Neben dieser Transition für den Positivfall bietet die JSL weitere Sprachmittel, um komplexere Abläufe zu steuern. Diese werten den Status aus, welchen der Step nach seinem Ende besitzt (step exist status).