Обмен сообщениями B2B между партнерами с помощью рабочих процессов в Azure Logic Apps

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

Если у вас есть учетная запись интеграции, которая определяет торговых партнеров и соглашения, вы можете создать автоматизированный рабочий процесс “бизнес-бизнес” (B2B), который обеспечивает обмен сообщениями между торговыми партнерами с помощью Azure Logic Apps. Рабочий процесс может использовать соединители, поддерживающие стандартные отраслевые протоколы, такие как AS2, X12, EDIFACT и RosettaNet. Вы также можете включить операции, предоставляемые другими соединителями в Azure Logic Apps, такие как Office 365 Outlook, SQL Server и Salesforce.

В этой статье показано, как создать рабочий процесс примера приложения логики, которое получает HTTP-запрос с помощью триггера запроса, декодирует содержимое сообщения посредством действий Декодирование AS2 и Декодирование X12, а затем возвращает ответ, используя действие ответа. В этом примере используется конструктор рабочего процесса на портале Azure, но вы можете выполнить аналогичные действия в конструкторе рабочего процесса в Visual Studio.

Если вы не знакомы с приложениями логики, ознакомьтесь со статьей Что такое Azure Logic Apps? Дополнительные сведения о корпоративной интеграции B2B см. в статье Рабочие процессы интеграции корпоративного уровня B2B с использованием Azure Logic Apps.

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

  • Учетная запись и подписка Azure. Если у вас пока нет подписки, зарегистрируйте учетную запись Azure бесплатно.

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

    • Связан с той же подпиской Azure, что и ресурс приложения логики.

    • Находится в том же расположении или регионе Azure, что и ресурс приложения логики.

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

    • Если вы используете тип ресурса Приложение логики (стандартный), учетной записи интеграции не требуется ссылка на ресурс приложения логики, но по-прежнему требуется хранить другие артефакты, такие как партнеры, соглашения и сертификаты, с использованием операций AS2, X12 или EDIFACT. Учетная запись интеграции по-прежнему должна соответствовать другим требованиям, таким как использование той же подписки Azure и нахождение в том же расположении, что и ресурс приложения логики.

    Примечание

    В настоящее время операции RosettaNet поддерживаются только типом ресурсов Приложение логики (потребление). Тип ресурса Приложение логики (стандартный) не включает операции RosettaNet.

  • По крайней мере два торговых партнера в учетной записи интеграции. Определения обоих партнеров должны использовать один и тот же квалификатор бизнес-идентификации: AS2, X12, EDIFACT или RosettaNet.

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

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

Добавление триггера "Запрос"

Чтобы запустить рабочий процесс в этом примере, добавьте триггер запроса.

  1. Откройте ресурс приложения логики и пустой рабочий процесс в конструкторе рабочих процессов на портале Azure.

  2. В поле поиска конструктора выберите Все, если еще не выбрано. В поле поиска введите when a http request. Выберите триггер запроса с именем При получении HTTP-запроса.

    Снимок экрана: на портале Azure открыт конструктор для мультитенантного приложения, где в поле поиска введена строка

  3. В триггере оставьте пустым поле Схема JSON текста запроса.

    Причина заключается в том, что триггер получит сообщение X12 в формате неструктурированного файла.

    Снимок экрана: в конструкторе для мультитенантного приложения отображаются свойства триггера

  4. По завершении нажмите кнопку Сохранить на панели инструментов конструктора.

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

    Снимок экрана: в конструкторе для мультитенантного приложения отображается URL-адрес, созданный для триггера

  5. Скопируйте и сохраните URL-адрес для последующего использования.

Добавление действия декодирования AS2

