Label

有时需要使用 ecflow_ui 查看任务的特殊信息,这就需要用到 label。 label 是与 task 关联的字符串,可以使用 ecflow_client --label 命令更新。

Ecf脚本

创建新的 family f3 和它的一个 task t1。

创建相应的 ecf script,位于 $ECF_HOME/test/f3/t1.ecf

  1. %include <head.h>
  2. n=1
  3. while [[ $n -le 5 ]] # Loop 5 times
  4. do
  5. msg="The date is now $(date)"
  6. ecflow_client --label=info "$msg" # Set the label
  7. sleep 60 # Wait a one minute
  8. (( n = $n + 1 ))
  9. done
  10. ecflow_client --label=info "I have now finished my work."
  11. %include <tail.h>

suite definition

下面的代码中省略之前的 family f1 和 family f2。

文本方式

  1. # Definition of the suite test. Note Family f1,f2 from previous pages are omitted
  2. suite test
  3. edit ECF_INCLUDE "$ECF_HOME"
  4. edit ECF_HOME "$ECF_HOME"
  5. family f3
  6. task t1
  7. label info ""
  8. endfamily
  9. endsuite

Python

  1. import os
  2. from pathlib import Path
  3. from ecflow import Defs, Suite, Task, Family, Edit, Trigger, \
  4. Event, Complete, Meter, Time, Day, Date, Cron, Label
  5. # ... skip ...
  6. def create_family_f3():
  7. return Family("f3",
  8. Task("t1",
  9. Label("info", "")))
  10. print("Creating suite definition")
  11. home = os.path.abspath(Path(Path(__file__).parent, "../../../build/course"))
  12. defs = Defs(
  13. Suite('test',
  14. Edit(ECF_INCLUDE=home, ECF_HOME=home),
  15. create_family_f1(),
  16. create_family_house_keeping(),
  17. create_family_f3()))
  18. print(defs)
  19. print("Checking job creation: .ecf -> .job0")
  20. print(defs.check_job_creation())
  21. print("Saving definition to file 'test.def'")
  22. defs.save_as_defs(str(Path(home, "test.def")))
  23. # To restore the definition from file 'test.def' we can use:
  24. # restored_defs = ecflow.Defs("test.def")

运行脚本:

  1. $python test.py
  2. Creating suite definition
  3. # 4.8.0
  4. suite test
  5. edit ECF_INCLUDE '/g3/wangdp/project/study/ecflow/ecflow-tutorial-code/build/course'
  6. edit ECF_HOME '/g3/wangdp/project/study/ecflow/ecflow-tutorial-code/build/course'
  7. # ... skip ...
  8. family f3
  9. task t1
  10. label info ""
  11. endfamily
  12. endsuite
  13. Checking job creation: .ecf -> .job0
  14. Saving definition to file 'test.def'

任务

  1. 修改 suite definition 文件或者 python 脚本
  2. 创建新的 ecf script 文件 $ECF_HOME/test/f3/t1.ecf
  3. 替换 suite definition
  4. 观察 ecflow_ui

    Label - 图1