Verwendung von JOBG

Ausgangsproblem

Ein Job soll in einem Ablauf mehrfach nacheinander laufen, allerdings hängt die Anzahl seiner Aufrufe von erst zur Laufzeit bekannten Faktoren ab. Der Job kann daher nicht einfach n-mal in den Ablauf aufgenommen werden.

Lösungsansatz

Am einfachsten läßt sich das Problem und seine Lösung an Hand eines Beispieles aus der Praxis vorstellen. Bei einem Filetransfer sollen alle Dateien, die zu einem bestimmten Pattern passen, abgeholt werden. Der weitere Transport soll aber je gefundene Datei erfolgen. Der vollständige Ablauf zerfällt somit in zwei Schritte:

  1. Abholen aller passenden Dateien (in einem JOBPLAN_01)
  2. Transport jeder einzelnen Datei aus den zuvor abgeholten Dateien (in einem JOBPLAN_02)
  3. Abschließend kann in JOBPLAN_01 die weitere Verarbeitung (z.B. für ein Cleanup) erfolgen.

Um den Transport der einzelnen Dateien anzustoßen, müssen diese Dateien zuvor namentlich bestimmt werden. Dies kann entweder in einem UC4 Script (SCRIPT_01) mittels get_filesystem() und einem prep_process(&host#, UNIXCMD, "CMD=ls -1 <pattern>", "LOGIN=&login#") (bzw. mit prep_process(&host#, WINCMD, "CMD=dir /B <pattern>", "LOGIN=&login#") für einen Windows-Server) erfolgen, oder in einem UC4 Job (JOBS_UNIX_01) mit ls -1 <pattern> (dir /B <pattern> unter Windows) und entsprechender Auswertung im Postprocessing (s. Job-Reports auswerten)

Entscheidend ist, daß in beiden Fällen für jede gefundene Datei der eigentliche Transport JOBPLAN_02 aktiviert wird. Der zu übertragende Dateiname wird über den read buffer an an diesen Plan übergeben. Damit nun die so aktivierten Jobs/Pläne nicht unkontrolliert und ohne Rückmeldung ablaufen, laufen sie in einer Gruppe JOBG_01. Diese Gruppe wird nach dem aktivierenden Script SCRIPT_01 (oder Job JOBS_UNIX_01) im gleichen Jobplan JOBPLAN_01 aktiviert. Im Fall, daß einer der aktivierten JOBPLAN_02 Abläufe einen Fehler aufweisen, bleibt die JOBG_01 im Plan JOBPLAN_01 stehen, die weitere Verarbeitung kann im UC4 entsprechend eingerichtet werden.

Wenn es wichtig ist, das Ende der aktivierten Jobpläne abzuwarten bzw. auf das Ergebnis dieser Pläne zu reagieren, läßt sich der Ablauf übrigens nicht mit SYNC Objekten in JOBPLAN_02 realisieren: SYNC Objekte lassen sich nicht in Plänen aktivieren wie Jobgruppen.