如何解决在Azure Logic App的Scope操作中任何操作失败的情况下如何捕获异常详细信息
我已经实现了Azure Logic App来执行我的业务流程。对于异常处理,我使用了 Scope 操作。但是,如果范围中的任何操作失败,我想捕获异常详细信息。
示例逻辑应用流以处理异常:
所以,任何人都可以对此提出建议。
解决方法
result()
函数提供有关范围内所有操作的结果的上下文。 result()
函数接受单个参数,即范围的名称,并返回一个数组,其中包含该范围内的所有操作结果。这些操作对象包括与actions()
对象相同的属性,例如操作的开始时间,结束时间,状态,输入,相关ID和输出。要为范围内失败的任何操作发送上下文,您可以轻松地将@result()
表达式与runAfter
属性配对。
要为结果为“失败”的作用域中的每个操作运行一个操作,并将结果数组过滤为失败的操作,可以将@result()
表达式与“筛选器数组”操作和“每个循环。您可以使用过滤后的结果数组,并使用For_each
循环对每个失败执行操作。
下面是一个示例,后面有详细的说明,该示例针对响应范围“ My_Scope
中失败的任何操作,向响应主体发送HTTP POST请求:
"Filter_array": {
"type": "Query","inputs": {
"from": "@result('My_Scope')","where": "@equals(item()['status'],'Failed')"
},"runAfter": {
"My_Scope": [
"Failed"
]
}
},"For_each": {
"type": "foreach","actions": {
"Log_exception": {
"type": "Http","inputs": {
"method": "POST","body": "@item()['outputs']['body']","headers": {
"x-failed-action-name": "@item()['name']","x-failed-tracking-id": "@item()['clientTrackingId']"
},"uri": "http://requestb.in/"
},"runAfter": {}
}
},"foreach": "@body('Filter_array')","runAfter": {
"Filter_array": [
"Succeeded"
]
}
}
有关此建议的更多详细信息,您可以访问Get context and results for failures in Scope
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。