共用方式為


建立變數以在 Azure Logic Apps 中儲存和管理值

適用於:Azure Logic Apps (使用量 + 標準)

本操作指南示範如何建立和使用變數,以便您可以在邏輯應用程式工作流程中儲存和使用值。 例如,變數可協助您追蹤迴圈的執行次數。 逐一查看某個陣列或檢查陣列中是否有特定項目時,您可以使用變數來參考每個陣列項目的索引編號。

您可以為資料類型 (例如整數、浮點數、布林函數、字串、數列和物件) 建立變數。 建立變數之後,您可以執行其他工作,例如:

  • 取得或參考變數值。
  • 以常數值 (也稱為遞增量和遞減量) 來增大減小變數。
  • 指派不同的值給變數。
  • 將變數值插入或附加做為字串或陣列中的最後一個項目。

變數只存在於建立它們的工作流程執行個體內,並且是全域性。 此外,它們只會在工作流程執行個體內跨任何迴圈反覆運算存留。 當您參考變數,請使用變數的名稱作為標記,而非動作的名稱,這是參考動作輸出的常用方法。

重要

依預設,For each 迴圈中的反覆運算會平行執行。 當您在迴圈中使用變數時,請循序執行迴圈,如此變數才會傳回可預測的結果。

必要條件

  • Azure 帳戶和訂用帳戶。 如果您沒有訂用帳戶,請註冊一個免費的 Azure 帳戶

  • 您想要在其中建立變數的邏輯應用程式工作流程,以及啟動工作流程的觸發程序。

    您必須從使用觸發程序作為工作流程的第一個步驟開始,才能新增建立和使用變數的動作。 如需詳細資訊,請參閱使用觸發程序或動作建立工作流程

下列步驟使用 Azure 入口網站,但搭配適當的 Azure Logic Apps 擴充功能,您也可以使用下列工具來建置邏輯應用程式工作流程:

根據您是否有使用量或標準工作流程,遵循對應的步驟:

將變數初始化

您可以在工作流程中使用單一動作,來建立變數並宣告其資料類型和初始值。 您只能在全域級別上聲明變數,而不能在範圍、條件和循環內聲明變數。

  1. Azure 入口網站中,於設計工具中開啟您的工作流程。

  2. 在設計工具中,遵循這些一般步驟,新增名為初始化變數的動作

  3. 提供有關變數的下列資訊:

    屬性 必填 描述
    名稱 <變數名稱> 要增量的變量名稱
    類型 .是 <變數類型> 變數的資料類型
    <起始值> 您的變數初始值

    提示:雖然此值為選用,但最佳做法是設定該值,如此您便一律知道變數的起始值。

    下列範例顯示此範例變數的初始值:

    此螢幕快照顯示 Azure 入口網站、取用者工作流程,以及名為 Initialize 變數的動作。

  4. 現在,繼續新增您案例所需的動作。 當完成設計師工具列時,請選取儲存

如果是從設計工具切換到程式碼檢視,下列範例會顯示初始化變數動作如何在工作流程定義中顯示,其為 JavaScript 物件標記法 (JSON) 格式:

"actions": {
   "Initialize_variable": {
      "type": "InitializeVariable",
      "inputs": {
         "variables": [ 
            {
               "name": "Count",
               "type": "Integer",
               "value": 0
            }
         ]
      },
      "runAfter": {}
   }
},

注意

雖然初始化變數動作具有結構化為陣列的 "variables" 物件,但動作一次只能建立一個變數。 每個新變數都需要一個單獨的初始化變數動作。

下列範例顯示其他變數類型:

布林值變數

"actions": {
   "Initialize_variable": {
      "type": "InitializeVariable",
      "inputs": {
         "variables": [
            {
               "name": "myBooleanVariable",
               "type": "boolean",
               "value": false
            }
         ]
      },
      "runAfter": {}
   }
},

浮點數變數

"actions": {
   "Initialize_variable": {
      "type": "InitializeVariable",
      "inputs": {
         "variables": [
            {
               "name": "myFloatVariable",
               "type": "float",
               "value": 1.99999
            }
         ]
      },
      "runAfter": {}
   }
},

字串變數

"actions": {
   "Initialize_variable": {
      "type": "InitializeVariable",
      "inputs": {
         "variables": [
            {
               "name": "myStringVariable",
               "type": "string",
               "value": "lorem ipsum"
            }
         ]
      },
      "runAfter": {}
   }
},

物件變數

"actions": {
   "Initialize_variable": {
      "type": "InitializeVariable",
      "inputs": {
         "variables": [
            {
               "name": "MyObjectVariable",
               "type": "object",
               "value": {
                  "ProductItem": {
                     "Name": "myProductName",
                     "ProductID": "000000"
                  }
               }
            }
         ]
      },
      "runAfter": {}
   }
},

整數陣列

"actions": {
   "Initialize_variable": {
      "type": "InitializeVariable",
      "inputs": {
         "variables": [
            {
               "name": "myArrayVariable",
               "type": "array",
               "value": [1, 2, 3]
            }
         ]
      },
      "runAfter": {}
   }
},

