有三個任務需要同時執行,3個任務有任意乙個執行出錯就終止整個任務執行。3個並行任務執行完成後,順序執行多個任務,最後結束執行。
根據需求整體workflow 結構是這樣的
整個結構是dag ,dag 裡面的兩個template ,兩個template 都是step型別,前者並行執行,後者順序執行。後面的template 根據dag 的依賴關係依賴於前者,前者只要有乙個任務執行出錯那麼就會直接推出整個任務。
整個workflow的yaml
apiversion: argoproj.io/v1alpha1 2101 - name: pledge-action #定義乙個dag型別的模版,把上面的兩個step型別的template包含其中,他們之間是依賴關係。kind: workflow 3
metadata:
4 generatename: pledge-
5spec:
6 entrypoint: pledge-action 7
templates:
8 - name: py-script #定義乙個py的指令碼執行的容器模版,其他模版呼叫的時候輸入要執行的指令碼路徑作為它執行的引數就可以執行任務了 9
inputs: 10
parameters:
11 -name: message 12
container:
13 image: registry-kzf/pledge:1.0.2
14 command: [python, "}"
] 1516 - name: build-basic-data #定義乙個包含3個並行任務的step型別的template 17
steps:
18 - - name: pledge-price-market
19 template: py-script 20
arguments:
21 parameters:
22 - name: pledge-financial
23 template: py-script 24
arguments:
25 parameters:
26 - name: pledge-stock-basic
27 template: py-script 28
arguments:
29 parameters: 30
31 - name: main-action #定義乙個包含3個順序執行任務的step型別的模版 32
steps:
33 - - name: build-pre-details-tables
34 template: py-script 35
arguments:
36 parameters:
37 - - name: build-details-tables
38 template: py-script 39
arguments:
40 parameters:
41 - - name: build-pre-status-tables
42 template: py-script
102 dag:
103 tasks:
104 - name: build-basic-data
105 template: build-basic-data
106 - name: main-action
107 dependencies: [build-basic-data]
108 template: main-action
說明關於step
step 型別的模版,如果要執行並行任務,那麼多個step之間只有第乙個step的name前面是--後面的step的name 是-,也就是 模版 build-basic-data 中定義的3個並行任務 的格式。
如果是順序執行的step,那麼他的結構就是模版 main-action格式,每個name前面都是--
關於dag
dag有乙個內建的快速失敗結束特性,一旦檢測到乙個dag節點失敗,它就會停止排程新步驟。然後,在dag自身失敗之前,它會等待所有dag節點完成。failfast標誌預設為true,如果設定為false,它將允許dag執行dag的所有分支直到完成(成功或失敗),而不考慮dag中分支的失敗結果。
有些工作流任務需要每天定時執行,在argo中有類似的資源物件,可以編寫
apiversion: argoproj.io/v1alpha1建立argo cron create cron.yamlkind: cronworkflow
metadata:
name: daily-job
spec:
# run daily at 11:33 am
timezone:
"asia/shanghai
"schedule:
"33 11 * * *
"workflowspec:
entrypoint: whalesay
templates:
-name: whalesay
container:
image: docker/whalesay:latest
command: [cowsay]
args: [
"hello world
"]#注意時區預設為倫敦的市區,所以需要額外配置為上海時區
檢視argo cron list -n argo
name age last run next run schedule suspended
daily-job 8m 7m 23h 33 11 * * * false
daily-job-pledge 10s n/a 5h 0 17 * * * false
工作流建模 工作流概念
工作流建模 工作流概念 1 案例 工作流系統得基本目的是處理案例。每個案例都有乙個唯一標識,而且每個案例的生命週期都是有限的。案例生命週期都處於某個特定狀態,該狀態由三個元素組成 1 案例相關的屬性的值 案例屬性是一系列同案例相關的變數。能夠用來管理案例。正是通過這些變數,才有可能指出在特定條件下某...
工作流 一 什麼是工作流
什麼是工作流 工作流的英文全稱是 workflow,簡單理解則是業務流程的計算機化或自動化。它是是針對工作中具有固定程式的常規活動而提出的乙個概念,通過將工作活動分解定義良好的任務 角色 規則和過程來進行執行和監控,達到提高生產組織水平和工作效率的目的。工作流技術發端於70年代中期辦公自動化領域的研...
工作流 二 什麼是工作流引擎
什麼是工作流引擎 工作流引擎的英文全稱是 workflow engine,是指workflow作為應用系統的一部分,並為之提供對各應用系統有決定作用的根據角色 分工和條件的不同決定資訊傳遞路由 內容等級等核心解決方案。例如開發乙個系統最關鍵的部分不是系統的介面,也不是和資料庫之間的資訊交換,而是如何...