逻辑应用程序设计器在没有错误或异常的情况下删除了 foreach 循环

Logic App designer removes foreach loop without error or exception

我有一个逻辑应用程序,它使用服务总线消息队列上的 Webhook 触发器来 post 使用 HTTP+Swagger 操作将选定的消息发送到 API 应用程序。

Azure Logic App Designer

这是来自 triggerBody 的 json 数组 (DBChanges),foreach 应该对其进行迭代

"DBChanges":[{"Key":"ItemID","Value":"101"},{"Key":"Description","Value":"Decript the message"},{"Key":"Owner","Value":"Samuel"}]

这是 DBChanges POST 的逻辑应用程序代码。 foreach 循环应该遍历 DBChanges 数组的所有元素,它是 swagger 元数据中的键值对。

Azure Logic App Code View

当我在添加 foreach 循环后切换到设计模式时,设计人员删除了 foreach 代码,即使它在语法上看起来是正确的。

有谁知道为什么逻辑应用程序设计者在设计和代码视图之间切换时删除 foreach?

尝试将您的条件更新为 "expression": "@equals(triggerBody()['Description'], 'Create')",

在该条件下,您希望首先有一个 for-each,然后在其中进行 HTTP 操作,而不是相反(我使用 Compose 作为例如,但您可以将其替换为 HTTP+Swagger),请注意我如何使用 @item() 来引用 DBChanges 数组中的每个值。

"actions": {
    "For_each": {
        "actions": {
            "Compose": {
                "inputs": "@item()",
                "runAfter": {},
                "type": "Compose"
            }
        },
        "foreach": "@triggerBody()['DBChanges']",
        "runAfter": {},
        "type": "Foreach"
    }
}

为了帮助您在 JSON blob 中引用正确的值,我们最近添加了操作 Parse JSON,您可以在 HTTP Webhook 之后添加它触发器,提供正文作为输入,并包含它将返回的 JSON 的架构。您将能够使用来自选择器的友好标记,而不必手工制作它们。 :)

希望这对您有所帮助,请随时通过 Derek.Li (at) Microsoft dot com 与我联系。