Logic App设计器删除foreach循环,没有错误或异常

时间:2017-01-30 23:56:39

标签: json azure foreach azure-logic-apps

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

Azure Logic App Designer

这是来自triggerBody的json数组(DBChanges),foreach应该遍历

" DBChanges":[{"键":"的ItemID""值":" 101"} ,{" Key":" Description"," Value":"描述消息"},{" Key" :"所有者""值":"塞缪尔"}]

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

Azure Logic App Code View

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

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

1 个答案:

答案 0 :(得分:0)

尝试将您的条件更新为"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联系。