You can iterate over sequences of:
- strings
- integers
- dates
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,
Ecf Script
...
/test/f4/f5/t1.
...
...
ecf to use these variables.
%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
# Definition of the suite test.
suite test
edit ECF_INCLUDE "$HOME/course"
edit ECF_HOME "$HOME/course"
family f4
edit SLEEP 2
repeat string NAME a b c d e f
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_f4():
...
f4
...
=
...
ecflow.Family("f4")
...
f4.add_variable("SLEEP", 2)
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
...
=
...
f5.add_task("t1")
t1.add_repeat( ecflow.RepeatDate("DATE", 20101230, 20110105) )
t1.add_label("info", "")
return f4
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_f4() )
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 ecflowview, try to modify the values of a repeat