增加构建通知

This commit is contained in:
dengqichen 2025-11-20 14:04:46 +08:00
parent 4654395a56
commit 06d4c799b2

View File

@ -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);
} }