We already saw that ecFlow has some variable‘s, like ECF_HOME.
There are three kinds of variables:


Ecf Script

In the previous example, we have copied the file t1.ecf to the file t2.ecf.

Edit those two files so they call the UNIX sleep command with a user variable called SLEEP as a parameter.


%include <head.h>
echo "I will now sleep for %SLEEP% seconds"
sleep %SLEEP%
%include <tail.h>


Text

Then add the variable to the suite definition:

# Definition of the suite test.
suite test
   edit ECF_INCLUDE "$HOME/course"   # replace '$HOME' with the path to your home directory
   edit ECF_HOME    "$HOME/course"
   family f1
      task t1
         edit SLEEP 20
      task t2
         edit SLEEP 20
   endfamily
endsuite

Python

import os
from ecflow import Defs,Suite,Family,Task,Edit

def create_family_f1():
    return Family("f1",
                Task("t1",Edit(SLEEP=20)),
                Task("t2",Edit(SLEEP=20)))

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

What to do

  1. Do the modifications
  2. Replace the suite
    python: python3 test.py
                 python3 client.py
    text:      ecflow_client --suspend=/test ;  ecflow_client --replace=/test test.def
  3. Watch in ecflow_ui . You should see the tasks with a status active for 20 second. Look at the job output.