字串陣列

"actions": {
   "Initialize_variable": {
      "type": "InitializeVariable",
      "inputs": {
         "variables": [
            {
               "name": "myArrayVariable",
               "type": "array",
               "value": ["red", "orange", "yellow"]
            }
         ]
      },
      "runAfter": {}
   }
},

取得變數的值

若要擷取或參考變數的內容,您也可以在工作流程設計工具和程式碼檢視編輯器中使用 variables() 函式。 當您參考變數,請使用變數的名稱作為標記,而非動作的名稱,這是參考動作輸出的常用方法。

例如,下列運算式會使用 variables() 函式,從本指南中建立的陣列變數取得項目。 string() 函數一律會以字串形式傳回具類型的值:"1, 2, 3, red"

@{string(variables('myArrayVariable'))}

增量變數

若要以特定常數值將變數增加或遞增,請將 [遞增變數] 動作新增至工作流程。 此動作僅適用於整數和浮點數變數。

  1. 在工作流程設計工具中,遵循這些一般步驟,新增名為 [遞增變數] 的動作

  2. 針對此動作提供下列資訊:

    屬性 必填 描述
    名稱 <變數名稱> 要增量的變量名稱
    <遞增值> 用於增量變數名稱的數值。 預設值是 1

    提示:雖然此值為選擇性,但最佳做法是設定此值,如此您便一律知道用來遞增變數的特定值。

    下列範例會顯示此動作的範例值:

    此螢幕快照顯示名為 Increment 變數 Azure 入口網站、取用工作流程和動作。

  3. 完成後,請儲存您的工作流程。 在設計師工具列上選取儲存

如果是從設計工具切換到程式碼檢視,下列範例會顯示 [遞增變數] 動作如何在工作流程定義中顯示,其為 JSON 格式:

"actions": {
   "Increment_variable": {
      "type": "IncrementVariable",
      "inputs": {
         "name": "Count",
         "value": 1
      },
      "runAfter": {}
   }
},

範例:建立迴圈計數器

變數通常用於計算迴圈執行的次數。 此範例藉由建立一個會計算電子郵件中附件的迴圈,說明如何建立及使用變數來進行此工作。

  1. 在 Azure 入口網站中,使用空白工作流程建立使用量邏輯應用程式資源。 加入觸發程式檢查新電子郵件和任何附件。

    此範例當新電子郵件送達時,會使用 Office 365 Outlook 觸發程式。 您可以將此觸發程式設置為僅在電子郵件包含附件時觸發。 但是,您可以使用任何連接器來檢查帶有附件的新電子郵件,例如 Outlook.com 連接器。

  2. 若要讓觸發程序檢查是否有附件,並將這些附件傳遞至工作流程,請針對下列屬性選取 [是]

    • 僅含附件
    • 包含附件

    此螢幕快照顯示已選取要檢查並包含附件的 Azure 入口網站、取用工作流程和屬性。

  3. 新增初始化變數動作,以建立名為 Count 的整數變數,其起始值設定為 0

  4. 若要逐一查看每個附件,請遵循這些一般步驟,新增名為 For each 迴圈的動作

  5. 在迴圈中,選取名為 [選取先前步驟中的輸出] 的方塊內部。 動態內容清單出現之後,於 [收到新的電子郵件時] 底下,選取 [附件]

    此螢幕快照顯示 [取用工作流程]、[針對每個迴圈]、開啟的動態內容清單,以及選取的 [附件] 輸出。

    [附件] 屬性會將包含電子郵件附件的陣列從觸發程序的輸出傳遞至迴圈,讓工作流程逐一查看。

  6. 在 [For each] 迴圈中,選取 [新增動作]

  7. 遵循這些一般步驟,將名為遞增變數的動作新增至迴圈

    注意

    請確定 [遞增變數] 動作出現在迴圈內。 如果此動作出現在迴圈外,請將此動作拖曳到迴圈中。

  8. 增量變數動作中,從名稱清單,選擇計數變數。 將 Value 屬性設定為 1

    此螢幕快照顯示 [取用] 工作流程,其中包含名為 Count 的選取變數。

  9. 在迴圈下,新增任何向您發送附件數量的動作。 在您的動作中,包括計數變數中的值,例如:

    此螢幕快照顯示取用工作流程和傳送結果的動作。

  10. 完成後,請儲存您的工作流程。 在設計師工具列上選取儲存

測試工作流程

  1. 若要手動觸發工作流程,請遵循對應的步驟:

    使用量工作流程

    在設計工具工作流程工具列上,選取 [執行觸發程序] > [執行] 以手動執行工作流程。

    標準工作流程

    在工作流程功能表上,選取 [概觀]。 在工具列上,選取 [執行] > [重新整理]

  2. 將一封含有一或多個附件的電子郵件傳送給您在此範例中使用的電子郵件帳戶。

    此步驟會引發工作流程觸發程序,其會建立和執行工作流程執行個體。 因此,工作流程會傳送訊息或電子郵件給您,當中顯示您所傳送電子郵件中的附件數目。

