Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Ecf Script

We will create new tasks (t5, t6 and t7) that will be triggered
when the meter in task t1 reaches certain values.
To notify ecflow_server, the task ( t1 in the example below) must call
the ecflow_client –meter. This is also one of the child command‘s.

 

Code Block
languagebash
title$HOME/course/f1/t1.ecf
%include <head.h>
echo "I will now sleep for %SLEEP% seconds"
sleep %SLEEP%
n=1
while [[ $n -le 100 ]]               # Loop 100 times
do
   sleep 1                           # Wait a short time
   ecflow_client --meter=progress $n # Notify ecFlow
   (( n = $n + 1 ))
done
%include <tail.h>

 

...

Python

Code Block
languagepy
title$HOME/course/test.py
#!/usr/bin/env python2.7
import os
from ecflow import Defs,Suite,Family,Task,Edit,Trigger,Complete,Event,Meter

def create_family_f1():
    return Family("f1",
                Edit(SLEEP= 20),
                Task("t1", Meter("progress", 1, 100, 90)),
                Task("t2", Trigger("t1 == complete"), Event("a"), Event("b")),
                Task("t3", Trigger("t2:a")),
                Task("t4", Trigger("t2 == complete"), Complete("t2:b")),
                Task("t5", Trigger("t1:progress ge 30")),
                Task("t6", Trigger("t1:progress ge 60")),
                Task("t7", Trigger("t1:progress ge 90")))  
        
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. Edit the definition file or python to add the modifications.
  2. Edit t1.ecf to call ecflow_client –meter
  3. Copy t4.ecf to t5.ecf, t6.ecf and t7.ecf
  4. Replace the suite
    python: python test.py ; python client.py
    text:      ecflow_client --suspend=/test   ; ecflow_client --replace=/test  test.def
  5. Observe the tasks in ecflow_ui
  6. See the triggers by selecting progress and clicking on the Triggers icon.
  7. Move the mouse pointer over progress then with the right mouse button, choose Edit...
  8. Modify the value of the meter.
       

...