Приложения логики - чтение XML-ответа от веб-службы и сохранение проанализированных данных в базе данных - PullRequest
0 голосов
/ 02 апреля 2019

Я пытаюсь использовать приложения логики, чтобы выполнить то, что я делал с Pentaho в прошлом. Я хотел бы создать приложение логики с триггером Recurrence, которое запускает шаг HTTP для публикации в веб-службе и получения XML-ответа. Я хочу проанализировать этот XML-ответ (известный формат) и сохранить результат в базе данных Azure SQL Server.

Я успешно проверил шаг HTTP и получил ответ XML. Я заполнил таблицу назначения в базе данных SQL. Что я не знаю, как делать с приложениями логики, так это анализировать XML-ответ во что-то вроде формата CSV, который я могу передать в SQL-запрос для ввода новой строки таблицы.

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

Думаю, было бы полезно услышать что-то вроде следующего:

  1. Это значительно сложнее, чем я ожидаю? Я хорошо разбираюсь в SQL, Pentaho, R и других инструментах, но немного новичок в HTTP-вызовах / ответах и ​​очень мало разбираюсь в XML.

  2. Какие разъемы Logic Flow я должен рассмотреть, являются ли они частью бесплатного предложения или какого-либо платного пакета?

Заранее благодарим за любую помощь в начале работы.

1 Ответ

0 голосов
/ 03 апреля 2019

Гораздо проще, если вы преобразуете XML в объект JSON и после разбора.И то, и другое можно сделать с помощью функций xml и json.

Кроме того, поскольку вы знаете формат XML, вы будететакже знать формат преобразованного JSON, что позволяет использовать действие Parse JSON, чтобы получить простые токены для использования в остальной части приложения логики.

Затем вы можете напрямую использовать эти токеныв запросе SQL.

Вот приложение логики, которое показывает случаи этого (без шагов SQL и HTTP)

Logic App Designer View

иего определение будет ясным

{
    "definition": {
        "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
        "actions": {
            "CSV_Data": {
                "inputs": {
                    "variables": [
                        {
                            "name": "random_data_csv",
                            "type": "String",
                            "value": "@{body('Parse_JSON')?['data']?['name']},@{body('Parse_JSON')?['data']?['awesome']}"
                        }
                    ]
                },
                "runAfter": {
                    "Parse_JSON": [
                        "Succeeded"
                    ]
                },
                "type": "InitializeVariable"
            },
            "Parse_JSON": {
                "inputs": {
                    "content": "@json(xml(variables('random_data_xml')))",
                    "schema": {
                        "properties": {
                            "data": {
                                "properties": {
                                    "awesome": {
                                        "type": "string"
                                    },
                                    "name": {
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        },
                        "type": "object"
                    }
                },
                "runAfter": {
                    "XML_Data": [
                        "Succeeded"
                    ]
                },
                "type": "ParseJson"
            },
            "XML_Data": {
                "inputs": {
                    "variables": [
                        {
                            "name": "random_data_xml",
                            "type": "String",
                            "value": "<data>\n<name>Azure Logic Apps</name>\n<awesome>true</awesome>\n</data>"
                        }
                    ]
                },
                "runAfter": {},
                "type": "InitializeVariable"
            }
        },
        "contentVersion": "1.0.0.0",
        "outputs": {},
        "parameters": {},
        "triggers": {
            "manual": {
                "inputs": {
                    "schema": {}
                },
                "kind": "Http",
                "type": "Request"
            }
        }
    }
}
...