Теперь добавьте действия B2B для этого примера, в котором используются действия AS2 и X12.

  1. В разделе триггера щелкните Добавить шаг.

    Совет

    Чтобы скрыть сведения о триггере запроса, нажмите заголовок окна триггера.

    Снимок экрана: в конструкторе для мультитенантного приложения выбран триггер

  2. Под полем поиска Выберите операцию выберите вкладку Все, если еще не выбрано. В поле поиска введите as2 и выберите Декодирование AS2.

    Снимок экрана: в конструкторе для мультитенантного приложения выбрано действие

  3. Для свойства действия Сообщение для декодирования введите входные данные, которые должно декодировать действие AS2. Это выходные данные body из триггера запроса. Есть несколько способов, позволяющих указать это содержимое в качестве входных данных действия: выбор из списка динамического содержимого или в виде выражения:

    • Чтобы выбрать из списка, в котором отображаются доступные выходные данные триггера, щелкните внутри поля Сообщение для декодирования. Когда появится список динамического содержимого, в разделе При получении HTTP-запроса выберите значение свойства Текст, например:

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

      Совет

      Если выходные данные триггера не отображаются, в списке динамических свойств в разделе При получении HTTP-запроса выберите пункт Дополнительные сведения.

    • Чтобы ввести выражение, которое ссылается на выходные данные body триггера, щелкните внутри поля Сообщение для декодирования. Когда появится список динамического содержимого, выберите Выражение. В редакторе выражений введите следующее выражение и нажмите кнопку ОК:

      triggerOutputs()['body']

      Или введите следующее выражение прямо в поле Сообщение для декодирования:

      @triggerBody()

      Выражение разрешается в маркер Текст.

      Снимок экрана: в конструкторе для мультитенантного приложения отображаются выходные данные декодирования свойства

  4. В свойстве действия Заголовки сообщения введите все заголовки, необходимые для действия AS2, которые находятся в выходных данных headers триггера запроса.

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

      Снимок экрана: в конструкторе для мультитенантного приложения выбран параметр

    2. Щелкните внутри поля Заголовки сообщений. Когда появится список динамического содержимого, выберите Выражение. В редакторе выражений введите следующее выражение и нажмите кнопку ОК:

      triggerOutputs()['Headers']

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

      Снимок экрана: в конструкторе для мультитенантного приложения отображается блок

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

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

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

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

  1. В действии Декодирование AS2 выберите Новый шаг.

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

    Снимок экрана: в конструкторе для мультитенантного приложения отображается действие

    Теперь отображается фигура условия, в том числе пути, определяющие, что делать, если условие выполняется.

    Снимок экрана: в конструкторе для мультитенантного приложения отображается фигура условия с пустыми путями.

  3. Теперь укажите условие для вычисления. Введите следующее выражение в поле Выберите значение:

    @body('AS2_Decode')?['AS2Message']?['MdnExpected']

    В среднем поле убедитесь, что для операции сравнения задано значение is equal to. В поле справа введите значение Expected.

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

    Снимок экрана: в конструкторе для мультитенантного приложения отображается фигура условия с одной операцией.

  5. Теперь укажите ответы, которые будут возвращаться в случае успеха или сбоя действия Декодирование AS2.

    1. Если действие Декодирование AS2 будет выполнено успешно, в фигуре Истина выберите Добавить действие. В поле поиска Выберите операцию введите response и выберите Ответ.

      Снимок экрана: в конструкторе для мультитенантного приложения отображается действие

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

      • В свойстве Заголовки действия Ответ укажите следующее выражение:

        @body('AS2_Decode')?['OutgoingMdn']?['OutboundHeaders']

      • В свойстве Текст действия Ответ укажите следующее выражение:

        @body('AS2_Decode')?['OutgoingMdn']?['Content']

    3. Чтобы получить выражения, разрешаемые в качестве маркеров, переключитесь между конструктором и представлением кода.

      Снимок экрана: в конструкторе для мультитенантного приложения отображается декодированное выражение для доступа к AS2 MDN.

    4. Если действие Декодирование AS2 завершится сбоем, в фигуре Ложь выберите Добавить действие. В поле поиска Выберите операцию введите response и выберите Ответ. Настройте действие Ответ, чтобы оно возвращало требуемое состояние и ошибку.

  6. Сохраните рабочий процесс приложения логики.

Добавление действия декодирования сообщения X12

Теперь добавьте действие Декодирование сообщения X12.

  1. В разделе действия Ответ выберите Добавить действие.

  2. В разделе Выберите операцию в поле поиска введите x12 decode и выберите Декодирование сообщения X12.

    Снимок экрана: в конструкторе для мультитенантного приложения выбрано действие

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

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

  4. Теперь укажите входные данные для действия X12. В этом примере используются выходные данные действия AS2, которые являются содержимым сообщения, но обратите внимание, что это содержимое имеет формат объекта JSON и применяет кодировку Base64. Поэтому необходимо преобразовать это содержимое в строку.

    В поле Сообщение X12 в виде неструктурированного файла для декодирования введите это выражение, чтобы преобразовать выходные данные AS2:

    @base64ToString(body('AS2_Decode')?['AS2Message']?['Content'])

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

    Снимок экрана: в конструкторе для мультитенантного приложения отображается конвертация содержимого из формата base64 в строковый формат.

  6. Сохраните рабочий процесс приложения логики.

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

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

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

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