Обмен сообщениями 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 для партнеров, которых вы используете в этом рабочем процессе. Для каждого соглашения нужно указать главного партнера и гостевого партнера.
Ресурс приложения логики с пустым рабочим процессом, в который можно добавить триггер запроса, а затем выполнить следующие действия:
Добавление триггера "Запрос"
Чтобы запустить рабочий процесс в этом примере, добавьте триггер запроса.
Откройте ресурс приложения логики и пустой рабочий процесс в конструкторе рабочих процессов на портале Azure.
В поле поиска конструктора выберите Все, если еще не выбрано. В поле поиска введите
when a http request
. Выберите триггер запроса с именем При получении HTTP-запроса.В триггере оставьте пустым поле Схема JSON текста запроса.
Причина заключается в том, что триггер получит сообщение X12 в формате неструктурированного файла.
По завершении нажмите кнопку Сохранить на панели инструментов конструктора.
На этом шаге создается URL-адрес HTTP POST, который позже используется для отправки запроса, запускающего рабочий процесс приложения логики.
Скопируйте и сохраните URL-адрес для последующего использования.
Добавление действия декодирования AS2
Теперь добавьте действия B2B для этого примера, в котором используются действия AS2 и X12.
В разделе триггера щелкните Добавить шаг.
Совет
Чтобы скрыть сведения о триггере запроса, нажмите заголовок окна триггера.
Под полем поиска Выберите операцию выберите вкладку Все, если еще не выбрано. В поле поиска введите
as2
и выберите Декодирование AS2.Для свойства действия Сообщение для декодирования введите входные данные, которые должно декодировать действие AS2. Это выходные данные
body
из триггера запроса. Есть несколько способов, позволяющих указать это содержимое в качестве входных данных действия: выбор из списка динамического содержимого или в виде выражения:Чтобы выбрать из списка, в котором отображаются доступные выходные данные триггера, щелкните внутри поля Сообщение для декодирования. Когда появится список динамического содержимого, в разделе При получении HTTP-запроса выберите значение свойства Текст, например:
Совет
Если выходные данные триггера не отображаются, в списке динамических свойств в разделе При получении HTTP-запроса выберите пункт Дополнительные сведения.
Чтобы ввести выражение, которое ссылается на выходные данные
body
триггера, щелкните внутри поля Сообщение для декодирования. Когда появится список динамического содержимого, выберите Выражение. В редакторе выражений введите следующее выражение и нажмите кнопку ОК:triggerOutputs()['body']
Или введите следующее выражение прямо в поле Сообщение для декодирования:
@triggerBody()
Выражение разрешается в маркер Текст.
В свойстве действия Заголовки сообщения введите все заголовки, необходимые для действия AS2, которые находятся в выходных данных
headers
триггера запроса.Чтобы ввести выражение, которое ссылается на выходные данные
headers
триггера, выберите параметр Переключить заголовки сообщений в текстовый режим.Щелкните внутри поля Заголовки сообщений. Когда появится список динамического содержимого, выберите Выражение. В редакторе выражений введите следующее выражение и нажмите кнопку ОК:
triggerOutputs()['Headers']
В действии Декодирование AS2 выражение теперь отображается как маркер:
Чтобы получить маркер выражения для разрешения в маркер заголовков, переключитесь между конструктором и представлением кода. После выполнения этого шага действие Декодирование AS2 будет выглядеть следующим образом:
Добавление действия ответа при получении сообщения
Чтобы уведомить торгового партнера о получении сообщения, можно вернуть ответ, содержащий уведомление о состоянии сообщения (MDN) AS2, с помощью действий условия и ответа. Если вы добавите эти действия сразу после действия AS2, рабочий процесс приложения логики может продолжить обработку, если действие AS2 завершилось успешно. В противном случае, если действие AS2 завершается ошибкой, рабочий процесс приложения логики прекращает обработку.
В действии Декодирование AS2 выберите Новый шаг.
Под полем поиска Выберите операцию выберите вкладку Встроенный, если еще не выбрано. В поле поиска введите
condition
. Выберите действия Условие.Теперь отображается фигура условия, в том числе пути, определяющие, что делать, если условие выполняется.
Теперь укажите условие для вычисления. Введите следующее выражение в поле Выберите значение:
@body('AS2_Decode')?['AS2Message']?['MdnExpected']
В среднем поле убедитесь, что для операции сравнения задано значение
is equal to
. В поле справа введите значениеExpected
.Сохраните рабочий процесс приложения логики. Чтобы получить выражение, разрешаемое в качестве этого маркера, переключитесь между конструктором и представлением кода.
Теперь укажите ответы, которые будут возвращаться в случае успеха или сбоя действия Декодирование AS2.
Если действие Декодирование AS2 будет выполнено успешно, в фигуре Истина выберите Добавить действие. В поле поиска Выберите операцию введите
response
и выберите Ответ.Чтобы получить доступ к MDN AS2 из выходных данных действия Декодирование AS2, укажите следующие выражения:
В свойстве Заголовки действия Ответ укажите следующее выражение:
@body('AS2_Decode')?['OutgoingMdn']?['OutboundHeaders']
В свойстве Текст действия Ответ укажите следующее выражение:
@body('AS2_Decode')?['OutgoingMdn']?['Content']
Чтобы получить выражения, разрешаемые в качестве маркеров, переключитесь между конструктором и представлением кода.
Если действие Декодирование AS2 завершится сбоем, в фигуре Ложь выберите Добавить действие. В поле поиска Выберите операцию введите
response
и выберите Ответ. Настройте действие Ответ, чтобы оно возвращало требуемое состояние и ошибку.
Сохраните рабочий процесс приложения логики.
Добавление действия декодирования сообщения X12
Теперь добавьте действие Декодирование сообщения X12.
В разделе действия Ответ выберите Добавить действие.
В разделе Выберите операцию в поле поиска введите
x12 decode
и выберите Декодирование сообщения X12.Если действие X12 запрашивает сведения о подключении, укажите имя для подключения, выберите учетную запись интеграции, которую вы хотите использовать, и нажмите кнопку Создать.
Теперь укажите входные данные для действия X12. В этом примере используются выходные данные действия AS2, которые являются содержимым сообщения, но обратите внимание, что это содержимое имеет формат объекта JSON и применяет кодировку Base64. Поэтому необходимо преобразовать это содержимое в строку.
В поле Сообщение X12 в виде неструктурированного файла для декодирования введите это выражение, чтобы преобразовать выходные данные AS2:
@base64ToString(body('AS2_Decode')?['AS2Message']?['Content'])
Сохраните рабочий процесс приложения логики. Чтобы получить выражение, разрешаемое в качестве этого маркера, переключитесь между конструктором и представлением кода.
Сохраните рабочий процесс приложения логики.
Если вам нужны дополнительные действия для этого рабочего процесса приложения логики, например, чтобы декодировать содержимое сообщения и выводить содержимое в формате объекта JSON, продолжите добавлять необходимые действия в рабочий процесс приложения логики.
Настройка рабочего процесса приложения логики B2B завершена. В настоящем приложении вам нужно будет сохранить декодированные данные X12 в бизнес-приложении или в хранилище данных. Например, ознакомьтесь со следующей документацией:
Чтобы подключиться к своим бизнес-приложениям и использовать эти API в приложении логики, вы можете добавить дополнительные действия или написать пользовательские API.