Как обрабатывать XML в приложении Azure Logic

Я начну с поведения, которое мы ожидаем:

  1. Возьмите файл (будь то JSON или XML, но сейчас мы бы предпочли XML, хотя у нас есть контроль над этим),
  2. Проанализируйте его, чтобы найти "тип" файла.
  3. Преобразуйте файл, чтобы он соответствовал одному из нескольких различных форматов XML.
  4. Отправьте его на заранее определенную конечную точку и обратно вызывающему абоненту

Наше первоначальное исследование показало, что BizTalk с приложением логики Azure подойдет для этого, но теперь, когда я работаю над Proof of Concept, я сталкиваюсь с препятствиями, а именно:

  • BizTalk is seemingly not supported in the latest version of Azure (2015-08-01-preview)
    • I read this in the comments section of one of the articles I read, but cannot find the reference now, is this true?
  • Анализ XML не поддерживается (я читал в одна из 100 статей, которые я прочитал по этому поводу, о том, что запросы, не относящиеся к JSON, рассматриваются как двоичные файлы, которые не могут быть проанализированы в логика), что означает, что нам нужно преобразовать существующий XML в JSON для вызова в Azure, только чтобы преобразовать его обратно в XML.

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

Итак, у меня двоякий вопрос:

  1. Подходит ли наша ситуация для приложения Azure Logic (или, возможно, другого типа приложения Azure)?
  2. If so, is BizTalk the proper way to transform our files into the needed output XML formats?
    1. From what I'm seeing online, there isn't a way to create BizTalk transform files in VS 2015?

      Серверные проекты BizTalk несовместимы с Visual Studio 2015 или Visual Studio 2013.


person Sven Grosen    schedule 22.03.2016    source источник
comment
Что насчет этого решения? azure.microsoft.com/en -gb / documentation / articles /?   -  person wuerzelchen    schedule 22.03.2016
comment
@wuerzelchen Это решение BizTalk, о котором я упоминал: вы не можете создавать карты в VS 2015, и, похоже, оно не поддерживается в последней версии схемы Azure.   -  person Sven Grosen    schedule 22.03.2016
comment
Вы избегаете более серьезной проблемы, а именно: XML мертв. Не используйте это. Все больше и больше онлайн-сервисов ожидают JSON, и использование такого динозавра, как XML, вероятно, сработает для вас сейчас, но это не формат для будущего. В зависимости от продолжительности жизни вашего приложения я бы просто перешел на JSON и покончил с этим.   -  person Pedro G. Dias    schedule 22.03.2016
comment
@ PedroG.Dias мы имеем дело с строго регулируемой отраслью, и независимо от нашего входного формата (мы нормально работаем с JSON внутри и предпочли бы его) нам НУЖНО создавать XML для удовлетворения требований третьих сторон.   -  person Sven Grosen    schedule 22.03.2016
comment
@ PedroG.Dias Какой возмутительный и невежественный комментарий. Хотя веб-разработчики могут думать, что JSON - это Mana from Heaven, все в мире EAI используют XML и XSLT. Мир EAI сильно отличается от веб-разработки; существует намного дольше, чем JSON; не собирается рушиться в ближайшее время; и требует специальных инструментов и технологий.   -  person MickyD    schedule 08.02.2017
comment
@SvenGrosen Вы когда-нибудь находили решение этой проблемы? Я застрял на этом сейчас. Кажется, Служба преобразования BizTalk все еще отсутствует   -  person MickyD    schedule 08.02.2017
comment
@MickyD, мы можем согласиться, чтобы не согласиться. JSON и BSON выросли из того, что вы называете игрушками для веб-разработчиков. Нужны схемы? Проверять. Нужен бинарный файл? Проверять. Попробуйте посмотреть на всех без исключения поставщиков API, amazon, ibm, даже старый добрый Microsoft отказываются от xml и делают json своим основным форматом передачи данных во всех своих системах. Для некоторых старых систем xml - единственный выбор, но, учитывая выбор, каждый раз переходите на json. Мыло умерло много лет назад и используется только в устаревших системах. Для всех намерений и целей xml как носитель данных мертв, хотя, конечно, многие xml-системы все еще существуют.   -  person Pedro G. Dias    schedule 08.02.2017
comment
@ PedroG.Dias Если вы не знаете, что такое EAI (вы уже попали в ловушку SOAP), ваши комментарии по этому поводу спорны. Между прочим, Microsoft не отказалась от EAI; XML и XSLT, поскольку все они доступны в совершенно новых службах Azure BizTalk, которые поддерживают большую часть функций EAI из BizTalk на месте. QED   -  person MickyD    schedule 08.02.2017
comment
@MickyD мы отказались от Azure и разработали сами   -  person Sven Grosen    schedule 08.02.2017
comment
Жалко, Свен. :( Теперь мы с ужасом ждем того дня, не дай бог, Microsoft когда-либо захочет взяться за индустрию электронного здравоохранения, такую ​​как HL7.org; CDA; SNOMED; Docle и NEHTA, в надежде, что 30-летняя индустрия воспользуется их узким взглядом, недисциплинированный, нерегулируемый, бездоказательный план с нуля, такой как JSON, повсюду. Пока мы все еще смеемся здесь над недавними комментариями. Желаю вам всего наилучшего :)   -  person MickyD    schedule 08.02.2017


