我正在构建一个逻辑应用程序,其中包含一个同步样式的foreach循环(一次只能执行一次,并发= 1)。每个foreach循环中都有一个switch语句,该语句根据foreach循环要迭代的项的内容来调用不同的子Logic应用程序。
我发现,如果这些子逻辑应用程序之一失败,则foreach循环将继续进行,就好像什么都没发生一样,并执行由数组内容确定的后续任务。我找不到任何方法来停止(中断)foreach的执行或基于foreach循环中一个子逻辑应用程序的故障而终止整个逻辑应用程序。
如果相同的子Logic App失败而没有进入foreach循环,则父Logic App的执行将停止。这似乎是一个非常奇怪的设计决定,并且与Logic App执行在循环内还是循环外的行为不一致。
附加说明:为了增加伤害,在执行子Logic App时,即使它是HTTP触发器和响应,您也似乎无法访问它在调用中返回的HTTP状态代码(父)逻辑应用程序。因此,即使我想手动测试循环中遇到的每种情况,也无法弄清楚该怎么做。
答案 0 :(得分:1)
我想出了一种解决方法。
我使用Scope操作将switch语句(在其中调用了子逻辑应用程序的程序)封装在foreach内。 Scope操作从其中的任何内容“继承”失败。
作用域之后,在foreach末尾,我测试了作用域的状态。如果失败,则将“ break”变量(在Logic App的开头初始化为false)设置为“ true”。
在每个foreach迭代的开始,我检查“ break”变量。如果为“ true”,则将跳过foreach中的所有内容。
答案 1 :(得分:0)
我认为目前尚无好的方法。通常,我会使用在先前操作失败的情况下运行的终止操作。但是,在foreach中不允许终止操作。 Issue on the feedback forum
也许您可以通过使用直到操作而不是foreach来解决它,并具有何时中断的条件。对于子逻辑应用程序,您可以使用响应操作并将响应代码设置为500或类似的值,然后检查直到。
编辑:对不起,您很想念您无法在父母那里得到代码的地方。
答案 2 :(得分:0)