System administrators having a Unix or Windows background commonly
approach the task of running unattended applications by writing scripts
which can be initiated using the cron or at system
utilities. Such a method can become complex surprisingly rapidly when
applications comprise several tasks and where the success or failure of
any particular task affects the way subsequent ones run.
In the world of mainframe computing, where applications were run in
"batches" long before interactive, terminal-based services were
commonplace, system programmers were obliged to develop complex
application batches for which the "glue" was some sort of JCL (job
control language). Again, where the tasks within a batch passed control
from one to the next conditionally, or where tasks were able to execute
only when some external event (for example, the arrival of a particular
data file) was detected, then the programming of JCL became complex.
Here was an opportunity for software to be used to simplify – and make
more easily re-usable – batch programming. Packages were created to
facilitate the development of large groups of tasks using the concept of
"suites" or "schedules". As well as make the assembly of groups of
inter-dependent application tasks more simple and reliable, the concept
was developed to enable suites to be managed as single entities,
including facilities to view or visualise execution progress. Suites
could be easily copied and modified, thereby saving a lot of development
effort when a group of similar suites was required.
Job suite implementation in COSbatch
COSbatch provides suite management as
a core function via a rich set of
suite development and runtime control facilities. The result is the
ability to construct and maintain libraries of suites with the following
features:
An unlimited number of individual tasks
The execution of any particular task is initiated depending on the
outcome of one or more precursor tasks via a relationship called a
dependency
The completion of any particular task in a suite can initiate any number
of dependent tasks
The execution of any particular task may also depend on the occurrence
of an external event (there are several standard types plus
user-defined)
A suite run is initiated by starting the head task, typically by time of
day, calendar condition, external event or dependency
The execution history of every task is logged for every run of a suite
A suite, in the general case, may contain multiple, concurrent paths of
execution
The Workflow Viewer is used to visualize the execution flow through a
suite of batch jobs
The viewer is scalable (with zoom in and zoom out) to accommodate the
largest of job suites
The real-time execution behaviour of tasks in a suite may be modified by
commands provided by the suite viewer
All tasks within a suite retain their normal repertoire of COSbatch job
attributes
Suites use the same access control arrangements as do individual
COSbatch tasks