...
(on/off),
...
it
...
can
...
take
...
a
...
range
...
of
...
integer
...
values.
...
Ecf Script
We will create new tasks (t5, t6 and t7) that will be triggered
%include <head.h>
echo "I will now sleep for %SLEEP% seconds"
sleep %SLEEP%
n=1
while [[ $n -le 100 ]] # Loop 100 times
do
sleep 1 # Wait a short time
ecflow_client --meter progress $n # Notify ecFlow
(( n = $n + 1 ))
done
%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
meter progress 1 100 90
task t2
trigger t1 eq complete
event a
event b
task t3
trigger t2:a
task t4
trigger t2 eq complete
complete t2:b
task t5
trigger t1:progress ge 30
task t6
trigger t1:progress ge 60
task t7
trigger t1:progress ge 90
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").add_meter("progress", 1, 100, 90)
...
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")
...
t4 = f1.add_task("t4")
t4.add_trigger("t2 eq complete")
...
t4.add_complete("t2:b")
...
f1.add_task("t5").add_trigger("t1:progress ge 30
...
"
...
)
...
...
f1.add_task("t6").add_trigger("t1:progress ge 60
...
"
...
)
...
...
f1.add_task("t7").add_trigger("t1:progress ge 90
...
"
...
)
...
...
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:
- Edit the definition file or python to add the modifications.
- Edit t1.ecf to call ecflow_client –meter
- Copy t4.ecf to t5.ecf, t6.ecf and t7.ecf
- Replace the suite
- Observe the tasks in ecflowview.
- See the triggers by selecting progress and clicking on the Triggers icon.
- Move the mouse pointer over then with the right mouse button, choose Edit...
- Modify the value of the meter and click on the Apply icon