Использование API Azure Rest с почтальоном для обновления частоты повторения приложений логики - PullRequest
0 голосов
/ 21 октября 2019

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

Я могу использовать API Azure для получения сведений о рабочем процессе, связанном с приложением логики, а затем получить триггер в этом рабочем процессе, связанныйс опроса сервисного автобуса. Это возвращает JSON как:

{
    "properties": {
        "provisioningState": "Succeeded",
        "createdTime": "2019-08-13T21:08:14.8768439Z",
        "changedTime": "2019-10-21T14:32:46.0204187Z",
        "state": "Enabled",
        "status": "Running",
        "lastExecutionTime": "2019-10-21T14:32:04.149971Z",
        "nextExecutionTime": "2019-10-21T14:32:46.285845Z",
        "recurrence": {
            "frequency": "Second",
            "interval": 30
        },
        "workflow": {
            "id": "/subscriptions/<subscription>/resourceGroups/<resource-group-name>/providers/Microsoft.Logic/workflows/<workflow-name>/versions/08586299385548076458",
            "name": "08586299385548076458",
            "type": "Microsoft.Logic/workflows/versions"
        }
    },
    "id": "/subscriptions/<subscription>/resourceGroups/<resource-group-name>/providers/Microsoft.Logic/workflows/<workflow-name>/triggers/When_a_message_is_received_in_a_topic_subscription_(auto-complete)",
    "name": "When_a_message_is_received_in_a_topic_subscription_(auto-complete)",
    "type": "Microsoft.Logic/workflows/triggers"
} 

В приведенной выше структуре я хочу PATCH "recurrence" : { "frequency": "Second" } до "recurrence" : { "frequency": "Minute" }

Из просмотра документации REST API itмне неясно, возможно ли это? Я вижу, что у Trigger есть опция setState, и одним из свойств является RecurrenceFrequency, но если я попытаюсь использовать это, я получу следующую ошибку:

{
    "error": {
        "code": "WorkflowTriggerSetStateNotSupported",
        "message": "The workflow trigger 'When_a_message_is_received_in_a_topic_subscription_(auto-complete)' of type 'ApiConnection' does not support the set state action."
    }
}

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

1 Ответ

1 голос
/ 21 октября 2019

Обновленный ответ и обходной путь

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

  • Собственный ответ:

{"error":{"code":"WorkflowTriggerSetStateNotSupported","message":"The workflow trigger 'Recurrence' of type 'Recurrence' does not support the set state action."}}

  • Управляемый ответ:

{"error":{"code":"WorkflowTriggerSetStateNotSupported","message":"The workflow trigger 'sbAuto' of type 'ApiConnection' does not support the set state action."}}

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

{"error":{"code":"PatchWorkflowPropertiesNotSupported","message":"The request to patch workflow 'XXXXXXX' is not supported. None of the fields inside the properties object can be patched."}}

Я поднял эту проблему в Microsoft.

Однако ...

Что возможно возможно, используется глагол PUT для обновления рабочего процесса.

Для этого лучше всего извлечь рабочий процесс с использованием глагола GET, обновить объект повторения JSON и переиздатьиспользуя PUT (Создать или Обновить).

В моем примере ниже приведено определение созданного мною рабочего процесса tempotestla .

Запрос:

GET https://management.azure.com/subscriptions/651a2541-8d19-42a0-85fe-89a9eee81c48/resourceGroups/TechSouth/providers/Microsoft.Logic/workflows/tempotestla?api-version=2016-06-01 HTTP/1.1
User-Agent: Fiddler
Host: management.azure.com
Content-Type: application/json
Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Content-Length: 0

Ответ:

HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Length: 1431
Content-Type: application/json; charset=utf-8
Expires: -1
Vary: Accept-Encoding
x-ms-request-id: uksouth:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Strict-Transport-Security: max-age=31536000; includeSubDomains
x-ms-ratelimit-remaining-subscription-resource-requests: 19999
x-ms-correlation-request-id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
x-ms-routing-request-id: UKSOUTH2:20191022T160012Z:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
X-Content-Type-Options: nosniff
Date: Tue, 22 Oct 2019 16:00:11 GMT

