Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Horizontal Navigation Bar


Button Group

Button Hyperlink
titlePrevious
typestandard
urlhttps://software.ecmwf.int/wiki/display/ECFLOW/Time+Dependencies
Button Hyperlink
titleUp
typestandard
urlhttps://software.ecmwf.int/wiki/display/ECFLOW/Going+Further
Button Hyperlink
titleNext
typestandard
urlhttps://software.ecmwf.int/wiki/display/ECFLOW/Advanced+Topics


Another approach is to use ecf.py module to benefit from object oriented polymorphismFor alternative styles:


Code Block
languagepy
#!/usr/bin/env python2.7
import os

...

for ecflow import *

print "Creating suite definition" 
home = os.path.join(os.getenv("HOME"), "course")
defs = Defs().add(

...

 
            Suite("test").add(
                Edit(ECF_INCLUDE=home,ECF_HOME=home),
              

...

  Family("f1").add(
                    Edit(SLEEP=20),
                    Task("

...

t1").add(Meter("progress", 1, 100, 90)),
                

...

    

...

Task("t2").add( Trigger("t1 eq complete"), Event("a"),Event("b")),
                    

...

Task("

...

t3").add(Trigger("t2:a")),
            

...

        Task("t4").add(Trigger("t2 eq complete"), Complete("t2:b")),
                    Task("t5").add(Trigger("t1:progress ge 30")),
                    Task("t6").add(

...

Trigger("t1:progress ge 60")),

...


                    Task("t7").add(Trigger("t1:progress ge 90")),),
                

...

Family("

...

f2").add(
                    Edit(SLEEP=20),
                  

...

  Task("t1

...

").add(Time( "00:30 23:30 00:30" )),
                   

...

 Task("t2").add(Day( "sunday" )),
               

...

     Task("t3").add(Date("1.*.*"), Time("12:00")),
                    Task("

...

t4").add(

...

Time("

...

+00:

...

02")),
                    Task("

...

t5").add

...

(Time("00:02")))))
             
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") 



Code Block
languagepy
#!/usr/bin/env python2.7
import os
for ecflow import *

print "Creating suite definition" 
home = os.path.join(os.getenv("HOME"), "course")
with Defs() as defs:
    with defs.add_suite("test") as suite:
        suite += [ Edit(ECF_INCLUDE=home,ECF_HOME=home) ]
        with 

...

suite.add_family("

...

f1") as f1:
            for i in range(1,8):
                f1 += [ Task("

...

t{}".format(i))]
            f1 += [ Edit(SLEEP=20) ]
            f1.t1 += [ Meter("progress", 1, 100, 90) ]
            f1.t2 += [ Trigger("t1

...

 

...

eq 

...

complete"), Event("a"), Event("b") ]
           

...

 f1.t3 += [ Trigger("t2:a") ]
            f1.t4 += [ Trigger("t2 eq complete"), Complete("t2:b") ]
            f1.t5 += [ Trigger("t1:progress ge 

...

30")

...

 ]
            f1.t6 += [ 

...

Trigger("

...

t1:progress ge 60") ]
            f1.t7 += [ Trigger("t1:progress ge 90")

...

 ]
       

...

  with suite.add_family("f2")

...

 as f2:
            

...

 f2 += [ Edit(SLEEP=20),
                     Task("t1").add(Time( "00:30 23:30 00:30" )),
                     Task("t2").add(Day( "sunday" )),
                     Task("t3").add(Date("1.*.*"),

...

 

...

Time("12:00")),
                     Task("t4").add(Time("+00:02")),
                     Task("t5").add(Time("00:02"))

...

 ]
             
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")