Versions Compared

Key

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

...

Code Block
languagepy
from ecflow import Defs,Suite,Task,Trigger,Complete
defs = Defs()
defs += Suite("s1",
           Task("t1"),
           Task("t2",
             Trigger("t1 == active and t3 == aborted"),
             Complete("t3 == complete")),
           Task("t3"))

The following examples show alternative styles that produce the same definition:


Code Block
languagepy
defs = Defs()
s1 = defs.add_suite("s1") 
t1 = s1.add_task("t1")
t2 = s1.add_task("t2")
t2.add_trigger( "t1 == active and t3 == aborted" )
t2.add_complete( "t3 == complete" )
t3 = s1.add_task("t3")

...



Code Block
languagepy
defs = Defs().add(
         Suite("s1").add(
           Task("t1"),
           Task("t2").add(
              Trigger("t1 == active and t3 == aborted"),
              Complete("t3 == complete")),
           Task("t3")))



Code Block
languagepy
defs = Defs() + Suite("s1")
defs.s1 += [ Task("t{}".format(i)) for i in range(1,4) ]
defs.s1.t2 += [ Trigger("t1 == active and t3 == aborted"),
                        Complete("t3 == complete") ]


Adding triggers like '<nodepath> == complete' is extremely common. Hence there are a few short cuts;

...

The following suites are identical:


Code Block
languagepy
defs = Defs() + Suite("s1")
defs.s1 += [ Task("t1"),Task("t2"),Task("t3"),Task("t4") ]
defs.s1.t1 += Trigger( "t2 == complete" )
defs.s1.t2 += Trigger( "t3 == complete" )
defs.s1.t3 += Trigger( "t4 == complete" )



Code Block
languagepy
defs = Defs() + Suite("s1")
defs.s1 << Task("t1") << Task("t2") << Task("t3") << Task("t4")
# << relies on the leading node to be a Suite or Family