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 8 Next »



This is  a small follow up exercise showing user of embedded triggers.  

These are trigger expression embedded within the scripts using the --wait child command.

Whilst the expression is not  true, then job will hold

Ecf Script

Add/amend the t2.ecf script

$HOME/course/test/f1/t2.ecf
%include <head.h>
ecflow_client --wait="t1 == complete"
%include <tail.h>

Text

# 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
     edit SLEEP 20
     task t1
     task t2
   endfamily
endsuite

Python

$HOME/course/test.py
import os
from ecflow import Defs,Suite,Family,Task,Edit,Trigger

def create_family_f1():
    return Family("f1",
                Edit(SLEEP=20),
                Task("t1"),
                Task("t2"))
             
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("check trigger expressions")
check = defs.check()
assert len(check) == 0, check 
 
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. Edit the suite definition file.
  2. Replace the suite
    python:   python3 test.py ;  python3 client.py
    text:        ecflow_client --suspend=/test ; ecflow_client --replace=/test  test.def
  3. Observe the tasks in ecflow_ui .
  4. Notice the wait icon on task t2.
  5. Introduce an error in the wait expression and ensure that abort the job

    Introduce error in wait expression
    ecflow_client --wait="txx == complete"  # there is no node with name tax, this should abort the task
  6. Introduce an impossible expression, what is the effect. 

    ecflow_client --wait="1 == 0" # this expression will never be satisfied.
  • No labels