ecFlow's documentation is now on readthedocs!

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »

In the previous chapter, we saw how to define a variable for a task.
When all the tasks of the same family share the same variable value,
the value could be defined at the family level.
This is termed variable inheritance
# Definition of the suite test.

suite test

   edit ECF_INCLUDE "$HOME/course"

   edit ECF_HOME    "$HOME/course"

   family f1

      edit SLEEP 20

      task t1

      task t2

   endfamily

endsuite

Or in python:

#!/usr/bin/env python2.5

import os

import ecflow  



def create_family_f1():

    f1 = ecflow.Family("f1")

    f1.add_variable("SLEEP",20)

    f1.add_task("t1")

    f1.add_task("t2")

    return f1         

      

defs = ecflow.Defs("test.def")

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_f1() )

The variable could have been defined at the level of the suite,
achieving the same results. Variables are inherited from the parent node.
If a variable is redefined lower in the tree, it is said to be overridden.
In this case the new definition is the one being used.
It is possible to override generated variables.
This is not recommended and you should understand all the consequences
if you decide to do so.

Let us have a quiz. Consider the following suite:

suite test

   edit SLEEP 100

   family f1

      edit SLEEP 80

      task t1

      task t2

         edit SLEEP 9

      family g1

          edit SLEEP 89

          task x1

              edit SLEEP 10

          task x2

      endfamily

   endfamily

   family f2

     task t1

     task t2

         edit SLEEP 77

     family g2

          task x1

              edit SLEEP 12

          task x2

      endfamily

   endfamily

endsuite

What is the value of the variable SLEEP for:

node SLEEP
test/f1/t1 ?
/test/f1/t2 ?
/test/f1/g1/x1 ?
/test/f1/g1/x2 ?
/test/f2/t1 ?
/test/f2/t2 ?
/test/f2/g2/x1 ?
/test/f2/g2/x2 ?
  • No labels