|
This is small follow up exercise where we will use embedded triggers.
These are triggers embedded within the scripts.
Whilst the expression is not true, then job will hold
Add/amend the t2.ecf
%include <head.h> ecflow_client --wait="t1 == complete" %include <tail.h> |
# 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 |
The trigger expression can be checked, this is especially important when dealing with very large suites and complex triggers.
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") |
Introduce an error in the trigger expression and ensure that this error is trapped. i.e. change trigger to.
Trigger("t == complete") # there is no node with name t, this should be reported as an error |
|