ecFlow学习笔记02.2.2 —— 理解头文件

目录

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

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

    • *前面的章节我们创建了一个 task。

每个 task 都有对应的 ecf script,定义需要执行那些操作。脚本类似于 UNIX shell 脚本。
但 ecf script 提供于 C 语言类似的预处理指令(pre-processing directive)和预定义变量。
suite definition 中定义的变量可以在 ecf script 中使用,提供一种配置机制。
默认人使用字符 % 表示预处理指令,其中一种就是 include 头文件。
头文件用于向脚本中注入代码(与 C 语言的 include 头文件一样),提供一种代码复用的机制。如果相同的代码出现在不同的 ecf script 文件中,这些代码就应该放入一个头文件中。这样会提供一个单一的维护点。例如,每个 task 都需要建立与 ecflow_server 的通讯,并告诉服务器任务已经开始。这个样例代码就放在头文件中。

head.h

放在 ecf script 开头,作用:
准备与 ecflow_server 通信的环境。
定义脚本错误处理函数。当错误发生,通知服务器该任务 aborted。
使用 child command 通知服务器作业已经开始。

tail.h

放在 ecf script 文件结尾,通知服务器任务已经完成,使用 child command 中的 complete 命令。

windroc:
ecf script 也支持其它编程语言,保留头文件和预定义变量功能,不过需要在 def 文件中设置特殊的变量,之前在一篇博文中提到如何使用 python 编写 SMS 脚本,ecflow 也类似,后续博文会专门提到如何使用 python 编写 ecf script。
这两个头文件主要用于与 ecflow_server 通讯,建立通讯环境,在任务开始时通知服务器任务已经开始,在任务结束时通知服务器任务已经完成,在任务出错时通知服务器任务发生错误。可以使用其它方式实现这些基本通讯,比如使用单一的 python 脚本作为头文件。

任务

在 $HOME/course 目录中创建 head.h 和 tail.h 文件。

词汇表

ecf script
pre-processing
directives
aborted

TODO:python版头文件