跳到內容

Workflow 分支、迴圈與 Sleep 節奏

Step 完成後,next 陣列中的每個目標會依陣列順序各加入 queue 一次。Phase 2 使用循序 BFS,分支不會平行。A → (B, C) → D 這種 diamond 沒有 join 或 barrier,因此 D 會跑兩次,分別來自 B 與 C 的 traversal。若重複 side effect 不安全,應拆成不同下游 step。Delivery step 失敗會使整個 run 失敗;若位於 loop,每個 iteration 都會各自 enqueue 並扣款。notify step 則是相反的 reliability boundary:持久化或 push 失敗絕不使 run 失敗。

Back edge 與 self-loop 都合法。每次造訪都是新的 zero-based iteration{{steps.X.output}} 永遠讀取 X 最新完成的 iteration。輪詢時,先經過 seconds 介於 1–3600 的 Sleep step,再回到 poll step。Sleep 會建立可見的 step run,至少每五秒檢查一次取消,也會在 workflow deadline 停止。刻意長跑的輪詢達到最長執行時間是中性的預期結果,不一定代表流程設計失敗。

maxVisitsPerStep 可設 1–1000,預設 25。若某 step 已執行到上限,新的 incoming traversal 會被丟棄、run 留下 notice,其他已排隊分支仍繼續。Queue 清空後 run 會 completed,包括 visit fuse 丟棄 traversal 後的情況。maxDurationSeconds 與手動取消是彼此獨立的保險。graph.layout 是不透明的 UI metadata,請勿修改。欄位、狀態、iterations 與 notices 最終以 live Action schema 和 run detail 為準。

arinova.workflow.create_workflow, arinova.workflow.update_workflow, arinova.workflow.run_workflow, arinova.workflow.get_run, arinova.workflow.cancel_run

Also known as

workflow 分支, fan-out 流程, workflow 迴圈, 輪詢迴圈, Sleep step, 每步最大造訪次數, diamond workflow, branching workflow


Machine-readable Markdown · Knowledge index

Build a7f47a5ca54ddcf7806cd48b81ce1b9827042766