Azure 逻辑应用程序 HTTP 操作步骤 - 动态获取 endOfDate 日期

Azure Logic App HTTP Action step - dynamically get endOfDate date

我有一个定期调用 api 端点的 azure logic 应用程序,我在我的请求正文中传递了两个日期属性,其中包括一天的开始和一天的结束。

Logic 应用程序有表达式 startOfDay(),但它们没有 endOfDay(),我如何才能像 startOfDay() 那样以 UTC 格式动态获取一天的结束时间? 谢谢

这是我的请求正文的样子,但它也抱怨@startOfDay()

{
 "organizationId": 'f41186b0-7f09-42c5-8a9d-81a2ad2b0e61',
 "attemptedDeliveries": true,
 "cancelDateStart": @{startOfDay()},
 "cancelDateEnd": ""
}

没有 endOfDay 的直接表达式,但解决方法之一是从 startOfDay addToTime 和 'subtractFromTime' 获取 endOfDay。假设我将时间戳设为 UtcNow() 并使用以下表达式计算 endOfDay。

subtractFromTime(addToTime(outputs('startOfDay'),1,'Day','o'),1,'Second','yyyy-MM-ddTHH:mm:ss')

我正在使用 Parse Json 来检索内部 Json 详细信息以供将来使用。通过这样做,您可以使用 Compose() 连接器创建自定义 JSON。

结果:-

Codeview

{
    "definition": {
        "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
        "actions": {
            "Compose": {
                "inputs": {
                    "attemptedDeliveries": "@body('Parse_JSON')?['attemptedDeliveries']",
                    "cancelDateEnd": "@{outputs('endOfDay')}",
                    "cancelDateStart": "@{outputs('startOfDay')}",
                    "organizationId": "@{body('Parse_JSON')?['organizationId']}"
                },
                "runAfter": {
                    "endOfDay": [
                        "Succeeded"
                    ]
                },
                "type": "Compose"
            },
            "Parse_JSON": {
                "inputs": {
                    "content": "@triggerBody()",
                    "schema": {
                        "properties": {
                            "attemptedDeliveries": {
                                "type": "boolean"
                            },
                            "cancelDateEnd": {
                                "type": "string"
                            },
                            "cancelDateStart": {
                                "type": "string"
                            },
                            "organizationId": {
                                "type": "string"
                            }
                        },
                        "type": "object"
                    }
                },
                "runAfter": {},
                "type": "ParseJson"
            },
            "endOfDay": {
                "inputs": "@subtractFromTime(addToTime(startOfDay(utcNow()),1,'Day','o'),1,'Second','yyyy-MM-ddTHH:mm:ss')",
                "runAfter": {
                    "startOfDay": [
                        "Succeeded"
                    ]
                },
                "type": "Compose"
            },
            "startOfDay": {
                "inputs": "@startOfDay(utcNow(),'yyyy-MM-ddTHH:mm:ss')",
                "runAfter": {
                    "Parse_JSON": [
                        "Succeeded"
                    ]
                },
                "type": "Compose"
            }
        },
        "contentVersion": "1.0.0.0",
        "outputs": {},
        "parameters": {},
        "triggers": {
            "manual": {
                "inputs": {
                    "schema": {}
                },
                "kind": "Http",
                "type": "Request"
            }
        }
    },
    "parameters": {}
}

这是我从我的 Http 触发器主体接收到的 json

{
 "organizationId": "f41186b0-7f09-42c5-8a9d-81a2ad2b0e61",
 "attemptedDeliveries": true,
 "cancelDateStart": "",
 "cancelDateEnd": ""
}

更新答案


在这里跟进之后我的逻辑应用程序

结果:

Codeview

{
    "definition": {
        "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
        "actions": {
            "endOfDay": {
                "inputs": "@subtractFromTime(addToTime(startOfDay(utcNow()),1,'Day','o'),1,'Second','yyyy-MM-ddTHH:mm:ss')",
                "runAfter": {
                    "startOfDay": [
                        "Succeeded"
                    ]
                },
                "type": "Compose"
            },
            "startOfDay": {
                "inputs": "@startOfDay(utcNow(),'yyyy-MM-ddTHH:mm:ss')",
                "runAfter": {},
                "type": "Compose"
            }
        },
        "contentVersion": "1.0.0.0",
        "outputs": {},
        "parameters": {},
        "triggers": {
            "Recurrence": {
                "evaluatedRecurrence": {
                    "frequency": "Second",
                    "interval": 30
                },
                "recurrence": {
                    "frequency": "Second",
                    "interval": 30
                },
                "type": "Recurrence"
            }
        }
    },
    "parameters": {}
}

在 endOfDay 连接器之后,您可以添加 4 个并行 HTTP 触发器并向其添加逻辑。

参考资料: Reference guide to workflow expression functions in Azure Logic Apps and Power Automate