定义新的 suite
有多种定义 suite definition 的方法,参看 Definition creation strategies。
本教程介绍下面两种方式:
- 文本方法
- Python 方法
文本方法
创建文本文件 test.def,内容如下:
# Definition of the suite testsuite testedit ECF_HOME "$ECF_HOME" # replace '$ECF_HOME' with the path to your ECF_HOME directorytask t1endsuite
译者注:与 SMS 的定义方式相同,只需要修改变量名,将
SMS_XXX修改为ECF_XXX。
上述文件包含一个名为 test 的 suite 的 suite definition,该 suite 包含一个名为 t1 的 task。
下面逐行解释含义
- 该行为注释。在
#后到行尾之间的所有字符都会被忽略。 - 定义一个名为 test 的新的 suite。
- 定义一个 ecflow 变量(variable),叫做
ECF_HOME。该变量定义定义名为 test 的 suite 可以在哪里找到所有的 unix 文件。余下的课程中,所有的文件名都相对于该目录。确保用你的ECF_HOME目录替换$ECF_HOME。 - 定义一个名为 t1 的 task。
- endsuite 结束名为 test 的 suite 的定义。
python方法
创建一个 python 文件,例如命名为 test.py:
import osfrom ecflow import Defs, Suite, Task, Editprint("Creating suite definition")home = os.path.join(os.getenv("HOME"), "course")defs = Defs(Suite('test',Edit(ECF_HOME=home),Task('t1')))print(defs)
运行脚本
$ python test.pyCreating suite definition# 4.8.0suite testedit ECF_HOME '/g1/u/wangdp/course'task t1endsuite
附:下面时 2017 版的 suite 定义脚本,可以看到更新后的 ecflow 提供更简洁的 suite 定义方式。
#!/usr/bin/env python2.7import osimport ecflowprint "Creating suite definition"defs = ecflow.Defs()suite = defs.add_suite("test")suite.add_variable("ECF_HOME", os.path.join(os.getenv("HOME"), "course"))suite.add_task("t1")
接下来的所有 Python 例子都应该用这种方式运行。
任务
- 尝试测试两种方法,后续例子将只用 python 接口
- 创建并编辑 suite definition 文件
