Horizontal Navigation Bar | ||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
You can iterate over sequences of:
- strings
- integers
- dates
Sometimes tasks don't run as expected, as we need to get notification when they are late.
For this we use the late attribute. The late attribute can be add to a suite/family however and it will be inherited by the task.
Note: only a task can be late
A sequence of integers or dates is created by specifying the
first and last element, with an optional increment (the default is one).
An ecFlow variable, whose name corresponds to the name of the repeat,
will be generated. This can be used in scripts or trigger expressions.Ecf Script
Create new ecf script file $HOME/course/test/f4/f5f6/t1.ecf to use these variables.
Code Block | ||
---|---|---|
| ||
%include <head.h>
ecflow_client --label=info "My name is %NAME%" "My value is %VALUE%" "My date is %DATE%"
sleep %SLEEP%
%include <tail.h> |
Text
Let us modify the suite definition file again
Code Block |
---|
# Definition of the suite test. suite test edit ECF_INCLUDE "$HOME/course" edit ECF_HOME "$HOME/course" family f4f6 edit SLEEP 2120 repeat string NAME a b c d e f late family f5 repeat integer VALUE 1 10 task t1 repeat date DATE 19991230 20000105 label info "" endfamily endfamily endsuite |
Python
#!/usr/bin/env python2.7
import os
import ecflow
def create_family_f4f6():
f4f6 = ecflow.Family("f4f6")
f4f6.add_variable("SLEEP", 2120)
f4.add_repeat( ecflow.RepeatString("NAME", ["a", "b", "c", "d", "e", "f" ] ) )
f5 = f4.add_family("f5")
f5.add_repeat( ecflow.RepeatInteger("VALUE", 1, 10) )
t1 = f5f6.add_task("t1")
t1.add_repeatlate( ecflow.RepeatDate("DATE", 20101230, 20110105) )
t1.add_label("info", "")
return f4f6
print "Creating suite definition"
defs = ecflow.Defs()
suite = defs.add_suite("test")
suite.add_variable("ECF_INCLUDE", os.path.join(os.getenv("HOME"), "course"))
suite.add_variable("ECF_HOME", os.path.join(os.getenv("HOME"), "course"))
suite.add_family( create_family_f4f6() )
print defs
print "Checking job creation: .ecf -> .job0"
print defs.check_job_creation()
print "Saving definition to file 'test.def'"
defs.save_as_defs("test.def")
What to do
- Type in the changes
- Replace the suite definition
- How many times will /test/f4/f5/t1 run?
- In ecflow_ui , try to modify the values of a repeat
...