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