日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

流程定義介紹

本文介紹云工作流的流程定義語言,通過基礎知識和相關使用示例,讓您輕松熟悉構建和管理業務流程的技巧。

基礎知識

云工作流的流程定義語言FDL(Flow Definition Language)是一種基于YAML語言的狀態機定義規范,通過定義一個狀態機(狀態集合)描述業務流程邏輯;在執行時,按照流程定義的狀態關系結合業務運行時執行結果驅動狀態流轉,最終完成流程執行。

一個流程(Flow)通常包含若干狀態(State),這些狀態可以是簡單的原子狀態,例如集成任務(Task)、成功(Succeed)、失敗(Fail)、等待(Wait)和傳遞(Pass)等;也可以是復雜的控制狀態,例如選擇(Choice)、并行(Parallel)和循環(Map)等。這些狀態可以組合嵌套使用,以構建復雜的業務邏輯,例如,一個并行狀態的分支可以是一個選擇狀態。

流程中的狀態執行可能出現錯誤,云工作流提供OnError錯誤處理能力,支持錯誤重試或錯誤流轉到其他狀態。

云工作流的狀態類似于編程語言中的函數,組合類似于函數調用。狀態之間通過輸入(Input)和輸出(Output)傳遞數據,每個狀態由上下文(Context)變量保存數據。狀態間可以組合嵌套,如果一個狀態包含另一個狀態,則稱外層狀態為內部狀態的作用域(Scope)。

定義流程時,您可以使用以下狀態:

  • 任務(Task):用于調用其他集成服務API來完成特定任務。

  • 傳遞(Pass):用于作為空白節點和數據預處理節點,在流程定義和調試階段發揮作用。

  • 等待(Wait):如果需要等待一段時間,可以通過等待(Wait)狀態暫停流程的執行。

  • 選擇(Choice):用于根據特定的條件或邏輯判斷來決定流程的下一步走向。

  • 并行(Parallel):通過并行(Parallel)狀態并行執行多個分支,這些分支共享同一份輸入。

  • 迭代(Map):允許用戶對一個數組中的每個元素執行相同的操作,從而簡化大規模數據的處理和工作流的管理。

  • 成功(Succeed):用于提前結束一系列狀態的執行,在需要根據特定條件提前結束流程或子流程時非常有用。

  • 失?。‵ail):用于處理工作流執行過程中出現的預期或非預期錯誤。

流程屬性

流程包含以下屬性。

字段

類型

是否必選

描述

示例值

Type

String

流程定義類型。

StateMachine

SpecVersion

String

流程定義的版本。

v1

States

Array

內部嵌套的狀態數組,里面包含了流程的所有步驟,這些步驟可以嵌套使用,以控制工作流的執行路徑。

Processor:
   StartAt: Pass1
   States:
     - Type: Pass
       Name: Pass1
       End: true

StartAt

String

內部嵌套狀態數組的執行起點。

my start task

Name

String

流程名稱。

my-wkfl

Description

String

流程描述。

test workflow definition

Timeout

Int

執行超時時間。

600

狀態通用屬性

所有狀態包含的通用屬性。

字段

類型

是否必選

描述

示例值

Name

string

狀態名稱。

my-state-name

Description

string

狀態描述。

describe it here

Type

string

狀態類型。

Task

Next

string

當前狀態的下一個狀態。當End取值為true時,無需指定。

my-next-state

End

bool

是否為當前作用域的終結節點。

true

重要

YAML格式的同一個流程定義中,字段Name的值不能重復,包括代表流程名稱的Name和代表狀態名稱的Name。

狀態作用域

云工作流的狀態(State)之間可以組合嵌套,作用域則是支撐復雜邏輯嵌套的基礎。如果一個狀態包含另一個狀態,則稱外層狀態為作用域。如果兩個狀態為同級狀態,則這兩個狀態的作用域相同。 我們將通過如下示例介紹流程的作用域概念:

Type: StateMachine  
Name: my-wkfl  
SpecVersion: v1
StartAt: Parallel1  
States:  
  - Type: Parallel  
    Name: Parallel1  
    Next: Pass4  
    Branches:  
      - StartAt: Pass1  
        States:  
          - Type: Pass  
            Name: Pass1  
            Next: Pass2  
            OutputConstructor:  
              FieldA: 123   
          - Type: Pass  
            Name: Pass2  
            End: true  
      - StartAt: Pass2  
        States:  
          - Type: Pass  
            InputConstructor:  
              FieldA: 321  
            Name: Pass3  
            End: true  
  - Type: Pass  
    Name: Pass4  
    End: true

本示例中的作用域劃分如下:

  • Parallel1與Pass4屬于同一個作用域,即my-wkfl。

  • ParallelBranch #0與ParallelBranch #1屬于同一個作用域,即Parallel1。

  • Pass1與Pass2屬于同一個作用域,即ParallelBranch #0。

本示例與成功狀態和失敗狀態示例類似,運行至End屬性狀態,會將自身所處的作用域狀態標記為完成。具體信息如下:

  • Pass2完成后,ParallelBranch #0被標記為完成。

  • 當某些時刻ParallelBranch #0和ParallelBranch #1陸續完成,Parallel1被標記為完成。

  • Pass4完結后,my-wkfl被標記為完成。

流程示例

以下示例流程包含三個狀態,Pass1、Parallel1和Pass4。

整體流程從Pass1開始執行,然后指向Parallel1。其中Parallel1又包含了兩個分支,Pass2和Pass3,Pass2和Pass3也分別為分支執行起始狀態。Parallel1執行完畢后指向Pass4,并最終結束整個流程。

Type: StateMachine
Name: my-wkfl
SpecVersion: v1
StartAt: Pass1
States:
  - Type: Pass
    Name: Pass1
    Next: Parallel1
  - Type: Parallel
    Name: Parallel1
    Next: Pass4
    Branches:
      - StartAt: Pass2
        States:
          - Type: Pass
            Name: Pass2
            End: true
      - StartAt: Pass3
        States:
          - Type: Pass
            Name: Pass3
            End: true
  - Type: Pass
    Name: Pass4
    End: true

相關文檔