如果是從設計工具切換到程式碼檢視,下列範例會顯示 For each 迴圈如何隨著 [遞增變數] 動作在工作流程定義中顯示,其為 JSON 格式:

"actions": {
   "For_each": {
      "type": "Foreach",
      "actions": {
         "Increment_variable": {
           "type": "IncrementVariable",
            "inputs": {
               "name": "Count",
               "value": 1
            },
            "runAfter": {}
         }
      },
      "foreach": "@triggerBody()?['Attachments']",
      "runAfter": {
         "Initialize_variable": [ "Succeeded" ]
      }
   }
},

增量變數

若要依特定常數值減少或遞減變數,請遵循遞增變數的步驟,不同之處在於您會改為將 [遞增變數] 動作新增至工作流程。 此動作僅適用於整數和浮點數變數。

下表描述遞減變數動作的資訊:

屬性 必填 描述
名稱 <變數名稱> 要減量的變量名稱
<遞增值> 用於減量變數的數值。 預設值為一。

提示:雖然可選,但最好將此值設定為最佳做法,以便您隨時知道減量變數的特定值。

如果是從設計工具切換到程式碼檢視,下列範例會顯示 [遞減變數] 動作如何在工作流程定義中顯示,其為 JSON 格式:

"actions": {
   "Decrement_variable": {
      "type": "DecrementVariable",
      "inputs": {
         "name": "Count",
         "value": 1
      },
      "runAfter": {}
   }
},

設定變數

若要將不同的值指派給現有的變數,請遵循遞增變數的步驟,但有下列例外:

  1. 找到並選擇設定變數動作。

  2. 提供您要分配的變數名稱和數值。 新值和變數都必須具有相同的資料類型。 該值是必要的,因為此動作沒有預設值。

下表描述設定變數動作的資訊:

屬性 必填 描述
名稱 <變數名稱> 要變更的變量名稱
<新值> 您想指派給變數的值。 必須同時具有相同的資料類型。

注意

除非您是要將變數增大或減小,否則變更迴圈內的變數「可能」會造成非預期的結果,因為迴圈預設會以平行方式或並行方式執行。 針對這些情況,請嘗試將迴圈設定成以循序方式執行。 例如,當您想要參考迴圈內的變數值,並預期該迴圈執行個體的開始值和結束值相同時,請依照下列步驟來變更迴圈的執行方式:

  1. 在您的迴圈上,尋找並開啟迴圈設定。

  2. 根據您的工作流程類型,遵循對應的步驟:

    • 使用量:將 [並行控制] 設定從 [關閉] 變更為 [開啟]

    • 標準:在 [一般] 下,將 [並行控制] 設定從 [關閉] 變更為 [開啟]

  3. 將 [平行處理原則的程度] 滑桿拖曳至 [1]

如果是從設計工具切換到程式碼檢視,下列範例會顯示 [設定變數] 動作如何在工作流程定義中顯示,其為 JSON 格式:

下列範例會將 Count 變數目前的值變更為另一個值:

"actions": {
   "Initialize_variable": {
      "type": "InitializeVariable",
      "inputs": {
         "variables": [ {
               "name": "Count",
               "type": "Integer",
               "value": 0
          } ]
      },
      "runAfter": {}
   },
   "Set_variable": {
      "type": "SetVariable",
      "inputs": {
         "name": "Count",
         "value": 100
      },
      "runAfter": {
         "Initialize_variable": [ "Succeeded" ]
      }
   }
},

隨附變數

對於儲存字符串或數列的變數,您可以將變數的值插入或追加,作為這些字串或數列中的最後一項。 您可以遵循遞增變數的步驟,但有下列例外:

  1. 視您的變數是字串還是陣列而定,尋找並選取下列其中一個動作:

    • 隨附字串變數
    • 追加數列變數
  2. 提供數值追加字串或數列中的最後一個項目。 數值是必要項。

下表描述 [附加至...] 動作的資訊:

屬性 必填 描述
名稱 <變數名稱> 要變更的變量名稱
<附加值> 您無法將您想要追加的數值設為類型

如果是從設計工具切換到程式碼檢視,下列範例會顯示 [附加至陣列變數] 動作如何在工作流程定義中顯示,其為 JSON 格式。

下列範例會建立一個陣列變數,然後將另一個值新增為陣列中的最後一個項目。 結果會是一個含有下列陣列的已更新變數:[1,2,3,"red"]

"actions": {
   "Initialize_variable": {
      "type": "InitializeVariable",
      "inputs": {
         "variables": [ {
            "name": "myArrayVariable",
            "type": "Array",
            "value": [1, 2, 3]
         } ]
      },
      "runAfter": {}
   },
   "Append_to_array_variable": {
      "type": "AppendToArrayVariable",
      "inputs": {
         "name": "myArrayVariable",
         "value": "red"
      },
      "runAfter": {
        "Initialize_variable": [ "Succeeded" ]
      }
   }
},

下一步