From 8a2438978166afe4ea2104f4c517716f63b8be74 Mon Sep 17 00:00:00 2001
From: wangli <274027703@qq.com>
Date: Mon, 24 Jun 2024 20:45:52 +0800
Subject: [PATCH] =?UTF-8?q?update(REQ-2516)=20-=20=E9=80=82=E9=85=8D?=
=?UTF-8?q?=E6=A1=86=E6=9E=B6=E4=B8=AD=E6=8A=9B=E9=94=99=E7=9A=84=E8=AE=B0?=
=?UTF-8?q?=E5=BD=95=E9=80=BB=E8=BE=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
workflow-engine-spring-boot-starter/pom.xml | 5 ++++
...rkflowEngineStarterFeignConfiguration.java | 26 +++++++++++++++++++
2 files changed, 31 insertions(+)
diff --git a/workflow-engine-spring-boot-starter/pom.xml b/workflow-engine-spring-boot-starter/pom.xml
index d850cc52f..3af6e195f 100644
--- a/workflow-engine-spring-boot-starter/pom.xml
+++ b/workflow-engine-spring-boot-starter/pom.xml
@@ -40,5 +40,10 @@
workflow-engine-api
${project.version}
+
+ jakarta.servlet
+ jakarta.servlet-api
+ provided
+
diff --git a/workflow-engine-spring-boot-starter/src/main/java/cn/axzo/workflow/starter/feign/ext/WorkflowEngineStarterFeignConfiguration.java b/workflow-engine-spring-boot-starter/src/main/java/cn/axzo/workflow/starter/feign/ext/WorkflowEngineStarterFeignConfiguration.java
index 4721b7bc3..3199035da 100644
--- a/workflow-engine-spring-boot-starter/src/main/java/cn/axzo/workflow/starter/feign/ext/WorkflowEngineStarterFeignConfiguration.java
+++ b/workflow-engine-spring-boot-starter/src/main/java/cn/axzo/workflow/starter/feign/ext/WorkflowEngineStarterFeignConfiguration.java
@@ -22,12 +22,19 @@ import org.springframework.cloud.openfeign.support.ResponseEntityDecoder;
import org.springframework.cloud.openfeign.support.SpringDecoder;
import org.springframework.context.annotation.Bean;
import org.springframework.core.env.Environment;
+import org.springframework.core.task.support.ExecutorServiceAdapter;
import org.springframework.util.CollectionUtils;
+import org.springframework.web.context.request.RequestAttributes;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+import javax.servlet.http.HttpServletRequest;
import java.util.Collection;
import java.util.Collections;
import java.util.Objects;
+import static cn.axzo.framework.web.exception.BasicRecordExceptionHandler.MICRO_SERVER_RECORD_ERROR_GET_PARAM_NAME;
+import static cn.axzo.framework.web.exception.BasicRecordExceptionHandler.MICRO_SERVER_RECORD_ERROR_HEADER_NAME;
import static cn.axzo.workflow.client.config.WorkflowRequestInterceptor.HEADER_API_VERSION;
import static cn.axzo.workflow.client.config.WorkflowRequestInterceptor.HEADER_HTTP_CLIENT;
import static cn.axzo.workflow.client.config.WorkflowRequestInterceptor.HEADER_HTTP_CLIENT_VALUE;
@@ -80,9 +87,28 @@ public class WorkflowEngineStarterFeignConfiguration {
//链路追踪
template.header(Constants.CTX_LOG_ID_MDC, MDC.get(Constants.CTX_LOG_ID_MDC));
template.header(ENABLE_MANAGEABLE, starterProperties.getManageable().toString());
+ HttpServletRequest originalRequest = getOriginalRequest();
+ if (Objects.nonNull(originalRequest)) {
+ setRequestParams(template, originalRequest);
+ }
};
}
+ private void setRequestParams(RequestTemplate template, HttpServletRequest originalRequest) {
+ String[] packageNames = originalRequest.getParameterValues(MICRO_SERVER_RECORD_ERROR_GET_PARAM_NAME);
+ template.query(MICRO_SERVER_RECORD_ERROR_GET_PARAM_NAME, packageNames);
+ }
+
+ public HttpServletRequest getOriginalRequest() {
+ try {
+ ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
+ return attributes.getRequest();
+ } catch (Exception e) {
+ log.warn("not HttpServletRequest instance bean found");
+ return null;
+ }
+ }
+
private void resetInvokeMode(WorkflowEngineStarterProperties starterProperties, RequestTemplate template) {
Collection invokeModeInHeader = template.headers().getOrDefault(STARTER_INVOKE_MODE, Collections.emptyList());
template.removeHeader(STARTER_INVOKE_MODE);