From e918df85b891f67e9dfceda12ab3822d45091216 Mon Sep 17 00:00:00 2001 From: qinluo <1558642210@qq.com> Date: Sat, 24 Jun 2023 14:46:03 +0800 Subject: [PATCH 01/11] =?UTF-8?q?qinluo:=20=20=20=20=20=20-=20=E9=87=87?= =?UTF-8?q?=E7=94=A8=E5=90=8E=E7=BD=AE=E8=BF=87=E6=BB=A4=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../flow/manager/trace/ManagerExecutionListener.java | 4 ++++ .../org/smartboot/flow/manager/trace/TraceSampleStrategy.java | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/smart-flow-manager/src/main/java/org/smartboot/flow/manager/trace/ManagerExecutionListener.java b/smart-flow-manager/src/main/java/org/smartboot/flow/manager/trace/ManagerExecutionListener.java index 0f331a4..e8218c7 100644 --- a/smart-flow-manager/src/main/java/org/smartboot/flow/manager/trace/ManagerExecutionListener.java +++ b/smart-flow-manager/src/main/java/org/smartboot/flow/manager/trace/ManagerExecutionListener.java @@ -123,6 +123,10 @@ public class ManagerExecutionListener implements ExecutionListener { return; } + if (sampleStrategy != null && !sampleStrategy.sampled2(context)) { + return; + } + trace.setEx(context.getFatal()); trace.setEndTime(System.currentTimeMillis()); diff --git a/smart-flow-manager/src/main/java/org/smartboot/flow/manager/trace/TraceSampleStrategy.java b/smart-flow-manager/src/main/java/org/smartboot/flow/manager/trace/TraceSampleStrategy.java index 9c87d04..19b7197 100644 --- a/smart-flow-manager/src/main/java/org/smartboot/flow/manager/trace/TraceSampleStrategy.java +++ b/smart-flow-manager/src/main/java/org/smartboot/flow/manager/trace/TraceSampleStrategy.java @@ -24,4 +24,8 @@ public class TraceSampleStrategy { public boolean sampled(EngineContext ctx) { return ThreadLocalRandom.current().nextDouble(1) < radio; } + + public boolean sampled2(EngineContext ctx) { + return true; + } } -- Gitee From 43a47b1073a8e4d374440f0be3bd9d6db4220b98 Mon Sep 17 00:00:00 2001 From: qinluo <1558642210@qq.com> Date: Sat, 24 Jun 2023 15:42:00 +0800 Subject: [PATCH 02/11] qinluo: - fix trace result --- .../smartboot/flow/manager/trace/ManagerExecutionListener.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/smart-flow-manager/src/main/java/org/smartboot/flow/manager/trace/ManagerExecutionListener.java b/smart-flow-manager/src/main/java/org/smartboot/flow/manager/trace/ManagerExecutionListener.java index e8218c7..b4d67ec 100644 --- a/smart-flow-manager/src/main/java/org/smartboot/flow/manager/trace/ManagerExecutionListener.java +++ b/smart-flow-manager/src/main/java/org/smartboot/flow/manager/trace/ManagerExecutionListener.java @@ -131,7 +131,7 @@ public class ManagerExecutionListener implements ExecutionListener { trace.setEndTime(System.currentTimeMillis()); if (ManagerConfiguration.traceResult) { - trace.setResult(context.getReq()); + trace.setResult(context.getResult()); } // 将执行采集到的数据进行上报 -- Gitee From 2b6f47d45c7ecae9bc74d18d93d8c3eb98a63368 Mon Sep 17 00:00:00 2001 From: qinluo <1558642210@qq.com> Date: Sat, 24 Jun 2023 15:42:51 +0800 Subject: [PATCH 03/11] qinluo: - resolve permission --- .../smartboot/flow/manager/trace/ManagerExecutionListener.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/smart-flow-manager/src/main/java/org/smartboot/flow/manager/trace/ManagerExecutionListener.java b/smart-flow-manager/src/main/java/org/smartboot/flow/manager/trace/ManagerExecutionListener.java index b4d67ec..8da1055 100644 --- a/smart-flow-manager/src/main/java/org/smartboot/flow/manager/trace/ManagerExecutionListener.java +++ b/smart-flow-manager/src/main/java/org/smartboot/flow/manager/trace/ManagerExecutionListener.java @@ -23,7 +23,7 @@ public class ManagerExecutionListener implements ExecutionListener { private final TraceReporter traceReporter; private TraceSampleStrategy sampleStrategy; - ManagerExecutionListener(TraceReporter traceReporter, TraceSampleStrategy sampleStrategy) { + public ManagerExecutionListener(TraceReporter traceReporter, TraceSampleStrategy sampleStrategy) { this.traceReporter = traceReporter; this.sampleStrategy = sampleStrategy; } -- Gitee From d5c7bb40d3e5ab1f20fce64c0b74bb682ff585eb Mon Sep 17 00:00:00 2001 From: qinluo <1558642210@qq.com> Date: Sun, 25 Jun 2023 13:41:29 +0800 Subject: [PATCH 04/11] qinluo: - Code optimized. Signed-off-by: qinluo <1558642210@qq.com> --- .../flow/admin/g6/G6ComponentVisitor.java | 1 - .../attribute/AttributeValueResolver.java | 67 ++++++++----------- .../org/smartboot/plugin/bootstrap/Main.java | 4 +- .../org/smartboot/plugin/bootstrap/Step.java | 18 +++-- .../plugin/bootstrap/YamlConfig.java | 13 +++- .../plugin/executable/ShellExecutable.java | 3 +- ...aultPlaceholderAttributeValueResolver.java | 2 +- .../extension/BeanDefinitionVisitor.java | 19 +++--- 8 files changed, 67 insertions(+), 60 deletions(-) diff --git a/smart-flow-admin/src/main/java/org/smartboot/smart/flow/admin/g6/G6ComponentVisitor.java b/smart-flow-admin/src/main/java/org/smartboot/smart/flow/admin/g6/G6ComponentVisitor.java index ef84adb..aff39a4 100644 --- a/smart-flow-admin/src/main/java/org/smartboot/smart/flow/admin/g6/G6ComponentVisitor.java +++ b/smart-flow-admin/src/main/java/org/smartboot/smart/flow/admin/g6/G6ComponentVisitor.java @@ -108,7 +108,6 @@ public class G6ComponentVisitor extends ComponentVisitor { node.setComponentInfo(buildComponentInfo()); if (type == ComponentType.IF || type == ComponentType.CHOOSE) { - node.setType("diamond"); node.setLabel(condition); node.setY(assembler.incr()); node.setX(assembler.getCx()); diff --git a/smart-flow-core/src/main/java/org/smartboot/flow/core/attribute/AttributeValueResolver.java b/smart-flow-core/src/main/java/org/smartboot/flow/core/attribute/AttributeValueResolver.java index 263267a..4df5b65 100644 --- a/smart-flow-core/src/main/java/org/smartboot/flow/core/attribute/AttributeValueResolver.java +++ b/smart-flow-core/src/main/java/org/smartboot/flow/core/attribute/AttributeValueResolver.java @@ -38,11 +38,12 @@ public class AttributeValueResolver { return INSTANCE; } - protected Object earlyResolve(String value) { + protected String earlyResolve(String value) { return value; } - public Object resolve(Class accepted, Object value) { + @SuppressWarnings("unchecked") + public T resolve(Class accepted, Object value) { if (value == null) { return null; } @@ -52,7 +53,7 @@ public class AttributeValueResolver { } if (accepted.isInstance(value) && accepted != Object.class) { - return value; + return (T)value; } // Must as string @@ -60,61 +61,49 @@ public class AttributeValueResolver { // For string if (accepted == String.class) { - return strValue; + return (T)strValue; } // For boolean if (accepted == Boolean.class || accepted == boolean.class) { - return Boolean.parseBoolean(strValue); + return (T)Boolean.valueOf(Boolean.parseBoolean(strValue)); } // For numbers if (Number.class.isAssignableFrom(accepted) || accepted.isPrimitive()) { - Double numeric = Double.valueOf(strValue); - + Object resolved = null; + double numeric = Double.parseDouble(strValue); if (accepted == Long.class || accepted == long.class) { - return numeric.longValue(); - } - - if (accepted == Double.class || accepted == double.class) { - return numeric; - } - - if (accepted == Integer.class || accepted == int.class) { - return numeric.intValue(); - } - - if (accepted == Float.class || accepted == float.class) { - return numeric.floatValue(); - } - - if (accepted == Short.class || accepted == short.class) { - return numeric.shortValue(); - } - - if (accepted == Byte.class || accepted == byte.class) { - return numeric.byteValue(); - } - - if (accepted == Character.class || accepted == char.class) { - return (char)numeric.intValue(); - } - - if (accepted == BigDecimal.class) { - return new BigDecimal(strValue); + resolved = (long)numeric; + } else if (accepted == Double.class || accepted == double.class) { + resolved = numeric; + } else if (accepted == Integer.class || accepted == int.class) { + resolved = (int) numeric; + } else if (accepted == Float.class || accepted == float.class) { + resolved = (float) numeric; + } else if (accepted == Short.class || accepted == short.class) { + resolved = (short) numeric; + } else if (accepted == Byte.class || accepted == byte.class) { + resolved = (byte) numeric; + } else if (accepted == Character.class || accepted == char.class) { + resolved = (char) (int) numeric; + } else if (accepted == BigDecimal.class) { + resolved = new BigDecimal(strValue); + } else { + AssertUtil.shouldNotReachHere(); } - AssertUtil.shouldNotReachHere(); + return (T)resolved; } // For string list. if (accepted == List.class) { - return Arrays.asList(strValue.split(",")); + return (T)Arrays.asList(strValue.split(",")); } // for classname. try { - return objectCreator.create(strValue, accepted,true); + return objectCreator.create(strValue, accepted,false); } catch (Exception ignored) { // Maybe not a class. } diff --git a/smart-flow-plugin/smart-flow-bootstrap/src/main/java/org/smartboot/plugin/bootstrap/Main.java b/smart-flow-plugin/smart-flow-bootstrap/src/main/java/org/smartboot/plugin/bootstrap/Main.java index 0cb0a31..26067b9 100644 --- a/smart-flow-plugin/smart-flow-bootstrap/src/main/java/org/smartboot/plugin/bootstrap/Main.java +++ b/smart-flow-plugin/smart-flow-bootstrap/src/main/java/org/smartboot/plugin/bootstrap/Main.java @@ -85,13 +85,14 @@ public class Main { } FlowEngine engine = null; + DefaultPlaceholderAttributeValueResolver resolver = new DefaultPlaceholderAttributeValueResolver(); try { InputStream fileStream = Files.newInputStream(file.toPath()); if (fileType == SupportedFileType.XML) { DefaultParser parser = new DefaultParser(); - parser.setAttributeValueResolver(new DefaultPlaceholderAttributeValueResolver()); + parser.setAttributeValueResolver(resolver); parser.parse(fileStream); List engineNames = parser.getEngineNames(); @@ -117,6 +118,7 @@ public class Main { Yaml yaml = new Yaml(constructor); YamlConfig cfg = yaml.loadAs(fileStream, YamlConfig.class); + cfg.setResolver(resolver); cfg.validate(); engine = cfg.assemble(); } diff --git a/smart-flow-plugin/smart-flow-bootstrap/src/main/java/org/smartboot/plugin/bootstrap/Step.java b/smart-flow-plugin/smart-flow-bootstrap/src/main/java/org/smartboot/plugin/bootstrap/Step.java index d72264e..9b3bc2c 100644 --- a/smart-flow-plugin/smart-flow-bootstrap/src/main/java/org/smartboot/plugin/bootstrap/Step.java +++ b/smart-flow-plugin/smart-flow-bootstrap/src/main/java/org/smartboot/plugin/bootstrap/Step.java @@ -31,6 +31,7 @@ public class Step implements Serializable { private Long timeout; private String shellType; private String workdir; + private String file; public String getName() { return name; @@ -96,18 +97,27 @@ public class Step implements Serializable { this.workdir = workdir; } + public String getFile() { + return file; + } + + public void setFile(String file) { + this.file = file; + } + public Component assemble(AttributeValueResolver resolver) { type = AuxiliaryUtils.isNotBlank(type) ? type : "shell"; - commands = commands.stream().map(p -> (String)resolver.resolve(String.class, p)).collect(Collectors.toList()); + commands = commands.stream().map(p -> resolver.resolve(String.class, p)).collect(Collectors.toList()); Executable executable = null; if (Objects.equals(type, "shell")) { ShellExecutable shellExecutable = new ShellExecutable(); - shellExecutable.setName(name); + shellExecutable.setName(resolver.resolve(String.class, name)); shellExecutable.setCommands(commands); - shellExecutable.setType(shellType); - shellExecutable.setWorkdir(workdir); + shellExecutable.setType(resolver.resolve(String.class, shellType)); + shellExecutable.setWorkdir(resolver.resolve(String.class, workdir)); + shellExecutable.setFile(resolver.resolve(String.class, file)); executable = shellExecutable; } diff --git a/smart-flow-plugin/smart-flow-bootstrap/src/main/java/org/smartboot/plugin/bootstrap/YamlConfig.java b/smart-flow-plugin/smart-flow-bootstrap/src/main/java/org/smartboot/plugin/bootstrap/YamlConfig.java index 659773f..2e6d4a0 100644 --- a/smart-flow-plugin/smart-flow-bootstrap/src/main/java/org/smartboot/plugin/bootstrap/YamlConfig.java +++ b/smart-flow-plugin/smart-flow-bootstrap/src/main/java/org/smartboot/plugin/bootstrap/YamlConfig.java @@ -6,7 +6,6 @@ import org.smartboot.flow.core.attribute.AttributeValueResolver; import org.smartboot.flow.core.builder.Builders; import org.smartboot.flow.core.builder.PipelineBuilder; import org.smartboot.flow.core.util.AssertUtil; -import org.smartboot.plugin.resovler.DefaultPlaceholderAttributeValueResolver; import java.io.Serializable; import java.util.List; @@ -24,7 +23,7 @@ public class YamlConfig implements Serializable, Validator { private String pipeline; private List steps; private Integer threads; - private final AttributeValueResolver resolver = new DefaultPlaceholderAttributeValueResolver(); + private transient AttributeValueResolver resolver; @Override public void validate() { @@ -41,11 +40,19 @@ public class YamlConfig implements Serializable, Validator { pipelineBuilder.next(step.assemble(resolver)); } - return Builders.engine().name((String)resolver.resolve(String.class, name)) + return Builders.engine().name(resolver.resolve(String.class, name)) .executor(Executors.newFixedThreadPool(threads)) .pipeline(pipelineBuilder.build()).build(); } + public AttributeValueResolver getResolver() { + return resolver; + } + + public void setResolver(AttributeValueResolver resolver) { + this.resolver = resolver; + } + public String getName() { return name; } diff --git a/smart-flow-plugin/smart-flow-enhance-plugin/src/main/java/org/smartboot/plugin/executable/ShellExecutable.java b/smart-flow-plugin/smart-flow-enhance-plugin/src/main/java/org/smartboot/plugin/executable/ShellExecutable.java index ee2f3f9..2e5e538 100644 --- a/smart-flow-plugin/smart-flow-enhance-plugin/src/main/java/org/smartboot/plugin/executable/ShellExecutable.java +++ b/smart-flow-plugin/smart-flow-enhance-plugin/src/main/java/org/smartboot/plugin/executable/ShellExecutable.java @@ -65,8 +65,9 @@ public class ShellExecutable extends AbstractExecutable { this.type = this.type != null ? this.type : ShellType.BASH; String mode = AuxiliaryUtils.isNotBlank(file) ? "-f" : "-c"; + String cmd = AuxiliaryUtils.isNotBlank(file) ? file : executeCmd; - String[] cmdArray = new String[] {this.type.getPath(), mode, executeCmd}; + String[] cmdArray = new String[] {this.type.getPath(), mode, cmd}; exec = Runtime.getRuntime().exec(cmdArray, null, wr); do { diff --git a/smart-flow-plugin/smart-flow-enhance-plugin/src/main/java/org/smartboot/plugin/resovler/DefaultPlaceholderAttributeValueResolver.java b/smart-flow-plugin/smart-flow-enhance-plugin/src/main/java/org/smartboot/plugin/resovler/DefaultPlaceholderAttributeValueResolver.java index 7aa29fa..69d4419 100644 --- a/smart-flow-plugin/smart-flow-enhance-plugin/src/main/java/org/smartboot/plugin/resovler/DefaultPlaceholderAttributeValueResolver.java +++ b/smart-flow-plugin/smart-flow-enhance-plugin/src/main/java/org/smartboot/plugin/resovler/DefaultPlaceholderAttributeValueResolver.java @@ -22,7 +22,7 @@ public class DefaultPlaceholderAttributeValueResolver extends AttributeValueReso } @Override - protected Object earlyResolve(String value) { + protected String earlyResolve(String value) { try { return resolver.resolve(value); } catch (Exception e) { diff --git a/smart-flow-spring-extension/src/main/java/org/smartboot/flow/spring/extension/BeanDefinitionVisitor.java b/smart-flow-spring-extension/src/main/java/org/smartboot/flow/spring/extension/BeanDefinitionVisitor.java index 8f9538a..2af4121 100644 --- a/smart-flow-spring-extension/src/main/java/org/smartboot/flow/spring/extension/BeanDefinitionVisitor.java +++ b/smart-flow-spring-extension/src/main/java/org/smartboot/flow/spring/extension/BeanDefinitionVisitor.java @@ -28,6 +28,7 @@ import org.springframework.beans.BeansException; import org.springframework.beans.PropertyValue; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.BeanFactoryAware; +import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.beans.factory.config.RuntimeBeanReference; import org.springframework.beans.factory.support.BeanDefinitionRegistry; @@ -46,8 +47,6 @@ import java.util.stream.Collectors; */ public class BeanDefinitionVisitor implements DefinitionVisitor, BeanFactoryAware { - private static final String BEAN_MARK = "#"; - private ParserContext context; /** @@ -229,17 +228,17 @@ public class BeanDefinitionVisitor implements DefinitionVisitor, BeanFactoryAwar return def; } - // maybe bean #beanName# - if (!value.startsWith(BEAN_MARK) || !value.endsWith(BEAN_MARK)) { - return value; - } + // maybe bean beanName + try { + if (register.getBeanDefinition(value) != null) { + new RuntimeBeanReference(value.trim()); + } + } catch (NoSuchBeanDefinitionException ignored) { - String beanName = value.replace(BEAN_MARK, ""); - if (AuxiliaryUtils.isBlank(beanName)) { - return value; } - return new RuntimeBeanReference(beanName.trim()); + + return value; } @Override -- Gitee From b18b68157df1187abfb35fdac5fab7fe490bf7ef Mon Sep 17 00:00:00 2001 From: qinluo <1558642210@qq.com> Date: Tue, 27 Jun 2023 00:34:17 +0800 Subject: [PATCH 05/11] =?UTF-8?q?qinluo:=20=20=20=20=20=20-=20=E5=AE=9E?= =?UTF-8?q?=E6=97=B6=E7=AE=A1=E7=90=86=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EngineManagementController.java | 62 +++++++++++++++++++ .../flow/admin/controller/ReportQuery.java | 29 +++++++++ .../flow/admin/mapper/EngineMetricMapper.java | 24 +++++++ .../resources/mapper/EngineMetricsMapper.xml | 31 ++++++++++ .../src/main/resources/schema.sql | 1 + 5 files changed, 147 insertions(+) create mode 100644 smart-flow-admin/src/main/java/org/smartboot/smart/flow/admin/controller/EngineManagementController.java diff --git a/smart-flow-admin/src/main/java/org/smartboot/smart/flow/admin/controller/EngineManagementController.java b/smart-flow-admin/src/main/java/org/smartboot/smart/flow/admin/controller/EngineManagementController.java new file mode 100644 index 0000000..8109865 --- /dev/null +++ b/smart-flow-admin/src/main/java/org/smartboot/smart/flow/admin/controller/EngineManagementController.java @@ -0,0 +1,62 @@ +package org.smartboot.smart.flow.admin.controller; + +import com.alibaba.fastjson.JSON; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.smartboot.smart.flow.admin.Result; +import org.smartboot.smart.flow.admin.mapper.EngineMetricMapper; +import org.smartboot.smart.flow.admin.model.EngineMetrics; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author yamikaze + * @date 2023/6/26 22:12 + * @since 1.1.1 + */ +@RestController +@RequestMapping("/api/management/") +@ResponseBody +public class EngineManagementController { + + private static final Logger LOGGER = LoggerFactory.getLogger(EngineManagementController.class); + + @Autowired + private EngineMetricMapper engineMetricMapper; + + @GetMapping("/engines") + public String managementEngines() { + ReportQuery query = new ReportQuery(); + query.setStartTime(new Date(System.currentTimeMillis() - 10*60*1000)); + List flatEngines = engineMetricMapper.selectEngines(query); + Map>> engineGroup = new HashMap<>(32); + flatEngines.forEach(p -> { + Map> engineMap = engineGroup.computeIfAbsent(p.getEngineName(), k -> new HashMap<>()); + List hosts = engineMap.computeIfAbsent(p.getMd5(), k -> new ArrayList<>()); + hosts.add(p.getHost()); + }); + + return Result.ok(engineGroup); + } + + @PostMapping("/metrics_view") + public String metricsList(@RequestBody ReportQuery query) { + LOGGER.info("query \n {}", JSON.toJSONString(query)); + query.setStartTime(new Date(System.currentTimeMillis() - 10*60*1000)); + List maxIds = engineMetricMapper.queryLastestRecordIds(query); + List engineMetrics = engineMetricMapper.listByIdList(maxIds); + + return Result.ok(engineMetrics); + } +} diff --git a/smart-flow-admin/src/main/java/org/smartboot/smart/flow/admin/controller/ReportQuery.java b/smart-flow-admin/src/main/java/org/smartboot/smart/flow/admin/controller/ReportQuery.java index 29def65..eb6e66f 100644 --- a/smart-flow-admin/src/main/java/org/smartboot/smart/flow/admin/controller/ReportQuery.java +++ b/smart-flow-admin/src/main/java/org/smartboot/smart/flow/admin/controller/ReportQuery.java @@ -1,6 +1,8 @@ package org.smartboot.smart.flow.admin.controller; import java.io.Serializable; +import java.util.Date; +import java.util.List; /** * @author qinluo @@ -18,6 +20,9 @@ public class ReportQuery implements Serializable { private Integer pageNo = 1; private Integer pageSize = 10; private Integer start; + private List hosts; + private String md5; + private Date startTime; public Integer getStart() { return start; @@ -66,4 +71,28 @@ public class ReportQuery implements Serializable { public void setTraceId(String traceId) { this.traceId = traceId; } + + public List getHosts() { + return hosts; + } + + public void setHosts(List hosts) { + this.hosts = hosts; + } + + public String getMd5() { + return md5; + } + + public void setMd5(String md5) { + this.md5 = md5; + } + + public Date getStartTime() { + return startTime; + } + + public void setStartTime(Date startTime) { + this.startTime = startTime; + } } diff --git a/smart-flow-admin/src/main/java/org/smartboot/smart/flow/admin/mapper/EngineMetricMapper.java b/smart-flow-admin/src/main/java/org/smartboot/smart/flow/admin/mapper/EngineMetricMapper.java index ab44d2e..39c105f 100644 --- a/smart-flow-admin/src/main/java/org/smartboot/smart/flow/admin/mapper/EngineMetricMapper.java +++ b/smart-flow-admin/src/main/java/org/smartboot/smart/flow/admin/mapper/EngineMetricMapper.java @@ -46,4 +46,28 @@ public interface EngineMetricMapper { * @return cnt. */ long count(@Param("query") ReportQuery query); + + /** + * List flat engines + * + * @param query query condition + * @return list. + */ + List selectEngines(@Param("query") ReportQuery query); + + /** + * List max ids. + * + * @param query query condition + * @return list. + */ + List queryLastestRecordIds(@Param("query") ReportQuery query); + + /** + * List by id list. + * + * @param idList query condition + * @return list. + */ + List listByIdList(@Param("ids") List idList); } diff --git a/smart-flow-admin/src/main/resources/mapper/EngineMetricsMapper.xml b/smart-flow-admin/src/main/resources/mapper/EngineMetricsMapper.xml index e54b689..44c2275 100644 --- a/smart-flow-admin/src/main/resources/mapper/EngineMetricsMapper.xml +++ b/smart-flow-admin/src/main/resources/mapper/EngineMetricsMapper.xml @@ -54,4 +54,35 @@ + + + + + \ No newline at end of file diff --git a/smart-flow-admin/src/main/resources/schema.sql b/smart-flow-admin/src/main/resources/schema.sql index 649ecad..71992dc 100644 --- a/smart-flow-admin/src/main/resources/schema.sql +++ b/smart-flow-admin/src/main/resources/schema.sql @@ -49,6 +49,7 @@ CREATE TABLE IF NOT EXISTS `engine_table_metrics`( PRIMARY KEY (`id`), KEY `idx_engine_name` (`engine_name`), KEY `idx_host` (`host`), + KEY `idx_created`(`created`), KEY `idx_report_time` (`report_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='引擎执行数据表'; -- Gitee From 9f8805ccbe90eabfeac1eaa2cbb6a4e79b62a430 Mon Sep 17 00:00:00 2001 From: qinluo <1558642210@qq.com> Date: Tue, 27 Jun 2023 19:42:51 +0800 Subject: [PATCH 06/11] =?UTF-8?q?qinluo:=20=20=20=20=20=20-=20=E5=AE=9E?= =?UTF-8?q?=E6=97=B6=E8=A7=86=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: qinluo <1558642210@qq.com> --- dashboard/src/api/module/api.ts | 8 + dashboard/src/router/module/base-routes.ts | 2 +- dashboard/src/views/EngineManager/index.vue | 498 +++++++++++++++++- pom.xml | 4 +- smart-flow-admin/pom.xml | 2 +- .../EngineManagementController.java | 67 ++- .../admin/controller/EnginesController.java | 3 +- .../admin/controller/G6ConfigController.java | 28 - .../admin/controller/ReportController.java | 3 +- .../g6/ManagementViewEngineAnalyzer.java | 64 +++ .../flow/admin/g6/MetricsEngineAnalyzer.java | 4 +- .../flow/admin/mapper/EngineMetricMapper.java | 2 +- smart-flow-core/pom.xml | 2 +- smart-flow-helper/pom.xml | 3 +- smart-flow-manager/pom.xml | 2 +- smart-flow-plugin/pom.xml | 2 +- .../smart-flow-bootstrap/pom.xml | 2 +- .../smart-flow-enhance-plugin/pom.xml | 2 +- smart-flow-script/pom.xml | 2 +- .../smart-flow-script-groovy/pom.xml | 2 +- .../smart-flow-script-ognl/pom.xml | 2 +- .../smart-flow-script-qlexpress/pom.xml | 2 +- smart-flow-spring-extension/pom.xml | 2 +- smart-flow-springboot-starter/pom.xml | 2 +- 24 files changed, 650 insertions(+), 60 deletions(-) delete mode 100644 smart-flow-admin/src/main/java/org/smartboot/smart/flow/admin/controller/G6ConfigController.java create mode 100644 smart-flow-admin/src/main/java/org/smartboot/smart/flow/admin/g6/ManagementViewEngineAnalyzer.java diff --git a/dashboard/src/api/module/api.ts b/dashboard/src/api/module/api.ts index edd4a80..8052cce 100644 --- a/dashboard/src/api/module/api.ts +++ b/dashboard/src/api/module/api.ts @@ -66,4 +66,12 @@ export const g6_detail_save = function (param: any) { export const standard_attributes = function () { return Http.get('/api/engines/standard_attributes'); +} + +export const management_engines = function () { + return Http.get('/api/management/engines'); +} + +export const management_view = function (param: any) { + return Http.post('/api/management/metrics_view', param); } \ No newline at end of file diff --git a/dashboard/src/router/module/base-routes.ts b/dashboard/src/router/module/base-routes.ts index 8d9286b..d3c81d9 100644 --- a/dashboard/src/router/module/base-routes.ts +++ b/dashboard/src/router/module/base-routes.ts @@ -85,7 +85,7 @@ export default [ { path: '/engine-manager/engines-list', component: () => import('../../views/EngineManager/index.vue'), - meta: {title: '引擎列表', requireAuth: true}, + meta: {title: '实时视图', requireAuth: true}, }, ] }, diff --git a/dashboard/src/views/EngineManager/index.vue b/dashboard/src/views/EngineManager/index.vue index f4c1bac..ec772e7 100644 --- a/dashboard/src/views/EngineManager/index.vue +++ b/dashboard/src/views/EngineManager/index.vue @@ -1,7 +1,495 @@ \ No newline at end of file + +
+ + +

基本信息

+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ + + +
+
+ +
+ +
+
+ +
+
+
+ +

脚本信息

+
+ +
+ +
+
+ +
+
+
+ +
+
+
+ +
+ +
+ +
+
+ +
+
+
+
+ +
+
+
+
+ +

运行信息

+
+ +
+ +
+
+ +
+ + +
+
+ + + +
+
+
+ + +
+ + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 1beb359..601c327 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.smartboot.flow smart-flow-parent - 1.1.0 + 1.1.1-SNAPSHOT 4.0.0 pom smart-flow @@ -23,7 +23,7 @@ - 1.1.0 + 1.1.1-SNAPSHOT https://gitee.com/smartboot/smart-flow diff --git a/smart-flow-admin/pom.xml b/smart-flow-admin/pom.xml index 9d312c1..6e80f71 100644 --- a/smart-flow-admin/pom.xml +++ b/smart-flow-admin/pom.xml @@ -5,7 +5,7 @@ smart-flow-parent org.smartboot.flow - 1.1.0 + 1.1.1-SNAPSHOT 4.0.0 diff --git a/smart-flow-admin/src/main/java/org/smartboot/smart/flow/admin/controller/EngineManagementController.java b/smart-flow-admin/src/main/java/org/smartboot/smart/flow/admin/controller/EngineManagementController.java index 8109865..80bebcc 100644 --- a/smart-flow-admin/src/main/java/org/smartboot/smart/flow/admin/controller/EngineManagementController.java +++ b/smart-flow-admin/src/main/java/org/smartboot/smart/flow/admin/controller/EngineManagementController.java @@ -3,10 +3,19 @@ package org.smartboot.smart.flow.admin.controller; import com.alibaba.fastjson.JSON; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.smartboot.flow.core.FlowEngine; +import org.smartboot.flow.core.util.AssertUtil; +import org.smartboot.flow.core.util.AuxiliaryUtils; +import org.smartboot.flow.core.visitor.EngineCyclicVisitor; import org.smartboot.smart.flow.admin.Result; +import org.smartboot.smart.flow.admin.g6.G6EngineVisitor; +import org.smartboot.smart.flow.admin.g6.ManagementViewEngineAnalyzer; import org.smartboot.smart.flow.admin.mapper.EngineMetricMapper; +import org.smartboot.smart.flow.admin.mapper.EngineSnapshotMapper; import org.smartboot.smart.flow.admin.model.EngineMetrics; +import org.smartboot.smart.flow.admin.model.EngineSnapshot; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -19,6 +28,8 @@ import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; /** * @author yamikaze @@ -26,7 +37,7 @@ import java.util.Map; * @since 1.1.1 */ @RestController -@RequestMapping("/api/management/") +@RequestMapping(value = "/api/management/", produces = MediaType.APPLICATION_JSON_VALUE) @ResponseBody public class EngineManagementController { @@ -35,28 +46,70 @@ public class EngineManagementController { @Autowired private EngineMetricMapper engineMetricMapper; + @Autowired + private EngineSnapshotMapper snapshotMapper; + @GetMapping("/engines") public String managementEngines() { ReportQuery query = new ReportQuery(); query.setStartTime(new Date(System.currentTimeMillis() - 10*60*1000)); List flatEngines = engineMetricMapper.selectEngines(query); - Map>> engineGroup = new HashMap<>(32); + + List engines = new ArrayList<>(16); + Map> engineVersions = new HashMap<>(16); + Map> versionHosts = new HashMap<>(16); + flatEngines.forEach(p -> { - Map> engineMap = engineGroup.computeIfAbsent(p.getEngineName(), k -> new HashMap<>()); - List hosts = engineMap.computeIfAbsent(p.getMd5(), k -> new ArrayList<>()); + engines.add(p.getEngineName()); + List versions = engineVersions.computeIfAbsent(p.getEngineName(), k -> new ArrayList<>()); + versions.add(p.getMd5()); + + List hosts = versionHosts.computeIfAbsent(p.getMd5(), k -> new ArrayList<>()); hosts.add(p.getHost()); }); + Map engineGroup = new HashMap<>(4); + engineGroup.put("engines", engines); + engineGroup.put("versions", engineVersions); + engineGroup.put("hosts", versionHosts); + return Result.ok(engineGroup); } + private List emptyIfNull(List list) { + return list != null ? list : new ArrayList<>(0); + } + @PostMapping("/metrics_view") public String metricsList(@RequestBody ReportQuery query) { LOGGER.info("query \n {}", JSON.toJSONString(query)); query.setStartTime(new Date(System.currentTimeMillis() - 10*60*1000)); - List maxIds = engineMetricMapper.queryLastestRecordIds(query); - List engineMetrics = engineMetricMapper.listByIdList(maxIds); + List hosts = emptyIfNull(query.getHosts()).stream().filter(p -> !Objects.equals(p, "-1")).collect(Collectors.toList()); + if (AuxiliaryUtils.isNotBlank(query.getHost()) && !Objects.equals(query.getHost(), "-1")) { + hosts.add(query.getHost()); + } + + query.setHosts(hosts.size() > 0 ? hosts : null); + List maxIds = engineMetricMapper.queryLastestRecordIds(query); + if (maxIds.size() == 0) { + return Result.fail(500, "no data"); + } + + List engineMetrics = engineMetricMapper.listByIdList(maxIds.stream().map(EngineMetrics::getId).collect(Collectors.toList())); + EngineSnapshot snapshot = snapshotMapper.detail(query.getEngineName(), query.getMd5()); + + // Validate and ensure name. + FlowEngine engine = WebUtils.parseValidate(snapshot.getContent(), false); + AssertUtil.notNull(engine, "Sanity Check"); + + G6EngineVisitor g6Visitor = new G6EngineVisitor(); + engine.accept(new EngineCyclicVisitor(g6Visitor)); - return Result.ok(engineMetrics); + engineMetrics.add(engineMetrics.get(0)); + List contents = engineMetrics.stream().map(EngineMetrics::getContent).collect(Collectors.toList()); + ManagementViewEngineAnalyzer analyzer = new ManagementViewEngineAnalyzer(contents); + g6Visitor.getResult().getNodes().forEach(analyzer::analyze); + g6Visitor.getResult().getCombos().forEach(analyzer::analyze); + return Result.ok(g6Visitor.getResult()); } } diff --git a/smart-flow-admin/src/main/java/org/smartboot/smart/flow/admin/controller/EnginesController.java b/smart-flow-admin/src/main/java/org/smartboot/smart/flow/admin/controller/EnginesController.java index 7475c5c..790c4d8 100644 --- a/smart-flow-admin/src/main/java/org/smartboot/smart/flow/admin/controller/EnginesController.java +++ b/smart-flow-admin/src/main/java/org/smartboot/smart/flow/admin/controller/EnginesController.java @@ -21,6 +21,7 @@ import org.smartboot.smart.flow.admin.mapper.EngineMapper; import org.smartboot.smart.flow.admin.model.EngineConfig; import org.smartboot.smart.flow.admin.model.EngineHistory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -45,7 +46,7 @@ import java.util.stream.Stream; * @since 1.0.0 */ @RestController -@RequestMapping("/api/engines") +@RequestMapping(value = "/api/engines", produces = MediaType.APPLICATION_JSON_VALUE) @ResponseBody public class EnginesController { diff --git a/smart-flow-admin/src/main/java/org/smartboot/smart/flow/admin/controller/G6ConfigController.java b/smart-flow-admin/src/main/java/org/smartboot/smart/flow/admin/controller/G6ConfigController.java deleted file mode 100644 index b952e1d..0000000 --- a/smart-flow-admin/src/main/java/org/smartboot/smart/flow/admin/controller/G6ConfigController.java +++ /dev/null @@ -1,28 +0,0 @@ -package org.smartboot.smart.flow.admin.controller; - -import org.smartboot.smart.flow.admin.Result; -import org.smartboot.smart.flow.admin.mapper.EngineG6ConfigMapper; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -/** - * @author qinluo - * @date 2023-02-16 - * @since 1.0.0 - */ -@RestController -@RequestMapping("/api/g6/") -@ResponseBody -public class G6ConfigController { - - @Autowired - private EngineG6ConfigMapper g6ConfigMapper; - - @RequestMapping("/save") - public String save(@RequestBody Object value) { - return Result.ok(true); - } -} diff --git a/smart-flow-admin/src/main/java/org/smartboot/smart/flow/admin/controller/ReportController.java b/smart-flow-admin/src/main/java/org/smartboot/smart/flow/admin/controller/ReportController.java index e922a44..8dba76f 100644 --- a/smart-flow-admin/src/main/java/org/smartboot/smart/flow/admin/controller/ReportController.java +++ b/smart-flow-admin/src/main/java/org/smartboot/smart/flow/admin/controller/ReportController.java @@ -23,6 +23,7 @@ import org.smartboot.smart.flow.admin.model.EngineTrace; import org.smartboot.smart.flow.admin.util.DateUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DuplicateKeyException; +import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -43,7 +44,7 @@ import java.util.Map; * @since 1.0.7 */ @RestController -@RequestMapping("/api/report") +@RequestMapping(value = "/api/report", produces = MediaType.APPLICATION_JSON_VALUE) @ResponseBody public class ReportController { diff --git a/smart-flow-admin/src/main/java/org/smartboot/smart/flow/admin/g6/ManagementViewEngineAnalyzer.java b/smart-flow-admin/src/main/java/org/smartboot/smart/flow/admin/g6/ManagementViewEngineAnalyzer.java new file mode 100644 index 0000000..99e84a2 --- /dev/null +++ b/smart-flow-admin/src/main/java/org/smartboot/smart/flow/admin/g6/ManagementViewEngineAnalyzer.java @@ -0,0 +1,64 @@ +package org.smartboot.smart.flow.admin.g6; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import org.smartboot.flow.manager.metric.NamedMetrics; + +import java.util.List; +import java.util.Objects; + +/** + * @author qinluo + * @date 2023/2/18 0:49 + * @since 1.1.1 + */ +public class ManagementViewEngineAnalyzer extends MetricsEngineAnalyzer { + + + public ManagementViewEngineAnalyzer(List contents) { + super("[]"); + for (String content : contents) { + JSONArray jsonArray = JSONObject.parseArray(content); + for (int i = 0; i < jsonArray.size(); i++) { + JSONObject item = jsonArray.getJSONObject(i); + String name = item.getString("name"); + JSONObject exist = metricsMap.get(name); + metricsMap.put(name, merge(item, exist)); + } + } + + } + + private JSONObject merge(JSONObject current, JSONObject exist) { + if (exist == null) { + return current; + } + + JSONObject currentMetrics = current.getJSONObject("metrics"); + JSONObject existMetrics = exist.getJSONObject("metrics"); + + if (currentMetrics == null) { + return exist; + } + + currentMetrics.forEach((k, v) -> { + Object value = existMetrics.get(k); + if (value == null) { + existMetrics.put(k, v); + } else if (Objects.equals(k, "started")){ + existMetrics.put(k, v); + } else if (Objects.equals(k, NamedMetrics.MAX_ESCAPE) || Objects.equals(k, NamedMetrics.ROLLBACK_MAX_ESCAPE)){ + long v1 = currentMetrics.getLongValue(k); + long v2 = existMetrics.getLongValue(k); + existMetrics.put(k, Math.max(v1, v2)); + } else { + long v1 = currentMetrics.getLongValue(k); + long v2 = existMetrics.getLongValue(k); + existMetrics.put(k, v1 + v2); + } + + }); + exist.put("metrics", existMetrics); + return exist; + } +} diff --git a/smart-flow-admin/src/main/java/org/smartboot/smart/flow/admin/g6/MetricsEngineAnalyzer.java b/smart-flow-admin/src/main/java/org/smartboot/smart/flow/admin/g6/MetricsEngineAnalyzer.java index 20862b6..50924ae 100644 --- a/smart-flow-admin/src/main/java/org/smartboot/smart/flow/admin/g6/MetricsEngineAnalyzer.java +++ b/smart-flow-admin/src/main/java/org/smartboot/smart/flow/admin/g6/MetricsEngineAnalyzer.java @@ -19,7 +19,7 @@ import java.util.Objects; */ public class MetricsEngineAnalyzer extends EngineAnalyzer { - private final Map metricsMap; + protected final Map metricsMap; public MetricsEngineAnalyzer(String content) { this.metricsMap = new HashMap<>(32); @@ -104,6 +104,8 @@ public class MetricsEngineAnalyzer extends EngineAnalyzer { private void processKeys(JSONObject jsonObject) { JSONObject newJson = new JSONObject(); + jsonObject.remove(NamedMetrics.TOTAL_ESCAPE); + jsonObject.remove(NamedMetrics.ROLLBACK_TOTAL_ESCAPE); jsonObject.forEach((k,v) -> { if (Objects.equals(NamedMetrics.MAX_ESCAPE, k)) { diff --git a/smart-flow-admin/src/main/java/org/smartboot/smart/flow/admin/mapper/EngineMetricMapper.java b/smart-flow-admin/src/main/java/org/smartboot/smart/flow/admin/mapper/EngineMetricMapper.java index 39c105f..8d20c3c 100644 --- a/smart-flow-admin/src/main/java/org/smartboot/smart/flow/admin/mapper/EngineMetricMapper.java +++ b/smart-flow-admin/src/main/java/org/smartboot/smart/flow/admin/mapper/EngineMetricMapper.java @@ -61,7 +61,7 @@ public interface EngineMetricMapper { * @param query query condition * @return list. */ - List queryLastestRecordIds(@Param("query") ReportQuery query); + List queryLastestRecordIds(@Param("query") ReportQuery query); /** * List by id list. diff --git a/smart-flow-core/pom.xml b/smart-flow-core/pom.xml index a557091..ee71dc0 100644 --- a/smart-flow-core/pom.xml +++ b/smart-flow-core/pom.xml @@ -5,7 +5,7 @@ org.smartboot.flow smart-flow-parent - 1.1.0 + 1.1.1-SNAPSHOT 4.0.0 diff --git a/smart-flow-helper/pom.xml b/smart-flow-helper/pom.xml index 9f72998..69fc3fe 100644 --- a/smart-flow-helper/pom.xml +++ b/smart-flow-helper/pom.xml @@ -5,7 +5,7 @@ smart-flow-parent org.smartboot.flow - 1.1.0 + 1.1.1-SNAPSHOT 4.0.0 @@ -14,6 +14,7 @@ 8 8 + UTF-8 diff --git a/smart-flow-manager/pom.xml b/smart-flow-manager/pom.xml index 925b3fa..90a5cb1 100644 --- a/smart-flow-manager/pom.xml +++ b/smart-flow-manager/pom.xml @@ -5,7 +5,7 @@ smart-flow-parent org.smartboot.flow - 1.1.0 + 1.1.1-SNAPSHOT 4.0.0 diff --git a/smart-flow-plugin/pom.xml b/smart-flow-plugin/pom.xml index c69ac0b..c8afe30 100644 --- a/smart-flow-plugin/pom.xml +++ b/smart-flow-plugin/pom.xml @@ -6,7 +6,7 @@ org.smartboot.flow smart-flow-parent - 1.1.0 + 1.1.1-SNAPSHOT smart-flow-plugin diff --git a/smart-flow-plugin/smart-flow-bootstrap/pom.xml b/smart-flow-plugin/smart-flow-bootstrap/pom.xml index 6b3bf21..1db0267 100644 --- a/smart-flow-plugin/smart-flow-bootstrap/pom.xml +++ b/smart-flow-plugin/smart-flow-bootstrap/pom.xml @@ -6,7 +6,7 @@ org.smartboot.flow smart-flow-plugin - 1.1.0 + 1.1.1-SNAPSHOT smart-flow-bootstrap diff --git a/smart-flow-plugin/smart-flow-enhance-plugin/pom.xml b/smart-flow-plugin/smart-flow-enhance-plugin/pom.xml index 1f7e011..b86217c 100644 --- a/smart-flow-plugin/smart-flow-enhance-plugin/pom.xml +++ b/smart-flow-plugin/smart-flow-enhance-plugin/pom.xml @@ -6,7 +6,7 @@ org.smartboot.flow smart-flow-plugin - 1.1.0 + 1.1.1-SNAPSHOT smart-flow-enhance-plugin diff --git a/smart-flow-script/pom.xml b/smart-flow-script/pom.xml index 77e2dfd..3370a18 100644 --- a/smart-flow-script/pom.xml +++ b/smart-flow-script/pom.xml @@ -5,7 +5,7 @@ smart-flow-parent org.smartboot.flow - 1.1.0 + 1.1.1-SNAPSHOT 4.0.0 pom diff --git a/smart-flow-script/smart-flow-script-groovy/pom.xml b/smart-flow-script/smart-flow-script-groovy/pom.xml index 8897c78..8317a63 100644 --- a/smart-flow-script/smart-flow-script-groovy/pom.xml +++ b/smart-flow-script/smart-flow-script-groovy/pom.xml @@ -5,7 +5,7 @@ smart-flow-script org.smartboot.flow - 1.1.0 + 1.1.1-SNAPSHOT 4.0.0 diff --git a/smart-flow-script/smart-flow-script-ognl/pom.xml b/smart-flow-script/smart-flow-script-ognl/pom.xml index df38bfc..f24d9ea 100644 --- a/smart-flow-script/smart-flow-script-ognl/pom.xml +++ b/smart-flow-script/smart-flow-script-ognl/pom.xml @@ -5,7 +5,7 @@ smart-flow-script org.smartboot.flow - 1.1.0 + 1.1.1-SNAPSHOT 4.0.0 diff --git a/smart-flow-script/smart-flow-script-qlexpress/pom.xml b/smart-flow-script/smart-flow-script-qlexpress/pom.xml index 5c14de5..bd62b30 100644 --- a/smart-flow-script/smart-flow-script-qlexpress/pom.xml +++ b/smart-flow-script/smart-flow-script-qlexpress/pom.xml @@ -5,7 +5,7 @@ smart-flow-script org.smartboot.flow - 1.1.0 + 1.1.1-SNAPSHOT 4.0.0 diff --git a/smart-flow-spring-extension/pom.xml b/smart-flow-spring-extension/pom.xml index cee56b0..013a25c 100644 --- a/smart-flow-spring-extension/pom.xml +++ b/smart-flow-spring-extension/pom.xml @@ -5,7 +5,7 @@ smart-flow-parent org.smartboot.flow - 1.1.0 + 1.1.1-SNAPSHOT 4.0.0 diff --git a/smart-flow-springboot-starter/pom.xml b/smart-flow-springboot-starter/pom.xml index ddcef2f..00b6971 100644 --- a/smart-flow-springboot-starter/pom.xml +++ b/smart-flow-springboot-starter/pom.xml @@ -5,7 +5,7 @@ smart-flow-parent org.smartboot.flow - 1.1.0 + 1.1.1-SNAPSHOT 4.0.0 -- Gitee From 4a3255ea13885593ab454a5d63a67a5c23c70852 Mon Sep 17 00:00:00 2001 From: qinluo <1558642210@qq.com> Date: Tue, 27 Jun 2023 22:09:10 +0800 Subject: [PATCH 07/11] =?UTF-8?q?qinluo:=20=20=20=20=20=20-=20=E5=AE=9E?= =?UTF-8?q?=E6=97=B6=E8=A7=86=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: qinluo <1558642210@qq.com> --- .../src/main/resources/mapper/EngineMetricsMapper.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/smart-flow-admin/src/main/resources/mapper/EngineMetricsMapper.xml b/smart-flow-admin/src/main/resources/mapper/EngineMetricsMapper.xml index 44c2275..5627768 100644 --- a/smart-flow-admin/src/main/resources/mapper/EngineMetricsMapper.xml +++ b/smart-flow-admin/src/main/resources/mapper/EngineMetricsMapper.xml @@ -62,7 +62,7 @@