| Horizontal Navigation Bar | ||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
looping on a specific value. You can do that by defining a repeat attribute.
You can iterate over sequences of:
...
Ecf Script
We will add a new task /test/f4/f5/t1.
Create new ecf script file $HOME/course/test/f4/f5/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%' " # Note the use of repeat date generated variables DATE_YYYY, DATE_MM, DATE_DD, DATE_DOW to automatically reference year,month,day of the month,day of the week # These can also be used in trigger expression. ecflow_client --label=date "year(%DATE_YYYY%) month(%DATE_MM%) day of month(%DATE_DD%) day of week(%DATE_DOW%)" 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 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 20101230 20110105
label info ""
label date ""
endfamily
endfamily
endsuite |
Python
| Code Block | ||||
|---|---|---|---|---|
| ||||
import os
from ecflow import Defs,Suite,Family,Task,Edit,Trigger,Complete,Event,Meter,Time,Day,Date,Label, \
RepeatString,RepeatInteger,RepeatDate
def create_family_f4():
return Family("f4",
Edit(SLEEP=2),
RepeatString("NAME", ["a", "b", "c", "d", "e", "f" ]),
Family("f5",
RepeatInteger("VALUE", 1, 10),
Task("t1",
RepeatDate("DATE", 20101230, 20110105),
Label("info",""),
Label("date",""))))
print("Creating suite definition")
home = os.path.join(os.getenv("HOME"), "course")
defs = Defs(
Suite("test",
Edit(ECF_INCLUDE=home, ECF_HOME=home),
create_family_f4()))
print(defs)
print("Checking job creation: .ecf -> .job0")
print(defs.check_job_creation())
print("Checking trigger expressions")
assert len(defs.check()) == 0,defs.check()
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
- Since we are using 2 second delay, remember to use f5(refresh) to see the intermediate values. The default is to refresh every 60 seconds.
| Horizontal Navigation Bar | ||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|