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
- Edit the suite definition file.
- Replace the suite
python: python3 test.py ; python3 client.py
text: ecflow_client --suspend=/test ; ecflow_client --replace=/test test.def - Observe the tasks in ecflow_ui .
- Notice the wait icon on task t2.
Introduce an error in the wait expression and ensure that abort the job
Introduce error in wait expressionecflow_client --wait="txx == complete" # there is no node with name tax, this should abort the task
Introduce an impossible expression, what is the effect.
ecflow_client --wait="1 == 0" # this expression will never be satisfied.