From 1ac8fe883ea5a9d9f1935b1e65000e950d09e35d Mon Sep 17 00:00:00 2001 From: wangshaoping Date: Mon, 16 Jun 2025 21:26:24 +0800 Subject: [PATCH] =?UTF-8?q?=E5=89=8D=E7=AB=AF=E6=A0=B8=E5=BF=83=E5=8F=91?= =?UTF-8?q?=E5=B8=83:=208.2.80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 基础框架发布: 8.2.18 1) 规则引擎中,支持对资源和模型不同的深度复制策略: a. 资源深度复制, 只创建代码和名称不同的资源,不修改其模型的代码和名称 b. 模型和子模型的深度复制, 其下的所有实体均修改代码和名称 c. 对于模型参数为指标的参数, 不修改器代码和名称。 --- app.platform/build.gradle | 2 +- .../dictionary/entity/DictionaryEntity.java | 2 +- .../dictionary/entity/EnumDictionaryEntity.java | 2 +- .../server/dictionary/entity/EnumItemEntity.java | 2 +- .../UserDefinedJavaClassDictionaryEntity.java | 2 +- .../entity/UserDefinedJavaClassFieldEntity.java | 2 +- .../server/function/entity/FunctionEntity.java | 2 +- .../rule/server/lib/entity/IndicatorEntity.java | 2 +- .../server/lib/entity/IndicatorLibEntity.java | 2 +- .../lib/entity/IndicatorProcessorEntity.java | 2 +- .../lib/entity/IndicatorValidatorEntity.java | 2 +- .../engine/rule/server/lib/entity/LibEntity.java | 2 +- .../rule/server/model/entity/ModelEntity.java | 12 +++++++----- .../rule/server/model/entity/ParameterEntity.java | 9 ++++++--- .../entity/ParameterInOptionAdditionEntity.java | 2 +- .../model/entity/ParameterInOptionItemEntity.java | 2 +- .../model/entity/ParameterProcessorEntity.java | 2 +- .../model/entity/ParameterValidatorEntity.java | 2 +- .../entity/parameter/InOptionParameterEntity.java | 2 +- .../parameter/IndicatorParameterEntity.java | 15 +++++++++++++++ .../resource/entity/ModelResourceEntity.java | 4 ++-- .../server/resource/entity/ResourceEntity.java | 2 +- .../server/testcase/entity/TestCaseEntity.java | 2 +- .../testcase/entity/TestCaseParameterEntity.java | 2 +- .../main/java/io/sc/platform/orm/DeepClone.java | 2 +- 25 files changed, 51 insertions(+), 31 deletions(-) diff --git a/app.platform/build.gradle b/app.platform/build.gradle index d898be0f..8de830e0 100644 --- a/app.platform/build.gradle +++ b/app.platform/build.gradle @@ -1,4 +1,4 @@ -apply plugin: 'war' +yapply plugin: 'war' apply plugin: 'com.google.cloud.tools.jib' apply from: "build-common.gradle" diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/dictionary/entity/DictionaryEntity.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/dictionary/entity/DictionaryEntity.java index 753baab1..ba626f1f 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/dictionary/entity/DictionaryEntity.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/dictionary/entity/DictionaryEntity.java @@ -216,7 +216,7 @@ public class DictionaryEntity extends CorporationAuditorEntity imp } @Override - public Object deepClone() throws Exception{ + public Object deepClone(Object... args) throws Exception{ DictionaryEntity entity =this.getClass().newInstance(); BeanUtils.copyProperties(this, entity, "children"); //children diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/dictionary/entity/EnumDictionaryEntity.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/dictionary/entity/EnumDictionaryEntity.java index 7a7bd01b..719ad61e 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/dictionary/entity/EnumDictionaryEntity.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/dictionary/entity/EnumDictionaryEntity.java @@ -73,7 +73,7 @@ public class EnumDictionaryEntity extends DictionaryEntity { } @Override - public Object deepClone() throws Exception { + public Object deepClone(Object... args) throws Exception { EnumDictionaryEntity entity =new EnumDictionaryEntity(); BeanUtils.copyProperties(this, entity, "children","items"); diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/dictionary/entity/EnumItemEntity.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/dictionary/entity/EnumItemEntity.java index dc91fcc9..2a653bab 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/dictionary/entity/EnumItemEntity.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/dictionary/entity/EnumItemEntity.java @@ -140,7 +140,7 @@ public class EnumItemEntity extends CorporationAuditorEntity impleme this.dictionary = dictionary; } - public Object deepClone() { + public Object deepClone(Object... args) { EnumItemEntity entity =new EnumItemEntity(); BeanUtils.copyProperties(this, entity); return entity; diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/dictionary/entity/UserDefinedJavaClassDictionaryEntity.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/dictionary/entity/UserDefinedJavaClassDictionaryEntity.java index 1100d875..30c324d5 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/dictionary/entity/UserDefinedJavaClassDictionaryEntity.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/dictionary/entity/UserDefinedJavaClassDictionaryEntity.java @@ -76,7 +76,7 @@ public class UserDefinedJavaClassDictionaryEntity extends DictionaryEntity { } @Override - public Object deepClone() throws Exception { + public Object deepClone(Object... args) throws Exception { UserDefinedJavaClassDictionaryEntity entity =new UserDefinedJavaClassDictionaryEntity(); BeanUtils.copyProperties(this, entity, "children","fields"); diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/dictionary/entity/UserDefinedJavaClassFieldEntity.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/dictionary/entity/UserDefinedJavaClassFieldEntity.java index d7abf2e5..6dac3a3a 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/dictionary/entity/UserDefinedJavaClassFieldEntity.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/dictionary/entity/UserDefinedJavaClassFieldEntity.java @@ -253,7 +253,7 @@ public class UserDefinedJavaClassFieldEntity extends CorporationAuditorEntity impleme } @Override - public Object deepClone() throws Exception { + public Object deepClone(Object... args) throws Exception { FunctionEntity entity =new FunctionEntity(); BeanUtils.copyProperties(this, entity); return entity; diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/entity/IndicatorEntity.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/entity/IndicatorEntity.java index 8725ddc4..1a684b70 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/entity/IndicatorEntity.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/entity/IndicatorEntity.java @@ -224,7 +224,7 @@ public class IndicatorEntity extends CorporationAuditorEntity imple this.lib = lib; } @Override - public Object deepClone() throws Exception { + public Object deepClone(Object... args) throws Exception { IndicatorEntity entity =this.getClass().newInstance(); BeanUtils.copyProperties(this, entity,"validators","processors"); diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/entity/IndicatorLibEntity.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/entity/IndicatorLibEntity.java index ebcea571..ceb73bcf 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/entity/IndicatorLibEntity.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/entity/IndicatorLibEntity.java @@ -48,7 +48,7 @@ public class IndicatorLibEntity extends LibEntity { } @Override - public Object deepClone() throws Exception { + public Object deepClone(Object... args) throws Exception { IndicatorLibEntity entity =new IndicatorLibEntity(); BeanUtils.copyProperties(this, entity, "children","indicators","testCases"); diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/entity/IndicatorProcessorEntity.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/entity/IndicatorProcessorEntity.java index 98a080d6..78b57a61 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/entity/IndicatorProcessorEntity.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/entity/IndicatorProcessorEntity.java @@ -122,7 +122,7 @@ public class IndicatorProcessorEntity extends CorporationAuditorEntity implements DeepCl } @Override - public Object deepClone() throws Exception{ + public Object deepClone(Object... args) throws Exception{ LibEntity entity =this.getClass().newInstance(); BeanUtils.copyProperties(this, entity, "children"); //children diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/ModelEntity.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/ModelEntity.java index 4e324e66..3fc36220 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/ModelEntity.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/ModelEntity.java @@ -234,14 +234,14 @@ public class ModelEntity extends CorporationAuditorEntity implements De } @Override - public Object deepClone() throws Exception{ + public Object deepClone(Object... args) throws Exception{ ModelEntity entity =this.getClass().newInstance(); BeanUtils.copyProperties(this, entity, "children","parameters"); //深度拷贝 children List children =this.getChildren(); if(children!=null && children.size()>0) { for(ModelEntity child : children) { - ModelEntity clone =(ModelEntity)child.deepClone(); + ModelEntity clone =(ModelEntity)child.deepClone(args); clone.setParent(entity); entity.getChildren().add(clone); } @@ -252,15 +252,17 @@ public class ModelEntity extends CorporationAuditorEntity implements De List parameters =this.getParameters(); if(parameters!=null && parameters.size()>0) { for(ParameterEntity parameter : parameters) { - ParameterEntity clone =(ParameterEntity)parameter.deepClone(); + ParameterEntity clone =(ParameterEntity)parameter.deepClone(args); clone.setModel(entity); entity.getParameters().add(clone); parameterCodeMapping.put(parameter.getCode(),clone.getCode()); } } entity.clearId(); - entity.setCode("M"+System.currentTimeMillis()); - entity.setName(entity.getName() + "_NEW"); + if(args==null || args.length==0 || !ResourceEntity.class.equals(args[0])) { + entity.setCode("M" + System.currentTimeMillis()); + entity.setName(entity.getName() + "_NEW"); + } List clonedParameters =entity.getParameters(); if(clonedParameters!=null && clonedParameters.size()>0) { diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/ParameterEntity.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/ParameterEntity.java index fab11470..5729711e 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/ParameterEntity.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/ParameterEntity.java @@ -5,6 +5,7 @@ import com.fasterxml.jackson.annotation.JsonTypeInfo; import io.sc.engine.rule.core.enums.ParameterType; import io.sc.engine.rule.server.model.entity.parameter.*; import io.sc.engine.rule.server.model.vo.ParameterVo; +import io.sc.engine.rule.server.resource.entity.ResourceEntity; import io.sc.engine.rule.server.testcase.annotation.TestCaseParameterAble; import io.sc.engine.rule.server.testcase.wrapper.TestCaseParameterWrapper; import io.sc.platform.orm.DeepClone; @@ -253,7 +254,7 @@ public class ParameterEntity extends CorporationAuditorEntity imple } @Override - public Object deepClone() throws Exception{ + public Object deepClone(Object... args) throws Exception{ ParameterEntity entity =this.getClass().newInstance(); BeanUtils.copyProperties(this, entity,"validators","processors"); @@ -278,8 +279,10 @@ public class ParameterEntity extends CorporationAuditorEntity imple } entity.clearId(); - entity.setCode("P"+System.currentTimeMillis()); - entity.setName(entity.getName() + "_NEW"); + if(args==null || args.length==0 || !ResourceEntity.class.equals(args[0])) { + entity.setCode("P" + System.currentTimeMillis()); + entity.setName(entity.getName() + "_NEW"); + } return entity; } diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/ParameterInOptionAdditionEntity.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/ParameterInOptionAdditionEntity.java index 121738cd..0bc3cd0e 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/ParameterInOptionAdditionEntity.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/ParameterInOptionAdditionEntity.java @@ -247,7 +247,7 @@ public class ParameterInOptionAdditionEntity extends CorporationAuditorEntity impleme } @Override - public Object deepClone() throws Exception{ + public Object deepClone(Object... args) throws Exception{ ResourceEntity entity =this.getClass().newInstance(); BeanUtils.copyProperties(this, entity, "children","testCases","roles"); //children diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/entity/TestCaseEntity.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/entity/TestCaseEntity.java index 3ba8294c..5415e8a7 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/entity/TestCaseEntity.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/entity/TestCaseEntity.java @@ -165,7 +165,7 @@ public class TestCaseEntity extends CorporationAuditorEntity impleme } @Override - public Object deepClone() throws Exception{ + public Object deepClone(Object... args) throws Exception{ TestCaseEntity entity =this.getClass().newInstance(); BeanUtils.copyProperties(this, entity, "parameters"); diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/entity/TestCaseParameterEntity.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/entity/TestCaseParameterEntity.java index 28d2f78a..37613f2a 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/entity/TestCaseParameterEntity.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/entity/TestCaseParameterEntity.java @@ -144,7 +144,7 @@ public class TestCaseParameterEntity extends CorporationAuditorEntity