{
    "properties":{
        "provisioningState":"Succeeded",
        "createdTime":"2019-10-22T13:27:18.8425031Z",
        "changedTime":"2019-10-22T15:59:39.3684114Z",
        "state":"Disabled",
        "version":"xxxxxxxxxxxxxxxxxxxx",
        "accessEndpoint":"https://prod-00.uksouth.logic.azure.com:443/workflows/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "definition":{
            "$schema":"https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
            "contentVersion":"1.0.0.0",
            "parameters":{

            },
            "triggers":{
                "Recurrence":{
                    "recurrence":{
                        "frequency":"Hour",
                        "interval":5
                    },
                    "type":"Recurrence"
                }
            },
            "actions":{
                "Terminate":{
                    "runAfter":{

                    },
                    "type":"Terminate",
                    "inputs":{
                        "runStatus":"Succeeded"
                    }
                }
            },
            "outputs":{

            }
        },
        "parameters":{

        },
        "endpointsConfiguration":{
            "workflow":{
                "outgoingIpAddresses":[
                    {
                        "address":"51.140.74.14"
                    },
                    {
                        "address":"51.140.73.85"
                    },
                    {
                        "address":"51.140.78.44"
                    },
                    {
                        "address":"51.140.137.190"
                    },
                    {
                        "address":"51.140.153.135"
                    },
                    {
                        "address":"51.140.28.225"
                    },
                    {
                        "address":"51.140.142.28"
                    },
                    {
                        "address":"51.140.158.24"
                    }
                ],
                "accessEndpointIpAddresses":[
                    {
                        "address":"51.140.79.109"
                    },
                    {
                        "address":"51.140.78.71"
                    },
                    {
                        "address":"51.140.84.39"
                    },
                    {
                        "address":"51.140.155.81"
                    }
                ]
            },
            "connector":{
                "outgoingIpAddresses":[
                    {
                        "address":"51.140.80.51"
                    },
                    {
                        "address":"51.140.148.0/28"
                    }
                ]
            }
        }
    },
    "id":"/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/xxxxxxxxx/providers/Microsoft.Logic/workflows/tempotestla",
    "name":"tempotestla",
    "type":"Microsoft.Logic/workflows",
    "location":"uksouth",
    "tags":{

    }
}

Это страница обзора моего рабочего процесса:


Workflow Overview - 5 Hour Trigger


Отсюда, если вы используете объектно-ориентированный код или сценарий, вы можете десериализовать тело ответа и изменить интервал:

objResponse.properties.definition.triggers.<TriggerType>.<TriggerName>.frequency = "Minute"

Затем выполните повторную сериализацию вашего объекта и отправьте его обратно. к API в запросе PUT. Здесь я меняю часы на дни:

PUT https://management.azure.com/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/xxxxxxxxx/providers/Microsoft.Logic/workflows/tempotestla?api-version=2016-06-01 HTTP/1.1
User-Agent: Fiddler
Host: management.azure.com
Content-Type: application/json
Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Content-Length: 1534

{
    "properties":{
        "provisioningState":"Succeeded",
        "createdTime":"2019-10-22T15:25:16.1635472Z",
        "changedTime":"2019-10-22T15:25:16.153712Z",
        "state":"Disabled",
        "version":"08586298489693318400",
        "accessEndpoint":"https://prod-00.uksouth.logic.azure.com:443/workflows/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "definition":{
            "$schema":"https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
            "contentVersion":"1.0.0.0",
            "parameters":{

            },
            "triggers":{
                "Recurrence":{
                    "recurrence":{
                        "frequency":"Day",
                        "interval":5
                    },
                    "type":"Recurrence"
                }
            },
            "actions":{
                "Terminate":{
                    "runAfter":{

                    },
                    "type":"Terminate",
                    "inputs":{
                        "runStatus":"Succeeded"
                    }
                }
            },
            "outputs":{

            }
        },
        "parameters":{

        },
    },
    "id":"/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/xxxxxxxxx/providers/Microsoft.Logic/workflows/tempotestla",
    "name":"tempotestla",
    "type":"Microsoft.Logic/workflows",
    "location":"uksouth",
    "tags":{

    }
}

Вы должны получить обновленный объект обратно в теле ответа.

Вот моя сводная страница рабочего процесса после выдачи запроса:


5 Day Trigger


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

...