azure - 如果 Azure 逻辑应用中的 Scope 操作中的任何操作失败,如何捕获异常详细信息
问题描述
我已经实现了 Azure Logic App 来执行我的业务流程。对于异常处理,我使用了 Scope操作。但是我想在Scope中任何操作失败的情况下捕获异常详细信息。
用于处理异常的示例逻辑应用流程:
解决方案
该result()
函数提供有关范围内所有操作的结果的上下文。 该result()
函数接受一个参数,即作用域的名称,并返回一个数组,其中包含该作用域内的所有操作结果。这些操作对象包含与对象相同的属性actions()
,例如操作的开始时间、结束时间、状态、输入、相关 ID 和输出。要为范围内失败的任何操作发送上下文,您可以轻松地将@result()
表达式与runAfter
属性配对。
要为具有失败结果的范围内的每个操作运行操作,并将结果数组过滤到失败的操作,您可以将@result()
表达式与过滤器数组操作和 For each 循环配对。For_each
您可以获取过滤后的结果数组并使用循环对每个失败执行操作。
下面是一个示例,后面附有详细说明,它发送一个 HTTP POST 请求,其中包含在“”范围内失败的任何操作的响应正文My_Scope
:
"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
推荐阅读
- ruby-on-rails - 'SyntaxError 语法错误,意外的 tIDENTIFIER,期望 kEND)的验证未通过:'
- recursion - 我的消息传递示例有什么问题?
- database - 设计摘要电子邮件实施的方法?
- javascript - navCtrl ionic 3 无效链接
- python - 通过替换熊猫中单元格中的第二行将值从一列连接到另一列
- java - 如何在 JavaFX 中动态更新 ListView 单元格?
- django - django admin 条件关系
- php - 使用 sql 过滤最新评论
- azure - 问:Azure 服务总线特定的消息处理程序
- mongodb - 在聚合 mongodb 中填充字段