Ответы (3)


Недавно мы выпустили предварительную версию [Enterprise Integration Pack] (EIP) для приложений логики. В рамках этого выпуска в Logic Apps был добавлен ряд возможностей обработки XML.

  1. [JSON в XML] и наоборот: вы можете использовать функции json () и xml (), которые изначально доступны в определении приложений логики.
  2. XML-преобразование: теперь вы можете использовать новый XML-преобразование, основанное на XSLT 1.0.

Помимо этого, Logic Apps также имеет возможности HTTP-запросов / ответов, которые можно использовать для вызова конечных точек HTTP.

Надеюсь это поможет.

Спасибо, Винай

person Vinay Singh    schedule 18.07.2016
comment
Поддерживает ли XSLT EIP для Logic Apps все функции файлов BizTalk .TRFM? В противном случае это не поможет - person MickyD; 08.02.2017

  1. Получите запрос XML POST.
  2. Преобразуйте XML. - Использовать контент как triggerBody () и отображать с помощью XSLT. Здесь вы можете установить формат XML.

    <?xml version='1.0'?>
    <xsl:stylesheet version="1.0">
    <xsl:template match="/">
    <Header>
    <Something>
    <xsl:value-of select="soap-env:Envelope/soap-env:Body/a:Something/@value"/>
    </Something>
    </Header>
    </xsl:template>
    </xsl:stylesheet>
    
  3. Преобразование XML в JSON - используйте тело содержимого ('transform_XML') и сопоставьте с помощью XML в Json.

    {"Something": "{{content.Something.Value}}"
    
  4. Анализировать JSON - использовать тело содержимого ('transform_XML_to_JSON')
  5. HTTP-ответ - установите значения, которые вы хотите вернуть как body ('Parse_JSON') ['Value'] в Body.

    <Header>
    <Something>
    <value = "body('Parse_JSON')['Value']"/>
    </Something>
    </Header>
    
  6. Вы также можете создать большой двоичный объект и отправить его в фабрику данных.

person Watsyyy    schedule 21.02.2019

Вы также можете использовать приложения-функции с NewtonSoft (JSON.net). Logic Apps великолепны, но они не являются бутербродом И фишками ... по крайней мере, пока.

Вы должны иметь возможность вложить приложение-функцию в приложение логики. Используйте NewtonSoft (в приложении-функции) для поддержки синтаксического анализа XML> JSON, JSON> XML

person Azurite    schedule 01.08.2018