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 2 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:

> ecf_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:

> ecf_client --delete=_all_

> ecf_client --load=test.def

Then restart the suite:

> ecf_client --begin=test

If you are using the ecFlow Python Api:

#!/usr/bin/env python2.5

import os

import ecflow 

   

defs = ecflow.Defs("test.def")

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.
> ecf_client --replace /test test.def

or to replace part of the suite:

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

In python this would be:

#!/usr/bin/env python2.5

import os

import ecflow 

   

defs = ecflow.Defs("test.def")

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