Versions Compared

Key

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

The following suite definition is NOT a real design, it just demonstrates all the variety of way of adding time dependencies.

Code Block
languagepy
from ecflow import Defs,Suite,Task,Day,Date,Cron,Time,TimeSlot,TimeSeries

defs
start = TimeSlot(0, 0)
finish = TimeSlot(23, 0)
incr = DefsTimeSlot(0, 30)
s1time_series = defs.add_suiteTimeSeries(start, finish, incr, True)

defs = Defs(
        Suite("s1") 
t1 = s1.add_task,
            Task("date")
t1.add_date,
                Date(1, 0, 0),                   # first of every month and every year
t1.add_date(                Date("2.*.*")),                   # second of every month and every year
t1.add_dateyea
                Date(28,2,2026)),                # 28 februaryFebruary 2026

t2 = s1.add_task            Task("day")
t2.add_day,
                Day("monday")
t2.add_day,
                Day(Days.tuesday)),
        
t3   = s1.add_taskTask("time")
t3.add_time,
                Time("+00:30"),                     # 30 minutes after suite has begun
t3.add_time                Time("+00:30 20:00 01:00"),         # 00:30,01:30,02:30....07:30 after suite start
              
t3.add_time  Time(0, 59, True)   ,               #  00:59 - 59 minutes past midnight
t3.add_time(                Time(TimeSlot(20, 10))),          #  20:10 - 10 minutes pas eight
t3.add_time(                Time(TimeSlot(20, 20), True)),    # +20:20 - 20 minutes and 20 hours, after suite start
                Time(time_series),
                Time(0, 10),
                Time("+00:40"),
                Time("+00:40 20:00 01:00")),
            Task("cron",
                Cron("+00:00 23:00 00:30",days_of_week=[0,1,2,3,4,5,6],days_of_month=[1,2,3,4,5,6],months=[1,2,3,4,5,6]))))

The following show alternative example that produces the same definition:


Code Block
languagepy
start = TimeSlot(0, 0)
finish = TimeSlot(23, 0)
incr = TimeSlot(0, 30)
time_series = TimeSeries(start, finish, incr, True

...

)
        
cron = Cron()
cron.set_week_days( [0,1,2,3,4,5,6] )
cron.set_days_of_month( [1,2,3,4,5,6] )
cron.set_months( [1,2,3,4,5,6] )
cron.set_time_series( "+00:00 23:00 00:30" )

defs = Defs().add(
        Suite("s1").add(
         Task("date").add(
           Date(1, 0, 0),
           Date("2.*.*"),
           Date(28,2,2026)),
         Task("day").add(
           Day("monday"),
        

...

  

...

 Day(Days.tuesday)),
         Task("time").add(
           Time("+00:30"),
           Time("+00:30 20:00 01:00"),
           Time(0, 59, True),
           Time(TimeSlot(20, 10)),
           Time(TimeSlot(20, 20), True),
           Time(time_series),
           Time(0, 10),
           Time("+00:40"),
          

...

 Time("+00:40

...

 20:00 01:00")),
         Task("cron").add(cron)))



Code Block
languagepy
start = TimeSlot(0, 0)
finish = TimeSlot(23, 0)
incr = TimeSlot(0, 30)
time_series = TimeSeries(start, finish, incr, True)

defs = Defs() + ( Suite("s1") + Task("date") + Task("day") + Task("time") + Task("cron"))
defs.s1.date += [ Date(1, 0, 0), Date("2.*.*"),  Date(28,2,2026) ]
defs.s1.day +=  [ Day("monday"), Day(Days.tuesday) ]
defs.s1.time += [ Time("+00:30"), Time("+00:

...

30 20:00 01:00"), Time(0, 59, True),
                  Time(TimeSlot(20, 10)), Time(TimeSlot(20, 20), True),
                

...

  Time(time_series), Time(0, 10), Time("+00:40

...

"),
                  Time("+00:40 20:00 01:00") ]
defs.s1.cron += Cron("+00:00 23:00 00:30",
                   

...

 

...

 days_of_week=[0,1,2,3,4,5,6]

...

,
                     days_of_month

...

=[1,2,3,4,5,6]

...

,
                     months=[1,2,3,4,5,6])



Warning

In the example above we use 'defs.s1.date' to reference a node by name. This is useful in small designs but will produce maintenance issues in large designs IF the node names are changed.

) cron.set_time_series( "+00:00 23:00 00:30" ) s1.add_task("cron").add_cron( cron );