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


Создание и присоединение параллельных ветвей с действиями рабочего процесса в Azure Logic Apps

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

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

В этом руководстве показано, как создать параллельные ветви в рабочем процессе и повторно присоединиться к этим ветвям, как показано на этой высокоуровневой схеме:

Screenshot shows high-level conceptual diagram with parallel branches that later join in workflow.

Совет

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

Необходимые компоненты

Рекомендации по работе с параллельными ветвями

  • Параллельная ветвь выполняется только в том случае, если значение свойства runAfter соответствует завершенным состоянием родительского действия. Например, обе ветви, начиная с branchAction1 и branchAction2, выполняются только после завершения parentAction с состоянием Succeeded.

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

Добавление действия параллельной ветви

  1. В портал Azure откройте приложение логики "Стандартный" и рабочий процесс в конструкторе.

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

  3. Выберите знак плюса (+), который появится, и нажмите кнопку "Добавить параллельную ветвь".

    Screenshot shows Standard workflow with selected plus sign and selected option, Add a parallel branch.

  4. Теперь добавьте действие, которое необходимо выполнить в параллельной ветви. В области действий и поле поиска найдите и выберите нужное действие.

    Screenshot shows Standard workflow with search box named Choose an operation.

    Выбранное действие теперь отображается в параллельной ветви, например:

    Screenshot shows Standard workflow, parallel branch, and previously selected action.

  5. Чтобы добавить другое действие в параллельную ветвь, в действии, в котором нужно добавить новое действие, выберите знак плюса (+) и нажмите кнопку "Добавить действие".

    Screenshot shows Standard workflow and how to add another action to the same parallel branch.

  6. В поле "Выбор операции" найдите и выберите нужное действие.

    Теперь выбранное действие отображается в текущей ветви, как показано ниже:

    Screenshot shows Standard workflow with added sequential action.

Для выполнения обратного слияния ветвей соедините параллельные ветви.

Определение параллельной ветви (JSON)

Если вы работаете в представлении кода, можно определить параллельную структуру в определении JSON рабочего процесса приложения логики, например:

{
  "triggers": {
    "myTrigger": {}
  },
  "actions": {
    "parentAction": {
      "type": "<action-type>",
      "inputs": {},
      "runAfter": {}
    },
    "branchAction1": {
      "type": "<action-type>",
      "inputs": {},
      "runAfter": {
        "parentAction": [
          "Succeeded"
        ]
      }
    },
    "branchAction2": {
      "type": "<action-type>",
      "inputs": {},
      "runAfter": {
        "parentAction": [
          "Succeeded"
        ]
      }
    }
  },
  "outputs": {}
}

Соединение параллельных ветвей

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

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

  2. В любой из параллельных ветвей, которые вы хотите присоединить, выберите знак плюса (+), а затем нажмите кнопку "Добавить действие".

    Screenshot shows Standard workflow with selected plus sign.

  3. В области действий и поле поиска найдите и выберите действие, которое вы хотите использовать для присоединения к ветвям.

    Screenshot shows Standard workflow, search box named Choose an operation, and available actions for joining parallel branches.

  4. В конструкторе выберите ранее добавленное действие. После открытия области сведений о действии выберите Параметры.

  5. В области Параметры в разделе "Запуск после" откройте список "Выбор действий" и выберите последнее действие в каждой ветви, которая должна завершиться до запуска действия соединения.

    Вы фактически указываете, что действие соединения выполняется только после завершения выполнения всех выбранных действий.

    Screenshot shows Standard workflow, the action that joins preceding parallel branches, and selected actions to first finish running.

    После завершения выбранное действие теперь отображается в параллельных ветвях, которые вы хотите присоединить, например:

    Screenshot shows Standard workflow with the action that joins the preceding parallel branches.

Определение соединения (JSON)

Если вы работаете в представлении кода, можно определить действие соединения в определении JSON рабочего процесса приложения логики, например:

{
  "triggers": {
    "myTrigger": { }
  },
  "actions": {
    "parentAction": {
      "type": "<action-type>",
      "inputs": { },
      "runAfter": {}
    },
    "branchAction1": {
      "type": "<action-type>",
      "inputs": { },
      "runAfter": {
        "parentAction": [
          "Succeeded"
        ]
      }
    },
    "branchAction2": {
      "type": "<action-type>",
      "inputs": { },
      "runAfter": {
        "parentAction": [
          "Succeeded"
        ]
      }
    },
    "joinAction": {
      "type": "<action-type>",
      "inputs": { },
      "runAfter": {
        "branchAction1": [
          "Succeeded"
        ],
        "branchAction2": [
          "Succeeded"
        ]
      }
    }
  },
  "outputs": {}
}

Следующие шаги