Table of Contents | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
Events
Question: How can I trigger a job or a job chain based on a (series of) event(s)?
Introduction
In some cases it is necessary to trigger a job (or a job chain) based on (multiple) events (other jobs, monitored files...) which might even occur on different hosts.
...
For this example, two different JobScheduler instances may be configured.
An event service (or event supervisor) and a Workload JobScheduler which is registered with that event service.
The event service is able to receive events from other JobScheduler instances on different servers and platforms.
It is possible also to have the event service and the Workload JobScheduler running in the same JobScheduler instance.
If different JobScheduler instances were used for eventing then it is required that these instances can communicate.
Requirements
The JobScheduler must run using a database. The events are stored permanently in the table "SCHEDULER_EVENTS". To customize an event handler some experience with XML and XSLT are required.
Instructions
- Unzip all files of events.zip or events_windows.zip into the ./config/live folder of your Workload JobScheduler installation. After unzipping you will have in the subfolder samples an subfolder events with the required JobScheduler objects to run the example.
- Edit ./config/scheduler.xml of the Workload JobScheduler and configure a JobScheduler as a Supervisor. The Supervisor is an attribute of the tag
config
. See Supervisor. - In the installation directory of your workload JobScheduler create a folder
files
with two subfoldersin
andprocessed
- Unzip all files of events_supervisor.zip into the ./config folder of your instance of the event service JobScheduler installation. After unzipping you will have in the subfolder ./config/live/sos a subfolder events with all the objects required to run the event service. And a folder ./config/events that is used by the event handler.
- Edit
config/events/example.event_class.xsl
on the active instance of the event service JobScheduler and adjust thehost
andport
parameters to those of the Workload JobScheduler. Copy the file to the folder ./config/events.
...
Code Block |
---|
<job name="done_job"> <script language="shell"> <![CDATA[ echo content of files/processed: ls -la files/processed echo deleting contents of files/processed rm -f files/processed/* ]]> </script> <run_time/> </job> |
How it works
The job samples/events/simple_shell_job
calls the script
...
Code Block |
---|
<remove_event> <event event_class="example"/> </remove_event> |
The scheduler_event_functions.xsl.inc stylesheet
It is recommended to include scheduler_event_functions.xsl.inc
into your own event handler stylesheets by adding:
...
- that a root level
<commands>
tag (element) is created in the resulting xml and - that the stylesheet will return a valid (and well formed) xml result (returning nothing would result in an error)
Examples for match statements in event handlers
Code Block |
---|
<xsl:template match="events[event[@job_name='simple_shell_job' and @exit_code=0]]"> |
...