CreateUiDefinition 邏輯函式

這些函式可用於條件運算式。 有些函式可能不支援所有 JSON 資料類型。

如果所有參數都評估為 true,則傳回 true。 此函式僅支援布林值類型的兩個或多個參數。

下列範例會傳回 true

"[and(equals(0, 0), equals('web', 'web'), less(1, 2))]"

下列範例會傳回 false

"[and(equals(0, 0), greater(1, 2))]"

coalesce

傳回第一個非 null 參數的值。 此函式支援所有 JSON 資料類型。

假設 element1element2 為未定義。 下列範例會傳回 "Contoso"

"[coalesce(steps('demoStep').element1, steps('demoStep').element2, 'Contoso')]"

在頁面載入後因使用者動作而發生的選擇性叫用內容的情況下,這個函式特別有用。 這個情況的一個範例是:如果 UI 中一個欄位的限制式是取決於另一個起初不可見的欄位目前所選的值。 在此情況下,coalesce() 可以用來在頁面載入時允許函式在語法上有效,同時讓使用者在與欄位互動時產生所要的效果。

請考慮使用這個 DropDown,使用者可以藉此選擇數種不同的資料庫類型:

{
    "name": "databaseType",
    "type": "Microsoft.Common.DropDown",
    "label": "Choose database type",
    "toolTip": "Choose database type",
    "defaultValue": "Oracle Database",
    "visible": "[bool(steps('section_database').connectToDatabase)]"
    "constraints": {
        "allowedValues": [
            {
                "label": "Azure Database for PostgreSQL",
                "value": "postgresql"
            },
            {
                "label": "Oracle Database",
                "value": "oracle"
            },
            {
                "label": "Azure SQL",
                "value": "sqlserver"
            }
        ],
        "required": true
    },

若要以此欄位目前所選擇的值設定另一個欄位動作的條件,請使用 coalesce(),如下所示:

"regex": "[concat('^jdbc:', coalesce(steps('section_database').databaseConnectionInfo.databaseType, ''), '.*$')]",

此為必要動作,因為 databaseType 一開始並不會顯示,因此沒有值。 這會導致整個運算式無法正確進行評估。

等於

如果這兩個參數有相同的類型和值,則傳回 true。 此函式支援所有 JSON 資料類型。

下列範例會傳回 true

"[equals(0, 0)]"

下列範例會傳回 true

"[equals('web', 'web')]"

下列範例會傳回 false

"[equals('abc', ['a', 'b', 'c'])]"

greater

如果第一個參數大於第二個參數,則傳回 true。 此函式只支援數值和字串類型的參數。

下列範例會傳回 false

"[greater(1, 2)]"

下列範例會傳回 true

"[greater('9', '10')]"

greaterOrEquals

如果第一個參數大於或等於第二個參數,則傳回 true。 此函式只支援數值和字串類型的參數。

下列範例會傳回 true

"[greaterOrEquals(2, 2)]"

if

根據條件是 true 或 false 傳回值。 第一個參數是要測試的條件。 第二個參數是如果條件為 true 時要傳回的值。 第三個參數是如果條件為 false 時要傳回的值。

下列範例會傳回 yes

"[if(equals(42, mul(6, 7)), 'yes', 'no')]"

less

如果第一個參數小於第二個參數,則傳回 true。 此函式只支援數值和字串類型的參數。

下列範例會傳回 true

"[less(1, 2)]"

下列範例會傳回 false

"[less('9', '10')]"

lessOrEquals

如果第一個參數小於或等於第二個參數,則傳回 true。 此函式只支援數值和字串類型的參數。

下列範例會傳回 true

"[lessOrEquals(2, 2)]"

not

如果參數評估為 false,則傳回 true。 此函式只支援布林值類型的參數。

下列範例會傳回 true

"[not(false)]"

下列範例會傳回 false

"[not(equals(0, 0))]"

如果至少一個參數評估為 true,則傳回 true。 此函式只支援布林值類型的兩個或多個參數。

下列範例會傳回 true

"[or(equals(0, 0), equals('web', 'web'), less(1, 2))]"

下列範例會傳回 true

"[or(equals(0, 0), greater(1, 2))]"

下一步