Поделиться через


Создание переменных для хранения значений и управления ими в Azure Logic Apps

Область применения: Azure Logic Apps (Потребление + Стандартный)

В этом практическом руководстве показано, как создавать переменные и работать с ним, чтобы можно было хранить и использовать значения в рабочем процессе приложения логики. Например, с помощью переменных можно отслеживать количество запусков цикла. Чтобы выполнить итерацию массива или поиск определенного значения, можно использовать переменную, чтобы ссылаться на каждый элемент массива по номеру индекса.

Вы можете создавать переменные для таких типов данных, как целые числа, числа с плавающей точкой, логические значения, строки, массивы и объекты. После создания переменной можно выполнять другие задачи, например:

  • получить значение переменной или сослаться на него;
  • увеличить или уменьшить переменную на фиксированное значение, также называемое инкрементом или декрементом;
  • назначить переменной другое значение;
  • вставить или добавить значение переменной в конце строки или массива.

Переменные существуют и являются глобальными только в экземпляре рабочего процесса, который их создает. Кроме того, они сохраняются во всех итерациях цикла внутри экземпляра рабочего процесса. Ссылаясь на переменную, используйте имя переменной в качестве токена, а не имени действия, что является обычным способом ссылки на выходные данные действия.

Важно!

По умолчанию итерации в цикле For each выполняются параллельно. При использовании переменных в циклах запустите цикл последовательно, чтобы переменные вернули предсказуемые результаты.

Предварительные требования

В следующих шагах используется портал Azure, но с соответствующим расширением Azure Logic Apps можно также использовать следующие средства для создания рабочих процессов приложения логики:

В зависимости от того, есть ли у вас рабочий процесс "Потребление" или "Стандартный", выполните соответствующие действия.

Инициализация переменной

Вы можете создать переменную и объявить ее тип данных и начальное значение с помощью одного действия в рабочем процессе. Объявлять переменные можно только на глобальном уровне, а не в областях, условиях и циклах.

  1. В портал Azure откройте рабочий процесс в конструкторе.

  2. В конструкторе выполните следующие общие действия, чтобы добавить действие с именем Инициализировать переменную.

  3. Укажите следующие сведения о переменной:

    Свойство Обязательно Значение Описание
    имя; Да <variable-name> Имя переменной
    Тип Да <variable-type> Тип данных для переменной
    Значение Нет <start-value> Начальное значение для переменной

    Совет. Хотя это необязательно, задайте значение в качестве рекомендации, чтобы вы всегда знали начальное значение переменной.

    В следующем примере показаны начальные значения для этого примера переменной:

    Снимок экрана: портал Azure, рабочий процесс потребителя и действие с именем Инициализировать переменную.

  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": {}
   }
},

Переменная float

"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. Укажите следующие сведения для этого действия:

    Свойство Обязательно Значение Описание
    имя; Да <variable-name> Имя переменной
    Значение Нет <increment-value> Значение, используемое для увеличения переменной. Значение по умолчанию — 1.

    Совет. Хотя это значение является необязательным, рекомендуется задать это значение, чтобы вы всегда знали конкретное значение для увеличения переменной.

    В следующем примере показаны примеры значений для этого действия:

    Снимок экрана: портал Azure, рабочий процесс потребления и действие с именем Переменная приращения.

  3. Закончив работу, сохраните свой рабочий процесс. На панели инструментов конструктора щелкните Сохранить.

При переключении с конструктора на представление кода в следующем примере показано, как действие переменной приращения отображается в определении рабочего процесса в формате JSON:

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

Пример: создание счетчика циклов

Переменные часто используются для подсчета повторений циклов. В этом примере показано, как создать и использовать переменные для этой задачи, создав цикл, который подсчитывает вложения в сообщении электронной почты.

  1. В портал Azure создайте ресурс приложения логики "Потребление" с пустым рабочим процессом. Добавьте триггер, проверяющий наличие новых электронных сообщений и вложений.

    В этом примере используется триггер Outlook из Office 365 для события Когда приходит новое электронное письмо. Этот триггер можно настроить так, чтобы он срабатывал только при наличии вложений. Однако вы можете использовать любой соединитель, проверяющий наличие новых сообщений с вложениями, например соединитель Outlook.com.

  2. В триггере, чтобы проверка вложений и передать их в рабочий процесс, выберите Да для следующих свойств:

    • Только с вложением
    • Включить вложения

    Снимок экрана: портал Azure, рабочий процесс потребления и свойства, выбранные для проверка и включения вложений.

  3. Добавьте действие Инициализировать переменную, чтобы создать целочисленную переменную с именем Count, начальное значение которого имеет значение 0.

  4. Чтобы выполнить итерацию по каждому вложению, выполните следующие общие действия, чтобы добавить действие с именем цикл For each.

  5. В цикле выберите внутри поля Выберите выходные данные из предыдущих шагов. Когда появится список динамического содержимого, в разделе Когда приходит новое сообщение электронной почты, выберите Вложения.

    Снимок экрана: рабочий процесс

    Свойство Attachments передает массив, содержащий вложения электронной почты из выходных данных триггера, в цикл для итерации рабочего процесса.

  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" ]
      }
   }
},

Переменная декремента

Чтобы уменьшить или уменьшить переменную на определенное константное значение, выполните действия по приращению переменной , за исключением того, что вместо этого в рабочий процесс добавляется действие Декремент переменной . Это действие работает только с целочисленными и дробными переменными.

В следующей таблице описаны сведения о действии переменной декремента .

Свойство Обязательно Значение Описание
имя; Да <variable-name> Имя уменьшаемой переменной
Значение Нет <increment-value> Значение для уменьшения переменной. Значение по умолчанию — единица.

Совет. Указывать это значение необязательно, но рекомендуем сделать это, чтобы всегда знать конкретное значение, на которое уменьшается переменная.

При переключении с конструктора на представление кода в следующем примере показано, как действие переменной Decrement отображается в определении рабочего процесса в формате JSON:

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

Установка значения переменной

Чтобы присвоить существующую переменную другое значение, выполните действия по приращению переменной со следующими исключениями:

  1. Вместо этого найдите и выберите действие Задать переменную.

  2. укажите имя переменной и нужное значение. Типы данных нового значения и переменной должны совпадать. Указывать значение обязательно, так как у этого действия нет значения по умолчанию.

В следующей таблице описаны сведения о действии Задать переменную .

Свойство Обязательно Значение Описание
имя; Да <variable-name> Имя изменяемой переменной
Значение Да <new-value> Значение, которое требуется назначить переменной. Их типы данных должны совпадать.

Примечание

Если вы не увеличиваете и не уменьшаете переменные, то изменение переменных в циклах может привести к неожиданным результатам, так как по умолчанию циклы выполняются параллельно. В таких случаях попробуйте включить последовательное выполнение циклов. Например, если вы хотите сослаться на значение переменной внутри цикла, а в начале и конце этого цикла ожидаются одинаковые значения, выполните следующие действия, чтобы изменить принцип работы цикла:

  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. Укажите значение для добавления в качестве последнего элемента строки или массива. Это значение обязательно.

В следующей таблице описаны сведения для действий Добавления в... .

Свойство Обязательно Значение Описание
имя; Да <variable-name> Имя изменяемой переменной
Значение Да <append-value> Значение, которое требуется добавить. Оно может относиться к любому типу.

При переключении с конструктора на представление кода в следующем примере показано, как действие Добавить в переменную массива отображается в определении рабочего процесса в формате 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" ]
      }
   }
},

Дальнейшие действия