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
任务
- 编辑 suite definition,添加 trigger
- 替换 suite
- 在 ecflowview 观察任务。
- 在ecflowview中查看 t1 和 t2 的 trigger。
- 点击箭头,查看trigger 的关系。
- 使用 Show 菜单设置在 ecflowview 主窗口中显示 trigger
- 搜索 t1
词汇表
trigger
dependencies
queued
complete
node
limit
task
family
event
meter
variable
repeat
suite definition
suite
ecflowview