Instead of being a boolean value (on/off), it can take a range of integer values.
Other tasks are then triggered when the meter reaches a certain value.
# Definition of the suite test.
suite test
edit ECF_INCLUDE "$HOME/course"
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
In python this would be:
#!/usr/bin/env python2.5
import os
import ecflow
def create_family_f1():
f1 = ecflow.Family("f1")
f1.add_variable("SLEEP",20)
t1 = f1.add_task("t1")
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")
t3 = f1.add_task("t3")
t3.add_trigger("t2:a")
t4 = f1.add_task("t4")
t4.add_trigger("t2 eq complete")
t4.add_complete("t2:b")
t5 = f1.add_task("t5")
t5.add_trigger("t1:progress ge 30")
t6 = f1.add_task("t6")
t6.add_trigger("t1:progress ge 60")
t7 = f1.add_task("t7")
t7.add_trigger("t1:progress ge 90")
return f1
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() )
This is also one of the child command‘s
%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>
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
- Load the definition again.
- 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