增加构建通知
This commit is contained in:
parent
4654395a56
commit
06d4c799b2
@ -139,7 +139,9 @@ public class HttpRequestNodeDelegate extends BaseNodeDelegate<HttpRequestInputMa
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 处理HTTP错误
|
* 处理HTTP错误(4xx, 5xx)
|
||||||
|
* <p>
|
||||||
|
* 业务失败:设置完整的 output 信息后抛出异常,由 BaseNodeDelegate 根据 continueOnFailure 决定是否继续
|
||||||
*/
|
*/
|
||||||
private void handleHttpError(Exception e, long responseTime) {
|
private void handleHttpError(Exception e, long responseTime) {
|
||||||
HttpStatusCode statusCode = null;
|
HttpStatusCode statusCode = null;
|
||||||
@ -155,36 +157,51 @@ public class HttpRequestNodeDelegate extends BaseNodeDelegate<HttpRequestInputMa
|
|||||||
responseBody = serverError.getResponseBodyAsString();
|
responseBody = serverError.getResponseBodyAsString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 设置详细的 output 信息
|
||||||
output.setStatusCode(statusCode != null ? statusCode.value() : 0);
|
output.setStatusCode(statusCode != null ? statusCode.value() : 0);
|
||||||
output.setResponseTime(responseTime);
|
output.setResponseTime(responseTime);
|
||||||
output.setIsSuccess(false);
|
output.setIsSuccess(false);
|
||||||
output.setErrorMessage(e.getMessage());
|
output.setErrorMessage(e.getMessage());
|
||||||
|
|
||||||
|
// ⚠️ 注意:HTTP 错误响应通常是 HTML 错误页面(不是 JSON),设置为 null 避免模板解析错误
|
||||||
|
// 如果需要访问原始错误响应,可以从 errorMessage 中获取
|
||||||
|
output.setResponseBody(null);
|
||||||
|
|
||||||
if (responseBody != null && !responseBody.isEmpty()) {
|
if (responseBody != null && !responseBody.isEmpty()) {
|
||||||
output.setResponseBody(responseBody);
|
|
||||||
output.setResponseSize((long) responseBody.length());
|
output.setResponseSize((long) responseBody.length());
|
||||||
}
|
}
|
||||||
|
|
||||||
String errorMsg = String.format("HTTP请求失败: 状态码=%d, 错误=%s",
|
String errorMsg = String.format("HTTP请求失败: 状态码=%d, 错误=%s",
|
||||||
output.getStatusCode(), e.getMessage());
|
output.getStatusCode(), e.getMessage());
|
||||||
|
|
||||||
// 不在这里记录日志,由BaseNodeDelegate统一处理(避免重复记录)
|
logInfo(errorMsg);
|
||||||
// 直接抛出异常,由BaseNodeDelegate统一处理continueOnFailure逻辑
|
|
||||||
|
// 抛出异常,由 BaseNodeDelegate 根据 continueOnFailure 决定:
|
||||||
|
// - continueOnFailure=true: 调用 markFailure(e),设置 output.status=FAILURE,保存 output,继续执行
|
||||||
|
// - continueOnFailure=false: 调用 terminateWorkflow(e),抛出 BpmnError,终止工作流
|
||||||
throw new RuntimeException(errorMsg, e);
|
throw new RuntimeException(errorMsg, e);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 处理一般错误(网络超时、连接失败等)
|
* 处理一般错误(网络超时、连接失败等)
|
||||||
|
* <p>
|
||||||
|
* 技术异常:设置基本的 output 信息后抛出异常,由 BaseNodeDelegate 根据 continueOnFailure 决定是否继续
|
||||||
*/
|
*/
|
||||||
private void handleGeneralError(Exception e) {
|
private void handleGeneralError(Exception e) {
|
||||||
|
// 设置基本的 output 信息(即使是网络异常也要设置,方便模板访问)
|
||||||
output.setIsSuccess(false);
|
output.setIsSuccess(false);
|
||||||
|
output.setStatusCode(0); // 0 表示未获取到 HTTP 状态码
|
||||||
output.setErrorMessage(e.getMessage());
|
output.setErrorMessage(e.getMessage());
|
||||||
|
output.setResponseBody(null);
|
||||||
|
|
||||||
String errorMsg = String.format("HTTP请求异常: %s - %s",
|
String errorMsg = String.format("HTTP请求异常: %s - %s",
|
||||||
e.getClass().getSimpleName(), e.getMessage());
|
e.getClass().getSimpleName(), e.getMessage());
|
||||||
|
|
||||||
// 不在这里记录日志,由BaseNodeDelegate统一处理(避免重复记录)
|
logInfo(errorMsg);
|
||||||
// 直接抛出异常,由BaseNodeDelegate统一处理continueOnFailure逻辑
|
|
||||||
|
// 抛出异常,由 BaseNodeDelegate 根据 continueOnFailure 决定:
|
||||||
|
// - continueOnFailure=true: 调用 markFailure(e),设置 output.status=FAILURE,保存 output,继续执行
|
||||||
|
// - continueOnFailure=false: 调用 terminateWorkflow(e),抛出 BpmnError,终止工作流
|
||||||
throw new RuntimeException(errorMsg, e);
|
throw new RuntimeException(errorMsg, e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user