...
Events have names and a task can set several of them.
Ecf Script
We will create new tasks (t3, t4) that will be triggered by the events emitted in task t2.
Create the ecf script for t3 and t4 by copying t1.
To notify ecflow_server, the task (t2 in the example below)
must call ecflow_client –event which is one of the child command‘s
Code Block |
---|
%include <head.h> echo "I will now sleep for %SLEEP% seconds" sleep %SLEEP% ecflow_client --event a # Set the first event sleep %SLEEP% # Sleep a bit more ecflow_client --event b # Set the second event sleep %SLEEP% # A last nap... %include <tail.h> |
...
Python
#!/usr/bin/env python2.7
import os
import ecflow
def create_family_f1():
f1 = ecflow.Family("f1")
f1.add_variable("SLEEP", 20)
f1.add_task("t1")
t2 = f1.add_task("t2")
t2.add_trigger("t1 eq complete")
t2.add_event("a")
t2.add_event("b")
f1.add_task("t3").add_trigger("t2:a")
f1.add_task("t4").add_trigger("t2:b")
return f1
print "Creating suite definition"
defs = ecflow.Defs()
suite = defs.add_suite("test")
suite.add_variable("ECF_INCLUDE", os.getenv("HOME") + "/course")
suite.add_variable("ECF_HOME", os.getenv("HOME") + "/course")
suite.add_family( create_family_f1() )
print defs
print "Checking job creation: .ecf -> .job0"
print defs.check_job_creation()
print "Checking trigger expressions"
print defs.check()
print "Saving definition to file 'test.def'"
defs.save_as_defs("test.def")
What to do
- Update test.def or test.py
- Edit t2.ecf to call ecflow_client –event.
- Copy t1.ecf to t3.ecf and t4.ecf
- Replace the suite
- Observe the tasks in ecflowview.
- See the triggers by selecting t3 and clicking on the icon
- See the triggers by selecting t2 and click on Dependencies
Horizontal Navigation Bar | ||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|