Sometimes waiting for the completion of a task is not good enough.
If a task is producing several results, another task may start as
soon as the first results are ready.
it is running.
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.
%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>
Text
# Definition of the suite test.
suite test
edit ECF_INCLUDE "$HOME/course" # replace '$HOME' with the path to your home directory
edit ECF_HOME "$HOME/course"
family f1
edit SLEEP 20
task t1
task t2
trigger t1 eq complete
event a
event b
task t3
trigger t2:a
task t4
trigger t2:b
endfamily
...
endsuite
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