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

Let’s add another task named t2.
You will need to modify the suite definition file and add a new script.
First modify the suite definition
# Definition of the suite test
suite test
   edit ECF_HOME "$HOME/course"
   task t1
   task t2
endsuite
As before replace $HOME with the real path to your home directory.
You must also create a file t2.ecf in $HOME/course/test.
Simply copy t1.ecf.

Then you must load the file again:

> ecflow_client --load test.def

Warning

This will fail because the suite is already loaded

Because the suite is already defined, you need to delete and reload it first:

> ecflow_client --delete=_all_
> ecflow_client --load=test.def

Then restart the suite:

> ecflow_client --begin=test

If you are using the ecFlow Python Api:

#!/usr/bin/env python2.5
import os
import ecflow 
   
defs = ecflow.Defs()
suite = defs.add_suite("test")
suite.add_variable("ECF_HOME",os.getenv("HOME") + "/course")
suite.add_task("t1")
suite.add_task("t2")
   
# delete the definition in the server, load a new definition
ci = ecflow.Client();
ci.set_host_port("localhost","3141")
try:
    ci.delete_all()           # clear out the server
    ci.load(defs)             # load the definition into the server
    ci.begin_suite("test")     
except RuntimeError, e:
    print "failed: " + str(e)
    
Rather than deleting, loading and beginning the suite every time you can replace
all or part of the suite for example to replace whole suite.
> ecflow_client --replace /test test.def

or to replace part of the suite:

> ecflow_client --replace /test/t2 test.def

In python this would be:

#!/usr/bin/env python2.5
import os
import ecflow 
   
defs = ecflow.Defs()
suite = defs.add_suite("test")
suite.add_variable("ECF_HOME",os.getenv("HOME") + "/course")
suite.add_task("t1")
suite.add_task("t2")
   
# replace suite /test in the server, with the definition provided in defs
ci = ecflow.Client();
try:
    ci.replace("/test",defs)     
except RuntimeError, e:
    print "failed: " + str(e)
    
It is good practice to suspend your suite before you reload any part of it.
In ecflowview right click on the suite and select “Suspend”.
Once you made your change you can right click on the suite and “Resume” it.

Note

For brevity the following examples, will not show the loading of the suite.

What to do:

  1. Create the new task
  2. Create t2.ecf by copying from t1.ecf
  3. Begin the suite
  4. In ecflowview, watch the two task running. They should run at the same time
  • No labels