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

本文介紹選擇狀態(tài)的基本概念及其相關(guān)使用示例,以及條件表達(dá)式的相關(guān)內(nèi)容。

基本概念

選擇狀態(tài)讓流程根據(jù)條件執(zhí)行不同的狀態(tài),類似于編程語言中的switch-case,它包含多個(gè)條件選項(xiàng)(Choice)和一個(gè)默認(rèn)選項(xiàng)(Default),每個(gè)條件選項(xiàng)帶有一個(gè)條件表達(dá)式(Condition)和跳轉(zhuǎn)指令(Next)。

系統(tǒng)會(huì)按照選項(xiàng)定義的順序依次評(píng)估其條件表達(dá)式是否返回True

  • 如果某選項(xiàng)返回True,則執(zhí)行選項(xiàng)對(duì)應(yīng)的狀態(tài)(如果定義了狀態(tài)),然后執(zhí)行跳轉(zhuǎn)(如果定義跳轉(zhuǎn)指令)。

  • 如果沒有任何選項(xiàng)返回True,則執(zhí)行默認(rèn)選項(xiàng)對(duì)應(yīng)的狀態(tài)和跳轉(zhuǎn)。

選擇狀態(tài)包含以下屬性。

字段

類型

是否必選

描述

示例值

Name

string

狀態(tài)名稱。

my state

Description

string

狀態(tài)描述。

describe it here

Type

string

狀態(tài)類型。

Choice

InputConstructor

map[string]any

輸入構(gòu)造器。

請(qǐng)參見輸入和輸出

Default

string

默認(rèn)分支。

my next task

Branches

ChoiceBranch

分支列表。

請(qǐng)參見ChoiceBranch

ChoiceBranch

字段

類型

是否必選

描述

示例值

Condition

string

條件表達(dá)式。

$Input.status=="ready"

Next

string

指向節(jié)點(diǎn)名稱。

my next task

重要

Choice狀態(tài)不支持End屬性和Next屬性,通過Default屬性表示所有選擇條件都不滿足時(shí)的默認(rèn)指向狀態(tài),作用同Next,但在Branches中支持Next屬性。

使用示例

以下示例定義一個(gè)選擇狀態(tài)。

  • 如果輸入中的status的值是ready,則會(huì)執(zhí)行第一個(gè)條件選項(xiàng)的狀態(tài)Pass2

  • 如果輸入中的status的值不是ready,則會(huì)執(zhí)行默認(rèn)選項(xiàng)邏輯,即Pass1

Type: StateMachine
Name: my-wkfl
SpecVersion: v1
StartAt: Choice1
States:
  - Type: Choice
    Name: Choice1
    Branches:
      - Condition:$Input.status=="ready"
        Next: Pass2
    Default: Pass1
  - Type: Pass
    Name: Pass1
    End: true
  - Type: Pass
    Name: Pass2
    End: true

條件表達(dá)式

當(dāng)前系統(tǒng)支持的條件表達(dá)式由以下操作和變量組成,執(zhí)行后返回Bool值即可達(dá)成條件:

  • 比較操作:>>=<<===!=,適用于字符串和數(shù)字類型。

  • 邏輯操作:||&&

  • 字符常量:以雙引號(hào)(“”)或者反引號(hào)(``)開始和結(jié)束,例如"foobar"或者`foobar`。

  • 數(shù)字常量:112.5

  • 布爾常量:truefalse

  • 前綴:!-

  • 包含:in,用來判斷數(shù)組是否包含某個(gè)值,或者對(duì)象是否包含某個(gè)鍵值。

表達(dá)式示例

以下示例對(duì)于下面的狀態(tài)輸入$Input,針對(duì)不同的條件表達(dá)式,顯示了不同的執(zhí)行結(jié)果。Condition可以使用的上下文表達(dá)式變量為$Context$Input。更多信息,請(qǐng)參見數(shù)據(jù)傳遞

{
	"a": 1,
	"b": {
		"b1": true,
		"b2": "ready"
	},
	"c": [1, 2, 3],
	"d": 1,
	"e": 1,
	"f": {
		"f1": false,
		"f2": "inprogress"
	}
}

條件表達(dá)式

執(zhí)行結(jié)果

$Input.a==1

true

$Input.a==2

false

$Input.a>0

true

0<$Input.a

true

$Input.a>=1

true

$Input.a!=2

true

$Input.b.b1

true

$Input.b.b1==true

true

$Input.b.b1==false

false

$Input.b.b2=="ready"

true

$Input.b.b2=="inprogress"

false

$Input.a==1 && $Input.b.b1

true

$Input.a==2 && $Input.b.b1

false

$Input.c[0]==1

true

$Input.c[0]==$Input.a

true