ecFlow学习笔记02.3.6 —— 添加触发器

目录

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

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

    • *前一个练习中,我们看到两个 task 同时运行。我们想确保 t2 只在 t1 完成后再运行,因此需要定义触发器 trigger。

Trigger 用来声明两个任务间的依赖关系(dependencies),例如,二号任务可能需要一号任务生成的数据。当 ecFlow 尝试启动一个任务时,它会检查 trigger 表达式。如果条件满足,任务启动,相反任务保持 queued 状态。Trigger 可以用在任务间、family 间或者两者的混合。
记住下面两条规则

  • 所有任务都完成时,family 才完成
  • 任务的 trigger 和所有父节点的 trigger 都满足时,任务才会启动。

每个节点只能有一个 trigger 表达式,但可以构建非常复杂的表达式(记住父节点的 trigger 也是隐含的 trigger)。
有时 trigger 用于防止同一时间运行过多的任务。这种情况下更好的方法就是使用 limit (后面将会介绍 limit)。
trigger 中的表达式可以以使用节点的全名,例如
{shell}/test/f1/t1{/shell} 表示 task t1
{shell}/test/f1{/shell} 表示 family f1

一些情况下,ecFlow 接受相对名称,例如 {shell}../t1{shell}
Trigger 可以非常复杂,ecFlow 支持所有的条件语句(not、and、or 等等),并且 trigger 可以引用节点属性,例如 event, meter, variable, repeat 和生成变量。

Suite Definition

Text

Python

任务

  1. 编辑 suite definition,添加 trigger
  2. 替换 suite
  3. 在 ecflowview 观察任务。
  4. 在ecflowview中查看 t1 和 t2 的 trigger。
  5. 点击箭头,查看trigger 的关系。
  6. 使用 Show 菜单设置在 ecflowview 主窗口中显示 trigger
  7. 搜索 t1

词汇表

trigger
dependencies
queued
complete
node
limit
task
family
event
meter
variable
repeat
suite definition
suite
ecflowview