ecFlow学习笔记02.1 —— 介绍

目录

该教程的最新版已发布在GitHub上,请访问ecflow-tutorial-cn

这是 ecFlow 教程的一部分,完整教程请参看《ecFlow学习笔记02 —— 教程

    • *这篇教程的目的是通过一个简单的示例介绍ecFlow的功能。

每个章节介绍一个新概念,并提供一系列任务。大部分章节都附带在线ecflow文档的链接,便于读者查看。

使用 ecFlow 的步骤

1. 编写 suite 定义

多个 task 可以组成 family,family 可以属于另外的 family 或者属于 suite。所有的实体(task,family,suite)都叫做 node,构成一个层次树。
有两个主要方法向 ecflow_server 描述 suite 定义(suite definition):文本文件,python API接口
文本文件
不支持条件语句,不支持函数
可以使用各种语言生成文本文件
与 SMS/CDP 类似,便于移植
语法参见《Definition file Grammar
Python接口
推荐方式,提供更过的功能
参见 ecFlow Python Api
windroc:

强烈建议使用 Python 接口,这也是 ecFlow 的优势之一。文本定义语法编写判断、循环及定义函数的能力很弱,def 文件很难复用。

词汇表

suite definition
task
suite
node
ecflow_server

2. 编写脚本

ecf script 是对应suite定义中task的文本文件。脚本定义任务重需要运行的主要工作,包含child command调用,特殊注释,以及为用户提供信息的说明段落。
child command 是 ecflow_client 的命令子集,实现与 ecflow_server 的通讯。这些命令通知服务器某任务已经开始,完成,出错,或设置某些事件。

词汇表

ecf script
child command
ecflow_client
event

3. 启动 ecflow 服务器

ecflow_server 启动后,可以加载 suite definition
用户接着启动 ecflow_server 中的调度器
调度器会每分钟检查 suite definition 的依赖关系。如果满足依赖关系,服务器会提交任务(task)。这个过程叫做作业生成(job creation)。任务(task)对应的运行过程被称为作业(job)。
运行中的作业使用 child command 与服务器通信。这些会导致:
服务器中保存的节点(node)状态(status)改变
更新节点的属性(比如事件(event),标尺(meter),标签(label))

词汇表

scheduling
dependencies
job creation
status
meter
label

4. 使用 GUI 交互

ecFlow 有专用的GUI客户端,叫做 ecflowview,用于可视化和监控:

  • suite definition 的树形结构(suite,family,task)
  • 节点和服务器的状态改变
  • 节点的属性和任意依赖关系
  • ecf 脚本文件和扩展的作业文件(job file)

另外,ecflowview 提供一系列使用 ecflow_client 命令的工具与服务器交互。

词汇表

ecflowview