diff --git a/pom.xml b/pom.xml index 29221ebabf11af25956be72ba704dbc67788bf9d..fe3506de73181504cf1c15e111e6b4e2f06565c1 100644 --- a/pom.xml +++ b/pom.xml @@ -47,6 +47,9 @@ web-npmpackage-patch web-dynamic-form-api web-dynamic-form-core + web-approval-format-api + web-approval-format-core + @@ -540,6 +543,24 @@ 0.1.1 compile + + io.iec.edp + caf-boot-starter-context + 1.1.3-SNAPSHOT + compile + + + io.iec.edp + caf-context-api + 1.3.0-rc.3 + compile + + + io.iec.edp + caf-boot-core-context + 0.3.9 + compile + diff --git a/runtime-core/pom.xml b/runtime-core/pom.xml index 5936091f840c99ddd49be40ec11fe4a824bc123b..f3a78724144a9d8ffeee53481783ced6a3e3e64a 100644 --- a/runtime-core/pom.xml +++ b/runtime-core/pom.xml @@ -48,6 +48,10 @@ com.inspur.edp web-jitengine + + com.inspur.edp + web-jitengine-formmetadata + io.iec.edp caf-boot-tenancy-api diff --git a/runtime-core/src/main/java/com/inspur/edp/web/jitruntimebuild/core/formjsonfilegenerator/FrmJsonFileGenerator.java b/runtime-core/src/main/java/com/inspur/edp/web/jitruntimebuild/core/formjsonfilegenerator/FrmJsonFileGenerator.java index 723b7389b6aed16157fe191ea0744332d4710ea7..f1f3b30dc7338422f8c5ddc7f368b5558a989787 100644 --- a/runtime-core/src/main/java/com/inspur/edp/web/jitruntimebuild/core/formjsonfilegenerator/FrmJsonFileGenerator.java +++ b/runtime-core/src/main/java/com/inspur/edp/web/jitruntimebuild/core/formjsonfilegenerator/FrmJsonFileGenerator.java @@ -16,7 +16,6 @@ package com.inspur.edp.web.jitruntimebuild.core.formjsonfilegenerator; -import com.inspur.edp.cdp.web.component.metadata.define.WebComponentMetadata; import com.inspur.edp.i18n.resource.api.metadata.ResourceMetadata; import com.inspur.edp.lcm.metadata.api.entity.*; import com.inspur.edp.web.common.environment.ExecuteEnvironment; @@ -29,14 +28,10 @@ import com.inspur.edp.web.common.serialize.SerializeUtility; import com.inspur.edp.web.common.utility.StringUtility; import com.inspur.edp.web.formmetadata.metadata.formdom.FormDOM; +import com.inspur.edp.web.formmetadata.metadataanalysis.*; +import com.inspur.edp.web.formmetadata.metadataanalysis.form.AnalysisExternalComponentResult; import com.inspur.edp.web.jitengine.expressions.*; import com.inspur.edp.web.jitengine.expressions.utility.ExpressionUtility; -import com.inspur.edp.web.jitengine.metadataanalysis.CommandsAnalysis; -import com.inspur.edp.web.jitengine.metadataanalysis.EapiAnalysis; -import com.inspur.edp.web.jitengine.metadataanalysis.FormAnalysis; -import com.inspur.edp.web.jitengine.metadataanalysis.StateMachineAnalysis; -import com.inspur.edp.web.jitengine.metadatamodel.app.form.AnalysisExternalComponentResult; -import com.inspur.edp.web.jitengine.metadataparser.commandservice.CommandServiceAnalysis; import com.inspur.edp.web.jitruntimebuild.core.constant.FormJsonFileSuffixConstant; @@ -88,7 +83,7 @@ public class FrmJsonFileGenerator extends AbstractFormJsonFileGenerator implemen expressionManifest.getExpressions().add(moduleFormExpressions); } - HashMap projectWebCmd = new HashMap<>(); + HashMap projectWebCmd = new HashMap<>(); this.executeExternalComponent(visualDom, basePath, basePath + "/services", basePath, basePath, projectWebCmd, expressionManifest); // 写入表单表达式json文件 @@ -110,10 +105,10 @@ public class FrmJsonFileGenerator extends AbstractFormJsonFileGenerator implemen // 反序列化表单元数据 FormDOM json = SerializeUtility.getInstance().deserialize(content, FormDOM.class); CommandsAnalysis commandsAnalysis = new CommandsAnalysis(this.getExecuteEnvironment(), this.isUpdradeTool()); - HashMap projectCmpList = new HashMap<>(); + HashMap projectCmpList = new HashMap<>(); try { fileName = fileName + ".frm"; - commandsAnalysis.resolveCommand(json, fileName, basePath, projectCmpList, null, fileName); + commandsAnalysis.resolveCommand(CommandsAnalysis.ResolveCommandParameter.init(null, json), fileName, basePath, projectCmpList, null, fileName); } catch (Exception e) { WebLogger.Instance.error(e); } @@ -215,7 +210,7 @@ public class FrmJsonFileGenerator extends AbstractFormJsonFileGenerator implemen * 处理扩展组件 */ private void executeExternalComponent(FormDOM json, String targetStorageBasePath, String formServicePath, String projectPath, - String webdevpath, HashMap projectCmpList, ExpressionManifest expressionManifest) { + String webdevpath, HashMap projectCmpList, ExpressionManifest expressionManifest) { if (json != null && json.getModule() != null && json.getModule().getExternalComponents() != null && json.getModule().getExternalComponents().size() > 0) { for (HashMap item : json.getModule().getExternalComponents()) { @@ -293,7 +288,7 @@ public class FrmJsonFileGenerator extends AbstractFormJsonFileGenerator implemen private void resolveFormMetadataWithVisualDom(GspMetadata formMetadata, FormDOM formDom, String targetStorageBasePath, String relativePath, String formServiceBasePath, - String projectPath, HashMap projectCmpList, + String projectPath, HashMap projectCmpList, String webDevPath, ExpressionManifest expressionManifest) throws Exception { String formMetadataName = formMetadata.getHeader().getFileName(); // 临时注释,方便调试 @@ -302,7 +297,7 @@ public class FrmJsonFileGenerator extends AbstractFormJsonFileGenerator implemen // // // Step 3: Resolve Command CommandsAnalysis commandsAnalysis = new CommandsAnalysis(this.getExecuteEnvironment(), this.isUpdradeTool()); - commandsAnalysis.resolveCommand(formDom, formMetadataName, targetStorageBasePath, projectCmpList, webDevPath, null); + commandsAnalysis.resolveCommand(CommandsAnalysis.ResolveCommandParameter.init(formMetadata,formDom), formMetadataName, targetStorageBasePath, projectCmpList, webDevPath, null); // // // Step 4: Resolve eapi EapiAnalysis eapiAnalysis = new EapiAnalysis(this.getExecuteEnvironment(), this.isUpdradeTool()); diff --git a/toout.bat b/toout.bat index ed885d65012212821654f549bdc1c7275c3b874a..fc3fac75472c67b77b31e8727f32bb8f5f3fb1b7 100644 --- a/toout.bat +++ b/toout.bat @@ -38,8 +38,8 @@ COPY .\web-frontendproject-api\target\web-jitengine-frontendproject-api-%version COPY .\web-designschema\target\web-designschema-%version%.jar .\out\server\platform\common\libs\web-designschema.jar COPY .\web-designschema-api\target\web-designschema-api-%version%.jar .\out\server\platform\common\libs\web-designschema-api.jar -#COPY .\web-dynamic-form-api\target\web-dynamicform-api-%version%.jar .\out\server\platform\common\libs\web-dynamicform-api.jar -#COPY .\web-dynamic-form-core\target\web-dynamicform-core-%version%.jar .\out\server\platform\common\libs\web-dynamicform-core.jar +COPY .\web-dynamic-form-api\target\web-dynamicform-api-%version%.jar .\out\server\platform\common\libs\web-dynamicform-api.jar +COPY .\web-dynamic-form-core\target\web-dynamicform-core-%version%.jar .\out\server\platform\common\libs\web-dynamicform-core.jar COPY .\web-pageflow-metadata\target\web-pageflow-metadata-%version%.jar .\out\server\platform\common\libs\web-pageflow-metadata.jar COPY .\web-statemachine\target\web-statemachine-metadata-%version%.jar .\out\server\platform\common\libs\web-statemachine-metadata.jar diff --git a/web-common/src/main/java/com/inspur/edp/web/common/environment/ExecuteEnvironment.java b/web-common/src/main/java/com/inspur/edp/web/common/environment/ExecuteEnvironment.java index d18f205c328af8027296acc499d17e97af28d2d9..105085fb9dce522bdbeb309264b7fdf94a9fa47b 100644 --- a/web-common/src/main/java/com/inspur/edp/web/common/environment/ExecuteEnvironment.java +++ b/web-common/src/main/java/com/inspur/edp/web/common/environment/ExecuteEnvironment.java @@ -16,6 +16,8 @@ package com.inspur.edp.web.common.environment; +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; + /** * 运行环境 位置 分为设计时及运行时、元数据部署工具 * diff --git a/web-common/src/main/java/com/inspur/edp/web/common/io/NodejsFunctionUtility.java b/web-common/src/main/java/com/inspur/edp/web/common/io/NodejsFunctionUtility.java index cbd29a04ab8aacc51e05da1ca2df5f0844c620f8..c94723c1ecfd030b0533a5eeb1fd7b4ceb36d941 100644 --- a/web-common/src/main/java/com/inspur/edp/web/common/io/NodejsFunctionUtility.java +++ b/web-common/src/main/java/com/inspur/edp/web/common/io/NodejsFunctionUtility.java @@ -72,6 +72,10 @@ public class NodejsFunctionUtility { private static String getNodeJsCommandWithNodeJsPath(NodeJsCommandEnum nodeJsCommandEnum, String nodeJsPath, String currentServerPath) { + // 如果是mac系统 那么直接使用其对应的命令 + if (OperatingSystemUtility.isMac()) { + return nodeJsCommandEnum.commandName(); + } boolean hasNodePackage = FileUtility.exists(nodeJsPath); String nodeCommand = "node"; // 如果是linux系统 移除link 指定npm、npx命令 且在linux环境下 diff --git a/web-common/src/main/java/com/inspur/edp/web/common/serialize/SerializeUtility.java b/web-common/src/main/java/com/inspur/edp/web/common/serialize/SerializeUtility.java index 38099df64d9da8874f91a8e18753dbf482d01a9c..2823c0fc7d4eef9889482d82691a99753b54ae2c 100644 --- a/web-common/src/main/java/com/inspur/edp/web/common/serialize/SerializeUtility.java +++ b/web-common/src/main/java/com/inspur/edp/web/common/serialize/SerializeUtility.java @@ -97,7 +97,7 @@ public class SerializeUtility { * @return the t * @description Json反序列化 */ - public T deserialize(String contentString, Class valueType) { + public T deserialize(String contentString, Class valueType) { return deserialize(this.defaultObjectMapper, contentString, valueType); } diff --git a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/service/DynamicCreateFormMetadataServiceImpl.java b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/service/DynamicCreateFormMetadataServiceImpl.java index 3f2592aca4e977153e45b14a68c433d4625f0dfc..75b3fbed68e31bb53a1881e820aa0b58931b3b31 100644 --- a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/service/DynamicCreateFormMetadataServiceImpl.java +++ b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/service/DynamicCreateFormMetadataServiceImpl.java @@ -112,6 +112,9 @@ public class DynamicCreateFormMetadataServiceImpl implements DynamicCreateFormMe Schema schema = schemaBuilder.buildWithScene(gspViewModel, "", false); schema.setId(voMetadata.getHeader().getId()); schema.setCode(metadataInfoItem.getCode()); + schema.setEapiId(metadataInfoItem.getEapiMetadataId()); + schema.setEapiCode(metadataInfoItem.getEapiMetadataCode()); + schema.setEapiName(metadataInfoItem.getEapiMetadataName()); // 设置对应eapi的sourceUri // 如果未传递对应的sourceUri 那么使用当前表单进行自定义uri diff --git a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/webservice/DynamicFormWebServiceImpl.java b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/webservice/DynamicFormWebServiceImpl.java index cd94cc68f01664e220b864fa448db1670604477a..0120e97f78972577a86107b98ce0dba4afd8766e 100644 --- a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/webservice/DynamicFormWebServiceImpl.java +++ b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/webservice/DynamicFormWebServiceImpl.java @@ -59,9 +59,9 @@ public class DynamicFormWebServiceImpl implements DynamicFormWebService { FormMetadataTemplateInfo formMetadataTemplateInfo = new FormMetadataTemplateInfo(); // 列表使用的模板 new-list-template // 卡片使用的模板 new-card-template - formMetadataTemplateInfo.setTemplateCode("new-list-template"); - formMetadataTemplateInfo.setTemplateName("new-list-template"); - formMetadataTemplateInfo.setTemplateId("new-list-template"); + formMetadataTemplateInfo.setTemplateCode("list-template"); + formMetadataTemplateInfo.setTemplateName("list-template"); + formMetadataTemplateInfo.setTemplateId("list-template"); formMetadataInfo.setTemplateInfo(formMetadataTemplateInfo); parameter.getFormMetadataInfoList().add(formMetadataInfo); @@ -77,9 +77,9 @@ public class DynamicFormWebServiceImpl implements DynamicFormWebService { FormMetadataTemplateInfo formMetadataTemplateInfoCard = new FormMetadataTemplateInfo(); // 列表使用的模板 new-list-template // 卡片使用的模板 new-card-template - formMetadataTemplateInfoCard.setTemplateCode("new-card-template"); - formMetadataTemplateInfoCard.setTemplateName("new-card-template"); - formMetadataTemplateInfoCard.setTemplateId("new-card-template"); + formMetadataTemplateInfoCard.setTemplateCode("card-template"); + formMetadataTemplateInfoCard.setTemplateName("card-template"); + formMetadataTemplateInfoCard.setTemplateId("card-template"); formMetadataInfoCard.setTemplateInfo(formMetadataTemplateInfoCard); parameter.getFormMetadataInfoList().add(formMetadataInfoCard); diff --git a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/JITEngineManager.java b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/JITEngineManager.java index ba2ac03f6150bdbeffd19533623c061c1b201939..e6d24b5810617268edcab7a4470c12b85014aa6b 100644 --- a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/JITEngineManager.java +++ b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/JITEngineManager.java @@ -16,7 +16,6 @@ package com.inspur.edp.web.jitengine; -import com.inspur.edp.cdp.web.component.metadata.define.WebComponentMetadata; import com.inspur.edp.lcm.metadata.api.entity.*; import com.inspur.edp.web.common.constant.FrontendProjectConstant; import com.inspur.edp.web.common.customexception.WebCustomException; @@ -34,9 +33,12 @@ import com.inspur.edp.web.common.metadata.MetadataUtility; import com.inspur.edp.web.common.utility.*; import com.inspur.edp.web.formmetadata.i18n.constant.I18nResourceConstant; import com.inspur.edp.web.formmetadata.metadata.formdom.FormDOM; +import com.inspur.edp.web.formmetadata.metadataanalysis.*; +import com.inspur.edp.web.formmetadata.metadataanalysis.form.AnalysisExternalComponentResult; +import com.inspur.edp.web.formmetadata.metadataanalysis.form.FormComponentParser; +import com.inspur.edp.web.formmetadata.resolver.ResolveFormMetadataItem; import com.inspur.edp.web.formmetadata.service.FormMetataService; import com.inspur.edp.web.frontendproject.entity.FrontendProjectGenerateParameter; -import com.inspur.edp.web.frontendproject.entity.resolver.ResolveFormMetadataItem; import com.inspur.edp.web.jitengine.babelgrnerate.GenerateForBabel; import com.inspur.edp.web.jitengine.dynamicform.DynamicFormModuleOperation; import com.inspur.edp.web.jitengine.expressions.ExpressionFormGenerator; @@ -45,9 +47,6 @@ import com.inspur.edp.web.jitengine.expressions.ModuleFormExpressions; import com.inspur.edp.web.jitengine.expressions.utility.ExpressionUtility; import com.inspur.edp.web.jitengine.i18nresource.GenerateResourceManager; import com.inspur.edp.web.jitengine.i18nresource.GeneratedI18nResourceList; -import com.inspur.edp.web.jitengine.metadataanalysis.*; -import com.inspur.edp.web.jitengine.metadataanalysis.form.FormComponentParser; -import com.inspur.edp.web.jitengine.metadatamodel.app.form.AnalysisExternalComponentResult; import com.inspur.edp.web.jitruntimebuild.api.entity.JitBuildParameter; import com.inspur.edp.web.npmpackage.api.entity.NpmInstallParameter; import com.inspur.edp.web.npmpackage.api.entity.NpmPackageResponse; @@ -276,7 +275,7 @@ public class JITEngineManager { * * @return */ - public static void ResolveFormMetadata(ResolveFormMetadataItem resolveFormMetadataItem, String baseFormPath, String projectPath, String targetStorageBasePath, String formServiceBasePath, HashMap projectCmpList, + public static void ResolveFormMetadata(ResolveFormMetadataItem resolveFormMetadataItem, String baseFormPath, String projectPath, String targetStorageBasePath, String formServiceBasePath, HashMap projectCmpList, GeneratedI18nResourceList i18nResourceList, GeneratedI18nResourceList zhI18nResourceList, GeneratedI18nResourceList zhCHTI18nResourceList, ExpressionManifest expressionManifest, String i18nResourceKeyPrefix, ExecuteEnvironment executeEnvironment, boolean isUpdradeTool) { FormAnalysis formAnalysis = new FormAnalysis(ExecuteEnvironment.Design, false); @@ -296,7 +295,8 @@ public class JITEngineManager { // 如果是单个表单解析预览 那么保存表单元数据内容 if (resolveFormMetadataItem.getCalculateIsDynamicForm()) { - DynamicFormModuleOperation.saveForMetadataJs(json, targetStorageBasePath, json.getModule().getCode()); + // 屏蔽metadata.js 的保存 + // DynamicFormModuleOperation.saveForMetadataJs(json, targetStorageBasePath, json.getModule().getCode()); } // 拷贝package.json 文件到当前目录 @@ -318,7 +318,7 @@ public class JITEngineManager { } private static void ResolveFormMetadataWithVisualDom(ResolveFormMetadataItem resolveFormMetadataItem, String baseFormPath, FormDOM formDom, String targetStorageBasePath, String relativePath, - String formServiceBasePath, String projectPath, HashMap projectCmpList, + String formServiceBasePath, String projectPath, HashMap projectCmpList, String webDevPath, GeneratedI18nResourceList i18nResourceList, GeneratedI18nResourceList zhI18nResourceList, GeneratedI18nResourceList zhCHTI18nResourceList, ExpressionManifest expressionManifest, String containerId, @@ -339,7 +339,7 @@ public class JITEngineManager { // Resolve Command // 增加是否解析表单参数 如果为解析表单 那么不再生成对应的command.json 文件 CommandsAnalysis commandsAnalysis = new CommandsAnalysis(ExecuteEnvironment.Design, false, !resolveFormMetadataItem.getCalculateIsDynamicForm()); - commandsAnalysis.resolveCommand(formDom, formMetadataName, targetStorageBasePath, projectCmpList, webDevPath, null); + commandsAnalysis.resolveCommand(CommandsAnalysis.ResolveCommandParameter.init(resolveFormMetadataItem.getGspMetadata(), formDom), formMetadataName, targetStorageBasePath, projectCmpList, webDevPath, null); if (!resolveFormMetadataItem.getCalculateIsDynamicForm()) { // Resolve Eapi @@ -379,7 +379,7 @@ public class JITEngineManager { * 处理扩展组件 */ private static void executeExternalComponent(FormDOM json, String baseFormPath, String targetStorageBasePath, String formServicePath, String projectPath, - HashMap projectCmpList, String webdevpath, + HashMap projectCmpList, String webdevpath, GeneratedI18nResourceList i18nResourceList, GeneratedI18nResourceList zhI18nResourceList, GeneratedI18nResourceList zhCHTI18nResourceList, ExpressionManifest expressionManifest, String i18nResourceKeyPrefix, ExecuteEnvironment executeEnvironment, boolean isUpdradeTool) { @@ -391,7 +391,7 @@ public class JITEngineManager { AnalysisExternalComponentResult externalVisualDom; // 判断是否是弹窗Url形式 - if (item.containsKey("contentType") && item.getOrDefault("type", "").toString().equals("ModalContainer") && item.get("contentType").toString().equals("url")) { + if (item.containsKey("contentType") && StringUtility.getOrDefault(item.get("type"), "").equals("ModalContainer") && item.get("contentType").toString().equals("url")) { externalVisualDom = null; // 如果是弹窗URL 那么不解析对应元数据 } else { diff --git a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataparser/commandservice/CommandServiceAnalysis.java b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataparser/commandservice/CommandServiceAnalysis.java deleted file mode 100644 index 28490da9a1896e004bd96578dfae3b547c5bc60f..0000000000000000000000000000000000000000 --- a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataparser/commandservice/CommandServiceAnalysis.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (c) 2020 - present, Inspur Genersoft Co., Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.inspur.edp.web.jitengine.metadataparser.commandservice; - -import com.inspur.edp.web.common.environment.ExecuteEnvironment; -import com.inspur.edp.web.common.io.FileUtility; -import com.inspur.edp.web.common.utility.StringUtility; -import com.inspur.edp.web.formmetadata.metadata.formdom.FormDOM; -import com.inspur.edp.web.formmetadata.metadatamanager.CommandServiceManager; - -import java.util.HashMap; - -/** - * description: - * - * @author Noah Guo - * @date 2021/01/14 - */ -public class CommandServiceAnalysis { - public static void resolveCommandService(FormDOM json, String path, String targetStoragePath, - String webDevPath, ExecuteEnvironment executeEnvironment, boolean isUpdradeTool) { - - if (json != null && json.getModule() != null && json.getModule().getServiceRefs() != null - && json.getModule().getServiceRefs().size() > 0) { - String code = json.getModule().getCode(); - for (HashMap serviceRefsObject : json.getModule().getServiceRefs()) { - if (serviceRefsObject.get("isCommon").toString().equals("0")) { - String fileName = FileUtility.getFileName(serviceRefsObject.get("path").toString()); - - String contents = CommandServiceManager.getTypescriptFileContent(path, webDevPath, serviceRefsObject, executeEnvironment, isUpdradeTool); - if (StringUtility.isNullOrEmpty(contents)) { - return; - } - String destDirectory = FileUtility.combine(targetStoragePath, code.toLowerCase(), "services"); - boolean isPathExists = FileUtility.exists(destDirectory); - if (!isPathExists) { - FileUtility.createDirectory(destDirectory); - } - - FileUtility.writeFile(destDirectory, fileName.toLowerCase(), contents); - - } - } - } - } -} - diff --git a/web-form-metadata-api/src/main/java/com/inspur/edp/web/formmetadata/api/dto/FormRelateMetadataInDesignResultDto.java b/web-form-metadata-api/src/main/java/com/inspur/edp/web/formmetadata/api/dto/FormRelateMetadataInDesignResultDto.java index 24d30f2f256d18c48aa7cb24bc3eae7db5f4e3a8..85c97f592685e910d499e18d15e4e19585995779 100644 --- a/web-form-metadata-api/src/main/java/com/inspur/edp/web/formmetadata/api/dto/FormRelateMetadataInDesignResultDto.java +++ b/web-form-metadata-api/src/main/java/com/inspur/edp/web/formmetadata/api/dto/FormRelateMetadataInDesignResultDto.java @@ -1,6 +1,7 @@ package com.inspur.edp.web.formmetadata.api.dto; import com.inspur.edp.lcm.metadata.api.IMetadataContent; +import com.inspur.edp.web.formmetadata.api.entity.FormSuInfoEntity; /** * 表单关联元数据设计时获取返回结果 @@ -9,21 +10,53 @@ import com.inspur.edp.lcm.metadata.api.IMetadataContent; */ public class FormRelateMetadataInDesignResultDto { public FormRelateMetadataInDesignResultDto(RelateMetadataTypeEnum relateMetadataType, - String metadataName, String metadataId, - IMetadataContent metadataContent) { + String metadataName, String metadataFileName, String metadataId, + IMetadataContent metadataContent, String relativePath) { this.metadataType = relateMetadataType; this.metadataContent = metadataContent; this.metadataName = metadataName; this.metadataId = metadataId; + this.relativePath = relativePath; + this.metadataFileName = metadataFileName; + } + + public FormRelateMetadataInDesignResultDto(RelateMetadataTypeEnum relateMetadataType, + String metadataName, String metadataFileName, String metadataId, + IMetadataContent metadataContent, String relativePath, FormSuInfoEntity suInfo) { + this.metadataType = relateMetadataType; + this.metadataContent = metadataContent; + this.metadataName = metadataName; + this.metadataId = metadataId; + this.suInfo = suInfo; + this.relativePath = relativePath; + this.metadataFileName = metadataFileName; } private String metadataName; + + private String metadataFileName; private String metadataId; // 元数据类型 private RelateMetadataTypeEnum metadataType; // 元数据内容 private IMetadataContent metadataContent; + /** + * 元数据的相对路径参数 + */ + private String relativePath; + + /** + * 关联的表单元数据id 仅限于和表单有关联的元数据 + */ + private String relateFormMetadataId; + + /** + * 对应的su信息 + * 当前仅设置表单元数据所属的SU Info信息 + */ + private FormSuInfoEntity suInfo; + public String getMetadataName() { return metadataName; } @@ -39,4 +72,28 @@ public class FormRelateMetadataInDesignResultDto { public IMetadataContent getMetadataContent() { return metadataContent; } + + public FormSuInfoEntity getSuInfo() { + return suInfo; + } + + public void setSuInfo(FormSuInfoEntity suInfo) { + this.suInfo = suInfo; + } + + public String getRelativePath() { + return relativePath; + } + + public String getMetadataFileName() { + return metadataFileName; + } + + public String getRelateFormMetadataId() { + return relateFormMetadataId; + } + + public void setRelateFormMetadataId(String relateFormMetadataId) { + this.relateFormMetadataId = relateFormMetadataId; + } } \ No newline at end of file diff --git a/web-form-metadata-api/src/main/java/com/inspur/edp/web/formmetadata/api/dto/RelateMetadataTypeEnum.java b/web-form-metadata-api/src/main/java/com/inspur/edp/web/formmetadata/api/dto/RelateMetadataTypeEnum.java index e5c27d741e0e911fcab0e9b1bdf137c1c136b5e4..e94c6c490571165e79d7b194703e4aeffac2c8b1 100644 --- a/web-form-metadata-api/src/main/java/com/inspur/edp/web/formmetadata/api/dto/RelateMetadataTypeEnum.java +++ b/web-form-metadata-api/src/main/java/com/inspur/edp/web/formmetadata/api/dto/RelateMetadataTypeEnum.java @@ -22,6 +22,12 @@ public enum RelateMetadataTypeEnum { public String getName() { return "Command"; } + }, + Component{ + @Override + public String getName() { + return "Component"; + } }; /** diff --git a/web-form-metadata/pom.xml b/web-form-metadata/pom.xml index 517294abc1f1889e21d70884d86632860b256237..33eb20c50d761bb51ed0dfe78aec667259961a7f 100644 --- a/web-form-metadata/pom.xml +++ b/web-form-metadata/pom.xml @@ -77,6 +77,21 @@ com.inspur.edp web-tsfile-api + + io.iec.edp + caf-boot-starter-context + compile + + + io.iec.edp + caf-context-api + compile + + + io.iec.edp + caf-boot-core-context + compile + diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadata/FormMetadataContentService.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadata/FormMetadataContentService.java index 7bfb70433f257b781d63155e02c3f779119201d7..72e398b3cebac2aa254aa90349e600b8286f5324 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadata/FormMetadataContentService.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadata/FormMetadataContentService.java @@ -36,6 +36,11 @@ public class FormMetadataContentService { return formMetadataService; } + /** + * 依据表单元数据反序列化其为FormDom + * @param formMetadataContent + * @return + */ public final FormDOM getFormContent(FormMetadataContent formMetadataContent) { String sourceContent = SerializeUtility.getInstance().serialize(formMetadataContent.getContents(), false); return SerializeUtility.getInstance().deserialize(sourceContent, FormDOM.class); diff --git a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/CommandServiceAnalysis.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadataanalysis/CommandServiceAnalysis.java similarity index 82% rename from web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/CommandServiceAnalysis.java rename to web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadataanalysis/CommandServiceAnalysis.java index deab9bd10b077fb26c8661092d16802a0b90b923..a4678e09c116d5da5cfad5ba78dd639a377466c0 100644 --- a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/CommandServiceAnalysis.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadataanalysis/CommandServiceAnalysis.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.inspur.edp.web.jitengine.metadataanalysis; +package com.inspur.edp.web.formmetadata.metadataanalysis; import com.inspur.edp.web.common.environment.ExecuteEnvironment; import com.inspur.edp.web.common.io.FileUtility; @@ -25,7 +25,7 @@ import com.inspur.edp.web.common.utility.CommandLineUtility; import com.inspur.edp.web.common.utility.StringUtility; import com.inspur.edp.web.formmetadata.metadata.formdom.FormDOM; import com.inspur.edp.web.formmetadata.metadatamanager.CommandServiceManager; -import com.inspur.edp.web.frontendproject.entity.resolver.ResolveFormMetadataItem; +import com.inspur.edp.web.formmetadata.resolver.ResolveFormMetadataItem; import org.apache.commons.io.FilenameUtils; import java.util.HashMap; @@ -157,4 +157,31 @@ public class CommandServiceAnalysis { } } } + + public static void resolveCommandService(FormDOM json, String path, String targetStoragePath, + String webDevPath, ExecuteEnvironment executeEnvironment, boolean isUpdradeTool) { + + if (json != null && json.getModule() != null && json.getModule().getServiceRefs() != null + && json.getModule().getServiceRefs().size() > 0) { + String code = json.getModule().getCode(); + for (HashMap serviceRefsObject : json.getModule().getServiceRefs()) { + if (serviceRefsObject.get("isCommon").toString().equals("0")) { + String fileName = FileUtility.getFileName(serviceRefsObject.get("path").toString()); + + String contents = CommandServiceManager.getTypescriptFileContent(path, webDevPath, serviceRefsObject, executeEnvironment, isUpdradeTool); + if (StringUtility.isNullOrEmpty(contents)) { + return; + } + String destDirectory = FileUtility.combine(targetStoragePath, code.toLowerCase(), "services"); + boolean isPathExists = FileUtility.exists(destDirectory); + if (!isPathExists) { + FileUtility.createDirectory(destDirectory); + } + + FileUtility.writeFile(destDirectory, fileName.toLowerCase(), contents); + + } + } + } + } } diff --git a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/CommandsAnalysis.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadataanalysis/CommandsAnalysis.java similarity index 40% rename from web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/CommandsAnalysis.java rename to web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadataanalysis/CommandsAnalysis.java index 3a0479779b6f31ab32346ac99abd90ecb6311892..f3e260955a4377a072d86b361b7efaa3d8b7d784 100644 --- a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/CommandsAnalysis.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadataanalysis/CommandsAnalysis.java @@ -14,22 +14,35 @@ * limitations under the License. */ -package com.inspur.edp.web.jitengine.metadataanalysis; +package com.inspur.edp.web.formmetadata.metadataanalysis; import com.inspur.edp.cdp.web.component.metadata.define.WebComponentMetadata; import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; import com.inspur.edp.web.command.component.metadata.*; +import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.common.environment.ExecuteEnvironment; import com.inspur.edp.web.common.logger.WebLogger; import com.inspur.edp.web.common.metadata.MetadataGetterParameter; import com.inspur.edp.web.common.metadata.MetadataTypeEnum; import com.inspur.edp.web.common.serialize.SerializeUtility; import com.inspur.edp.web.common.utility.StringUtility; +import com.inspur.edp.web.formmetadata.api.dto.FormRelateMetadataInDesignResultDto; +import com.inspur.edp.web.formmetadata.api.dto.RelateMetadataTypeEnum; import com.inspur.edp.web.formmetadata.metadata.formdom.FormDOM; import com.inspur.edp.web.formmetadata.metadatamanager.CommandsMetadataManager; import com.inspur.edp.web.formmetadata.metadatamanager.ComponentMetadataManager; - -import java.util.*; +import io.iec.edp.caf.boot.context.CAFContext; +import io.iec.edp.caf.core.session.CafSession; +import lombok.Data; +import lombok.Getter; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.atomic.AtomicInteger; /** * 命令解析 @@ -43,6 +56,18 @@ public class CommandsAnalysis { // 是否生成command.json 文件 private boolean createCommandJsonFile = true; + /** + * web 命令元数据列表 + */ + private HashMap webCommandsMetadataHashMap; + + public HashMap getWebCommandsMetadataHashMap() { + if (this.webCommandsMetadataHashMap == null) { + this.webCommandsMetadataHashMap = new HashMap<>(); + } + return this.webCommandsMetadataHashMap; + } + public CommandsAnalysis(ExecuteEnvironment executeEnvironment, boolean isUpdradeTool) { this.executeEnvironment = executeEnvironment; this.isUpdradeTool = isUpdradeTool; @@ -52,33 +77,59 @@ public class CommandsAnalysis { this.executeEnvironment = executeEnvironment; this.isUpdradeTool = isUpdradeTool; this.createCommandJsonFile = createCommandJsonFile; + this.webCommandsMetadataHashMap = new HashMap<>(); } - public void resolveCommand(FormDOM json, String formMetadataName, String targetStoragePath, - HashMap projectCmpList, + /** + * resolveCommand 参数 + */ + @Getter + public static class ResolveCommandParameter { + private FormDOM json; + + private GspMetadata formMetadata; + + public static ResolveCommandParameter init(GspMetadata formMetadata, FormDOM formDOM) { + ResolveCommandParameter parameter = new ResolveCommandParameter(); + parameter.json = formDOM; + parameter.formMetadata = formMetadata; + return parameter; + } + } + + public void resolveCommand(ResolveCommandParameter parameter, String formMetadataName, String targetStoragePath, + HashMap projectCmpList, String webDevPath, String fileName) { - HashMap cmpList = new HashMap<>(8); - CommandsMetadataManager cmdManager = new CommandsMetadataManager(this.executeEnvironment, this.isUpdradeTool); - ComponentMetadataManager componentMetadataManager = new ComponentMetadataManager(this.executeEnvironment, this.isUpdradeTool); + HashMap cmpList = new HashMap<>(8); + String strFormRelativePath = parameter.getFormMetadata() == null ? null : parameter.getFormMetadata().getRelativePath(); + CommandsMetadataManager cmdManager = new CommandsMetadataManager(this.executeEnvironment, this.isUpdradeTool, strFormRelativePath); + ComponentMetadataManager componentMetadataManager = new ComponentMetadataManager(this.executeEnvironment, this.isUpdradeTool, strFormRelativePath); StringBuilder sbCommands = new StringBuilder(); sbCommands.append("{"); - if (json.getModule() != null && json.getModule().getWebcmds() != null && json.getModule().getWebcmds().size() > 0) { + if (parameter.getJson().getModule() != null && parameter.getJson().getModule().getWebcmds() != null && parameter.getJson().getModule().getWebcmds().size() > 0) { sbCommands.append("\"commands\":{"); int index = 0; WebCommandsMetadata metadata; String cmdId; - for (HashMap c : json.getModule().getWebcmds()) { + for (HashMap c : parameter.getJson().getModule().getWebcmds()) { if (index > 0) { sbCommands.append(","); } cmdId = c.get("id").toString(); - GspMetadata commandMetadata = cmdManager.getWebCommands(cmdId, c.getOrDefault("code", "").toString(), c.getOrDefault("name", "").toString(), c.getOrDefault("nameSpace", "").toString()); + + GspMetadata commandMetadata = cmdManager.getWebCommands(cmdId, StringUtility.getOrDefault(c.get("code"), ""), StringUtility.getOrDefault(c.get("name"), ""), StringUtility.getOrDefault(c.get("nameSpace"), "")); + + metadata = (WebCommandsMetadata) commandMetadata.getContent(); + + // 写入web 命令元数据 + this.webCommandsMetadataHashMap.put(commandMetadata.getHeader().getId(), WebCommandsMetadataAndExtra.init(metadata, commandMetadata.getHeader().getId(), commandMetadata.getHeader().getName(), commandMetadata.getHeader().getFileName(), commandMetadata.getRelativePath())); + analysisComponentMetadata(metadata, cmpList, null, componentMetadataManager, projectCmpList); try { - analysisServiceRef(json, cmpList); + analysisServiceRef(parameter.getJson(), cmpList); } catch (Exception e) { WebLogger.Instance.error(e); return; @@ -92,24 +143,21 @@ public class CommandsAnalysis { if (cmpList.size() > 0) { sbCommands.append(",\"serviceList\":["); - index = 0; - - Iterator iter = cmpList.entrySet().iterator(); - while (iter.hasNext()) { - HashMap.Entry entry = (HashMap.Entry) iter.next(); - if (index > 0) { + AtomicInteger atomicInteger = new AtomicInteger(0); + cmpList.forEach((k, v) -> { + if (atomicInteger.getAndIncrement() > 0) { sbCommands.append(","); } - sbCommands.append(SerializeUtility.getInstance().serialize(entry.getValue(), false)); - index += 1; - } + sbCommands.append(SerializeUtility.getInstance().serialize(v.getWebComponentMetadata(), false)); + }); + sbCommands.append("]"); } } sbCommands.append("}"); if (StringUtility.isNullOrEmpty(fileName)) { - fileName = json.getModule().getCode().toLowerCase(); + fileName = parameter.getJson().getModule().getCode().toLowerCase(); } if (this.createCommandJsonFile) { cmdManager.saveMetadataFile(targetStoragePath, formMetadataName.toLowerCase() + ".command.json", sbCommands.toString()); @@ -117,9 +165,86 @@ public class CommandsAnalysis { } - private void analysisComponentMetadata(WebCommandsMetadata metadata, HashMap cmpList, + private class RevolveCommandFutureResult { + Map cmpList; + Map webCommandsMetadataAndExtraHashMap; + } + + @Getter + public static class ResolveCommandAsyncParameter { + private CafSession cafSession; + private FormDOM json; + private GspMetadata formMetadata; + + public static ResolveCommandAsyncParameter init(CafSession cafSession, FormDOM formDOM, GspMetadata formMetadata) { + ResolveCommandAsyncParameter parameter = new ResolveCommandAsyncParameter(); + parameter.cafSession = cafSession; + parameter.json = formDOM; + parameter.formMetadata = formMetadata; + return parameter; + } + } + + public void resolveCommandAsync(ResolveCommandAsyncParameter parameter, + Map projectCmpList, + List> completableFutureList, + Map formRelateMetadataInDesignResultDtoConcurrentHashMap + ) { + CommandsMetadataManager cmdManager = new CommandsMetadataManager(this.executeEnvironment, this.isUpdradeTool, parameter.getFormMetadata().getRelativePath()); + + ComponentMetadataManager componentMetadataManager = new ComponentMetadataManager(this.executeEnvironment, this.isUpdradeTool, parameter.getFormMetadata().getRelativePath()); + + if (parameter.getJson().getModule() != null && parameter.getJson().getModule().getWebcmds() != null && parameter.getJson().getModule().getWebcmds().size() > 0) { + // 使用并行流 + parameter.getJson().getModule().getWebcmds().forEach(c -> { + CompletableFuture commandCompletableFuture = CompletableFuture.supplyAsync(() -> { + CAFContext.current.getService().setCurrentThreadPoolSession(parameter.getCafSession()); + Map cmpList = new ConcurrentHashMap<>(8); + Map webCommandsMetadataAndExtraMap = new ConcurrentHashMap<>(); + + String cmdId = c.get("id").toString(); + GspMetadata commandMetadata = cmdManager.getWebCommands(cmdId, StringUtility.getOrDefault(c.get("code"), ""), StringUtility.getOrDefault(c.get("name"), ""), StringUtility.getOrDefault(c.get("nameSpace"),"")); + WebCommandsMetadata metadata = (WebCommandsMetadata) commandMetadata.getContent(); + // 写入web 命令元数据 + webCommandsMetadataAndExtraMap.put(commandMetadata.getHeader().getId(), WebCommandsMetadataAndExtra.init(metadata, commandMetadata.getHeader().getId(), commandMetadata.getHeader().getName(), commandMetadata.getHeader().getFileName(), commandMetadata.getRelativePath())); + analysisComponentMetadata(metadata, cmpList, null, componentMetadataManager, projectCmpList); + try { + analysisServiceRef(parameter.getJson(), cmpList); + } catch (Exception e) { + WebLogger.Instance.error(e); + } + RevolveCommandFutureResult revolveCommandFutureResult = new RevolveCommandFutureResult(); + revolveCommandFutureResult.cmpList = cmpList; + revolveCommandFutureResult.webCommandsMetadataAndExtraHashMap = webCommandsMetadataAndExtraMap; + return revolveCommandFutureResult; + }).thenApply((RevolveCommandFutureResult revolveCommandFutureResult) -> { + Map webCommandsMetadataHashMap = revolveCommandFutureResult.webCommandsMetadataAndExtraHashMap; + if (webCommandsMetadataHashMap != null && !webCommandsMetadataHashMap.isEmpty()) { + webCommandsMetadataHashMap.forEach((k, v) -> { + FormRelateMetadataInDesignResultDto commandMetadataResultDto = new FormRelateMetadataInDesignResultDto(RelateMetadataTypeEnum.Command, v.getMetadataName(), v.getMetadataFileName(), + v.getMetadataId(), v.getWebCommandsMetadata(), v.getMetadataRelativePath()); + formRelateMetadataInDesignResultDtoConcurrentHashMap.put(v.getMetadataId(), commandMetadataResultDto); + }); + } + + if (revolveCommandFutureResult.cmpList != null && !revolveCommandFutureResult.cmpList.isEmpty()) { + revolveCommandFutureResult.cmpList.forEach((k, v) -> { + FormRelateMetadataInDesignResultDto componentMetadataResultDto = new FormRelateMetadataInDesignResultDto(RelateMetadataTypeEnum.Component, v.getMetadataName(), v.getMetadataFileName(), + v.getMetadataId(), v.getWebComponentMetadata(), v.getMetadataRelativePath()); + formRelateMetadataInDesignResultDtoConcurrentHashMap.put(v.getMetadataId(), componentMetadataResultDto); + }); + } + return null; + }); + + completableFutureList.add(commandCompletableFuture); + }); + } + } + + private void analysisComponentMetadata(WebCommandsMetadata metadata, Map cmpList, List items, ComponentMetadataManager cmpManager, - HashMap projectCmpList) { + Map projectCmpList) { if (items == null || items.size() == 0) { if (metadata.getCommands() != null && metadata.getCommands().size() > 0) { for (WebCommand webCommandItem : metadata.getCommands()) { @@ -147,8 +272,8 @@ public class CommandsAnalysis { /// /// /// - private void analysisComponentCommandItemList(List commandItemList, HashMap cmpList, - ComponentMetadataManager cmpManager, HashMap projectCmpList) throws Exception { + private void analysisComponentCommandItemList(List commandItemList, Map cmpList, + ComponentMetadataManager cmpManager, Map projectCmpList) throws Exception { if (commandItemList != null && commandItemList.size() > 0) { if (cmpManager == null) { cmpManager = new ComponentMetadataManager(this.executeEnvironment, this.isUpdradeTool); @@ -166,14 +291,16 @@ public class CommandsAnalysis { throw new Exception("标识为'" + ((CmpMethodRefering) item).getComponentId() + "'的服务构件为null。"); } WebLogger.Instance.info("Get WebCommands By Id:" + cmpMetadata.getId(), this.getClass().getName()); - cmpList.put(cmpMetadata.getId(), cmpMetadata); - projectCmpList.put(cmpMetadata.getId(), cmpMetadata); + WebComponentMetadataAndExtra webComponentMetadataAndExtra = WebComponentMetadataAndExtra.init(cmpMetadata, cmpMethodReferingItem.getComponentId(), cmpMethodReferingItem.getName(), cmpMethodReferingItem.getName(), cmpMethodReferingItem.getComponentPath()); + cmpList.put(cmpMetadata.getId(), webComponentMetadataAndExtra); + projectCmpList.put(cmpMetadata.getId(), webComponentMetadataAndExtra); } catch (Exception ex) { throw new Exception("获取command元数据" + ((CmpMethodRefering) item).getComponentId() + "失败", ex); } } else { - cmpMetadata = projectCmpList.get(((CmpMethodRefering) item).getComponentId()); - cmpList.put(cmpMetadata.getId(), cmpMetadata); + WebComponentMetadataAndExtra webComponentMetadataAndExtra = projectCmpList.get(((CmpMethodRefering) item).getComponentId()); + cmpMetadata = webComponentMetadataAndExtra.getWebComponentMetadata(); + cmpList.put(cmpMetadata.getId(), webComponentMetadataAndExtra); } } break; @@ -188,31 +315,57 @@ public class CommandsAnalysis { } } - private void analysisServiceRef(FormDOM json, HashMap cmpList) throws Exception { - if (cmpList != null && cmpList.size() > 0) { + private void analysisServiceRef(FormDOM json, Map cmpList) throws Exception { + if (cmpList != null && !cmpList.isEmpty()) { + + cmpList.forEach((k, v) -> { + HashMap serviceRef = new HashMap<>(); + WebComponentMetadataAndExtra component = v; + if (component == null) { + throw new RuntimeException("不存在标识为'" + k + "'的服务构件"); + } + + WebComponentMetadata webComponentMetadata = component.getWebComponentMetadata(); + if (!hasServiceReference(json.getModule().getServiceRefs(), webComponentMetadata)) { + serviceRef.put("cmpId", webComponentMetadata.getId()); + serviceRef.put("name", webComponentMetadata.getClassName()); + String path = webComponentMetadata.getSource(); + if (path == null || path.isEmpty()) { + path = getTSFileName(webComponentMetadata.getId()); + webComponentMetadata.setSource(path); + } + serviceRef.put("path", path); + + serviceRef.put("isCommon", webComponentMetadata.isCommon() ? "1" : "0"); + serviceRef.put("alias", webComponentMetadata.getClassName() + "1"); + + json.getModule().getServiceRefs().add(serviceRef); + } + }); Iterator iter = cmpList.entrySet().iterator(); while (iter.hasNext()) { HashMap.Entry entry = (HashMap.Entry) iter.next(); HashMap serviceRef = new HashMap<>(); - WebComponentMetadata component = (WebComponentMetadata) entry.getValue(); + WebComponentMetadataAndExtra component = (WebComponentMetadataAndExtra) entry.getValue(); if (component == null) { throw new RuntimeException("不存在标识为'" + entry.getKey() + "'的服务构件"); } - if (!hasServiceReference(json.getModule().getServiceRefs(), component)) { - serviceRef.put("cmpId", component.getId()); - serviceRef.put("name", component.getClassName()); - String path = component.getSource(); + WebComponentMetadata webComponentMetadata = component.getWebComponentMetadata(); + if (!hasServiceReference(json.getModule().getServiceRefs(), webComponentMetadata)) { + serviceRef.put("cmpId", webComponentMetadata.getId()); + serviceRef.put("name", webComponentMetadata.getClassName()); + String path = webComponentMetadata.getSource(); if (path == null || path.isEmpty()) { - path = getTSFileName(component.getId()); - component.setSource(path); + path = getTSFileName(webComponentMetadata.getId()); + webComponentMetadata.setSource(path); } serviceRef.put("path", path); - serviceRef.put("isCommon", component.isCommon() ? "1" : "0"); - serviceRef.put("alias", component.getClassName() + "1"); + serviceRef.put("isCommon", webComponentMetadata.isCommon() ? "1" : "0"); + serviceRef.put("alias", webComponentMetadata.getClassName() + "1"); json.getModule().getServiceRefs().add(serviceRef); } @@ -245,11 +398,11 @@ public class CommandsAnalysis { /** * 获取ts文件路径和名称 */ - private String getTSFileName(String cmpId) throws Exception { + private String getTSFileName(String cmpId) { // 最理想的方式:路径来自webcmp构件路径,名称来自path(即元数据的Source属性) // 先用webcmp的文件名构造,后续可以考虑调整 if (cmpId == null || cmpId.isEmpty()) { - throw new Exception("获取ts文件名出错,对应的web构件id不能为空。"); + throw new WebCustomException("获取ts文件名出错,对应的web构件id不能为空。"); } CommandsMetadataManager manager = new CommandsMetadataManager(this.executeEnvironment, this.isUpdradeTool); @@ -261,7 +414,7 @@ public class CommandsAnalysis { }, null, null); if (metadata == null) { - throw new RuntimeException("load command metatdata is null,commandId is " + cmpId); + throw new WebCustomException("load command metatdata is null,commandId is " + cmpId); } String path = metadata.getRelativePath(); @@ -274,9 +427,103 @@ public class CommandsAnalysis { } else if (cmpFileName.contains(metadata.getHeader().getCode())) { fileName = cmpFileName; } else { - throw new Exception("获取ts文件名出错,web构件上获取的文件名不对。"); + throw new WebCustomException("获取ts文件名出错,web构件上获取的文件名不对。"); } return path + "/" + fileName + ".ts"; } + + /** + * web 命令元数据及其额外参数 + */ + public static class WebCommandsMetadataAndExtra { + private WebCommandsMetadata webCommandsMetadata; + private String metadataId; + private String metadataFileName; + private String metadataName; + private String metadataRelativePath; + + public WebCommandsMetadataAndExtra(WebCommandsMetadata webCommandsMetadata) { + this.webCommandsMetadata = webCommandsMetadata; + } + + public WebCommandsMetadataAndExtra(WebCommandsMetadata webCommandsMetadata, String metadataId, String metadataName, String metadataFileName, String metadataRelativePath) { + this.webCommandsMetadata = webCommandsMetadata; + this.metadataId = metadataId; + this.metadataName = metadataName; + this.metadataRelativePath = metadataRelativePath; + this.metadataFileName = metadataFileName; + } + + public static WebCommandsMetadataAndExtra init(WebCommandsMetadata webCommandsMetadata, String metadataId, String metadataName, String metadataFileName, String metadataRelativePath) { + return new WebCommandsMetadataAndExtra(webCommandsMetadata, metadataId, metadataName, metadataFileName, metadataRelativePath); + } + + public WebCommandsMetadata getWebCommandsMetadata() { + return webCommandsMetadata; + } + + public String getMetadataId() { + return metadataId; + } + + public String getMetadataName() { + return metadataName; + } + + public String getMetadataRelativePath() { + return metadataRelativePath; + } + + public String getMetadataFileName() { + return metadataFileName; + } + } + + /** + * webcomponent及其额外参数 + */ + public static class WebComponentMetadataAndExtra { + private WebComponentMetadata webComponentMetadata; + private String metadataId; + private String metadataName; + private String metadataFileName; + private String metadataRelativePath; + + public WebComponentMetadataAndExtra(WebComponentMetadata webComponentMetadata) { + this.webComponentMetadata = webComponentMetadata; + } + + public WebComponentMetadataAndExtra(WebComponentMetadata webComponentMetadata, String metadataId, String metadataName, String metadataFileName, String metadataRelativePath) { + this.webComponentMetadata = webComponentMetadata; + this.metadataId = metadataId; + this.metadataName = metadataName; + this.metadataRelativePath = metadataRelativePath; + this.metadataFileName = metadataFileName; + } + + public static WebComponentMetadataAndExtra init(WebComponentMetadata webComponentMetadata, String metadataId, String metadataName, String metadataFileName, String metadataRelativePath) { + return new WebComponentMetadataAndExtra(webComponentMetadata, metadataId, metadataName, metadataFileName, metadataRelativePath); + } + + public WebComponentMetadata getWebComponentMetadata() { + return webComponentMetadata; + } + + public String getMetadataId() { + return metadataId; + } + + public String getMetadataName() { + return metadataName; + } + + public String getMetadataRelativePath() { + return metadataRelativePath; + } + + public String getMetadataFileName() { + return metadataFileName; + } + } } diff --git a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/EapiAnalysis.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadataanalysis/EapiAnalysis.java similarity index 91% rename from web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/EapiAnalysis.java rename to web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadataanalysis/EapiAnalysis.java index 52813bc3e2f07779fb8cac324566418c350d3e36..9a9807d3dd48d733f6cfcd2656b1cbbb9babe66b 100644 --- a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/EapiAnalysis.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadataanalysis/EapiAnalysis.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.inspur.edp.web.jitengine.metadataanalysis; +package com.inspur.edp.web.formmetadata.metadataanalysis; import com.fasterxml.jackson.databind.PropertyNamingStrategy; import com.inspur.edp.lcm.metadata.api.IMetadataContent; @@ -73,9 +73,9 @@ public class EapiAnalysis { // 如果获取到EapiID 抛出对应的异常,主要目的是因为eapi的结构调整 if (!StringUtility.isNullOrEmpty(strEapiID)) { IMetadataContent eapiMetadataContent = eapiMetadataManager.getEapiMetadataContent(strEapiID, - item.getOrDefault("eapiCode", "").toString(), - item.getOrDefault("eapiName", "").toString(), - StringUtility.getOrDefault(item.getOrDefault("eapiNameSpace", "").toString(), nameSpace)); + item.get("eapiCode").toString(), + item.get("eapiName").toString(), + StringUtility.getOrDefault(item.get("eapiNameSpace"), nameSpace)); String eapiJson = eapiMetadataManager.serialize(eapiMetadataContent, PropertyNamingStrategy.UPPER_CAMEL_CASE); eapis.append(eapiJson); diff --git a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/FormAnalysis.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadataanalysis/FormAnalysis.java similarity index 94% rename from web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/FormAnalysis.java rename to web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadataanalysis/FormAnalysis.java index 35bd0576c5cab158d2a1f445f332912f1d2a7b69..31300eebb26335e888fe08caddb76e1fa424215f 100644 --- a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/FormAnalysis.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadataanalysis/FormAnalysis.java @@ -14,15 +14,15 @@ * limitations under the License. */ -package com.inspur.edp.web.jitengine.metadataanalysis; +package com.inspur.edp.web.formmetadata.metadataanalysis; import com.inspur.edp.web.common.environment.ExecuteEnvironment; import com.inspur.edp.web.common.io.FileUtility; import com.inspur.edp.web.common.serialize.SerializeUtility; import com.inspur.edp.web.common.utility.StringUtility; import com.inspur.edp.web.formmetadata.metadata.formdom.FormDOM; +import com.inspur.edp.web.formmetadata.metadataanalysis.form.AnalysisExternalComponentResult; import com.inspur.edp.web.formmetadata.metadatamanager.FormMetadataManager; -import com.inspur.edp.web.jitengine.metadatamodel.app.form.AnalysisExternalComponentResult; import java.util.HashMap; @@ -116,7 +116,7 @@ public class FormAnalysis { if (!useIsolateJs && !StringUtility.isNullOrEmpty(externalComponentUri)) { // 获取组合表单的元数据信息 - String formMetaDataStr = formMetadataManager.getVisualDom(externalComponentUri, externalComponentCode, externalComponent.getOrDefault("name", "").toString(), externalComponent.getOrDefault("nameSpace", "").toString()); + String formMetaDataStr = formMetadataManager.getVisualDom(externalComponentUri, externalComponentCode, StringUtility.getOrDefault(externalComponent.get("name"), ""), StringUtility.getOrDefault(externalComponent.get("nameSpace"), "")); json = SerializeUtility.getInstance().deserialize(formMetaDataStr, FormDOM.class); if (!StringUtility.isNullOrEmpty(formMetaDataStr)) { diff --git a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/StateMachineAnalysis.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadataanalysis/StateMachineAnalysis.java similarity index 90% rename from web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/StateMachineAnalysis.java rename to web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadataanalysis/StateMachineAnalysis.java index 0e475e5c21b2072f9c3a66316f4c2c7ff56a9bf0..e99b452728e1d83e69b41e0421c5c6331be56968 100644 --- a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/StateMachineAnalysis.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadataanalysis/StateMachineAnalysis.java @@ -14,11 +14,11 @@ * limitations under the License. */ -package com.inspur.edp.web.jitengine.metadataanalysis; +package com.inspur.edp.web.formmetadata.metadataanalysis; -import com.inspur.edp.lcm.metadata.api.IMetadataContent; import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; import com.inspur.edp.web.common.environment.ExecuteEnvironment; +import com.inspur.edp.web.common.utility.StringUtility; import com.inspur.edp.web.formmetadata.metadata.formdom.FormDOM; import com.inspur.edp.web.formmetadata.metadatamanager.StateMachineMetadataManager; @@ -45,7 +45,7 @@ public class StateMachineAnalysis { stateMachines.append(","); } String uri = o.get("uri").toString(); - GspMetadata obj = smManager.getStateMachine(uri, o.getOrDefault("code", "").toString(), o.getOrDefault("name", "").toString(), o.getOrDefault("nameSpace", "").toString()); + GspMetadata obj = smManager.getStateMachine(uri, StringUtility.getOrDefault(o.get("code"), ""), StringUtility.getOrDefault(o.get("name"), ""), StringUtility.getOrDefault(o.get("nameSpace"), "")); String sm_json = smManager.serialize(obj.getContent()); String idStr = o.get("id").toString(); stateMachines.append("\"").append(idStr).append("\":"); diff --git a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/TsBuildConfigJsonGenerator.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadataanalysis/TsBuildConfigJsonGenerator.java similarity index 98% rename from web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/TsBuildConfigJsonGenerator.java rename to web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadataanalysis/TsBuildConfigJsonGenerator.java index a7395c6947dc9766c911649f4e03ff8d3931e958..8967b1ead1d28a7984dbc721b6841f1feee81e9f 100644 --- a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/TsBuildConfigJsonGenerator.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadataanalysis/TsBuildConfigJsonGenerator.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.inspur.edp.web.jitengine.metadataanalysis; +package com.inspur.edp.web.formmetadata.metadataanalysis; public class TsBuildConfigJsonGenerator { /** diff --git a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamodel/app/AppConfig.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadataanalysis/app/AppConfig.java similarity index 95% rename from web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamodel/app/AppConfig.java rename to web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadataanalysis/app/AppConfig.java index 16181c2fcebe4025042d8720d5f2fe095478131c..41426cc5780aad9d3c9ead39392abdd8e27c29fd 100644 --- a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamodel/app/AppConfig.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadataanalysis/app/AppConfig.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.inspur.edp.web.jitengine.metadatamodel.app; +package com.inspur.edp.web.formmetadata.metadataanalysis.app; import java.util.ArrayList; import java.util.HashMap; diff --git a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamodel/app/form/AnalysisExternalComponentResult.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadataanalysis/form/AnalysisExternalComponentResult.java similarity index 97% rename from web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamodel/app/form/AnalysisExternalComponentResult.java rename to web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadataanalysis/form/AnalysisExternalComponentResult.java index cd54d6d8b9c1ec9d10a241f007e4a63733575da5..71f7102acaadf6d48b9fefa8cd1aa614540aa779 100644 --- a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamodel/app/form/AnalysisExternalComponentResult.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadataanalysis/form/AnalysisExternalComponentResult.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.inspur.edp.web.jitengine.metadatamodel.app.form; +package com.inspur.edp.web.formmetadata.metadataanalysis.form; import com.inspur.edp.web.common.utility.StringUtility; import com.inspur.edp.web.formmetadata.metadata.formdom.FormDOM; diff --git a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/form/FormComponentParser.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadataanalysis/form/FormComponentParser.java similarity index 98% rename from web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/form/FormComponentParser.java rename to web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadataanalysis/form/FormComponentParser.java index cb538b5464035b9594405962e07befa5663d0d5f..40f788281d46adcac30661a14938e44961b690fa 100644 --- a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/form/FormComponentParser.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadataanalysis/form/FormComponentParser.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.inspur.edp.web.jitengine.metadataanalysis.form; +package com.inspur.edp.web.formmetadata.metadataanalysis.form; import com.inspur.edp.web.common.JITEngineConstants; import com.inspur.edp.web.common.io.FileUtility; diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadatamanager/BaseMetaDataManager.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadatamanager/BaseMetaDataManager.java index f262c7183b29a6298486b75fea9f4f738464c079..f13da568310ed2e2f6035a45f82d6151c75d42dd 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadatamanager/BaseMetaDataManager.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadatamanager/BaseMetaDataManager.java @@ -71,6 +71,10 @@ public abstract class BaseMetaDataManager { return this.relativePath; } + public void setRelativePath(String relativePath) { + this.relativePath = relativePath; + } + // 运行环境 运行时或设计时 private ExecuteEnvironment executeEnvironment = ExecuteEnvironment.Design; @@ -99,7 +103,7 @@ public abstract class BaseMetaDataManager { GspMetadata metadata = MetadataUtility.getInstance().getMetadataWithEnvironment(targetMetadataSupplierAction, sourceMetadataSupplierAction, customTargetMetadataNotFoundMessage, this.executeEnvironment, isUpdradeTool); if (metadata != null) { - relativePath = metadata.getRelativePath(); + //relativePath = metadata.getRelativePath(); } return metadata; } @@ -107,7 +111,7 @@ public abstract class BaseMetaDataManager { public GspMetadata getMetadata(String metaDataFileName, String metaDataFilePath) { GspMetadata metadata = MetadataUtility.getInstance().getMetadataWithDesign(metaDataFileName, metaDataFilePath); if (metadata != null) { - relativePath = metadata.getRelativePath(); + //relativePath = metadata.getRelativePath(); } return metadata; } diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadatamanager/CommandsMetadataManager.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadatamanager/CommandsMetadataManager.java index 0544600c3bc7fa9d742251b1abc639d2a81f3a23..b9cccc10a5dbe86e95babb29b133c18fdd8c2cf7 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadatamanager/CommandsMetadataManager.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadatamanager/CommandsMetadataManager.java @@ -32,12 +32,18 @@ public class CommandsMetadataManager extends BaseMetaDataManager { super(executeEnvironment, isUpdradeTool); } + public CommandsMetadataManager(ExecuteEnvironment executeEnvironment, boolean isUpdradeTool, String relativePath) { + super(executeEnvironment, isUpdradeTool); + this.setRelativePath(relativePath); + } + public GspMetadata getWebCommands(String id, String code, String name, String nameSpace) { GspMetadata webCommandMetadata = getMetadata(() -> { MetadataGetterParameter.GetterMetadataInfo getterMetadataInfo = new MetadataGetterParameter.GetterMetadataInfo(); getterMetadataInfo.setId(id); getterMetadataInfo.setMetadataType(MetadataTypeEnum.Command); getterMetadataInfo.setCode(code); + getterMetadataInfo.setPath(this.getRelativePath()); getterMetadataInfo.setNameSpace(nameSpace); getterMetadataInfo.setName(name); return getterMetadataInfo; @@ -45,6 +51,6 @@ public class CommandsMetadataManager extends BaseMetaDataManager { if (webCommandMetadata == null) { throw new RuntimeException("load webCommand metadata is null,the commandId is " + id); } - return webCommandMetadata ; + return webCommandMetadata; } } diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadatamanager/ComponentMetadataManager.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadatamanager/ComponentMetadataManager.java index 55e73bcf0fb0f7ee5d001a555678ef35f065afe3..6d892e67b1243b7bb90b7a7f2875230016785406 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadatamanager/ComponentMetadataManager.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadatamanager/ComponentMetadataManager.java @@ -28,16 +28,23 @@ import com.inspur.edp.web.common.metadata.MetadataTypeEnum; * @author noah */ public class ComponentMetadataManager extends BaseMetaDataManager { + public ComponentMetadataManager(ExecuteEnvironment executeEnvironment, boolean isUpdradeTool) { super(executeEnvironment, isUpdradeTool); } + public ComponentMetadataManager(ExecuteEnvironment executeEnvironment, boolean isUpdradeTool, String relativePath) { + super(executeEnvironment, isUpdradeTool); + this.setRelativePath(relativePath); + } + public WebComponentMetadata getComponentMetadata(String id, String code, String name, String nameSpace) { GspMetadata webComponentMetadata = getMetadata(() -> { MetadataGetterParameter.GetterMetadataInfo getterMetadataInfo = new MetadataGetterParameter.GetterMetadataInfo(); getterMetadataInfo.setId(id); getterMetadataInfo.setCode(code); getterMetadataInfo.setName(name); + getterMetadataInfo.setPath(this.getRelativePath()); getterMetadataInfo.setNameSpace(nameSpace); getterMetadataInfo.setMetadataType(MetadataTypeEnum.Component); return getterMetadataInfo; diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadatamanager/EapiMetadataManager.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadatamanager/EapiMetadataManager.java index 30ff7e225563eba787100934234df2ee9fdca352..ca798bcea213f75023b209f13084bc7924c73ba4 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadatamanager/EapiMetadataManager.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadatamanager/EapiMetadataManager.java @@ -32,6 +32,11 @@ public class EapiMetadataManager extends BaseMetaDataManager { super(executeEnvironment, isUpdradeTool); } + public EapiMetadataManager(ExecuteEnvironment executeEnvironment, boolean isUpdradeTool, String relativePath) { + super(executeEnvironment, isUpdradeTool); + this.setRelativePath(relativePath); + } + /** * 获取eapi元数据内容 * diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadatamanager/StateMachineMetadataManager.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadatamanager/StateMachineMetadataManager.java index 4e26ffbd5d4c8a9befae8d93d5d9ffd5c18159a8..ad0702253d4107dfd2342171cdfbc49a6cc5c5c0 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadatamanager/StateMachineMetadataManager.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadatamanager/StateMachineMetadataManager.java @@ -22,11 +22,20 @@ import com.inspur.edp.web.common.environment.ExecuteEnvironment; import com.inspur.edp.web.common.metadata.MetadataGetterParameter; import com.inspur.edp.web.common.metadata.MetadataTypeEnum; +/** + * 状态机元数据读取 + * @author guozhiqi + */ public class StateMachineMetadataManager extends BaseMetaDataManager { public StateMachineMetadataManager(ExecuteEnvironment executeEnvironment, boolean isUpdradeTool) { super(executeEnvironment, isUpdradeTool); } + public StateMachineMetadataManager(ExecuteEnvironment executeEnvironment, boolean isUpdradeTool, String relativePath) { + super(executeEnvironment, isUpdradeTool); + this.setRelativePath(relativePath); + } + public GspMetadata getStateMachine(String id, String code, String name, String nameSpace) { GspMetadata stateMachineMetaData = getMetadata(() -> { MetadataGetterParameter.GetterMetadataInfo getterMetadataInfo = new MetadataGetterParameter.GetterMetadataInfo(); @@ -34,6 +43,7 @@ public class StateMachineMetadataManager extends BaseMetaDataManager { getterMetadataInfo.setCode(code); getterMetadataInfo.setName(name); getterMetadataInfo.setNameSpace(nameSpace); + getterMetadataInfo.setPath(this.getRelativePath()); getterMetadataInfo.setMetadataType(MetadataTypeEnum.StateMachine); return getterMetadataInfo; }, null, this.getDefaultMetadataNotFoundFormatMessage(id, MetadataTypeEnum.StateMachine)); diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/FormMetadataVoManager.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/FormMetadataVoManager.java index c9bbc1069e636a78163cd6add60767531396fb53..95f12725271a5760674a17be641753856d619640 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/FormMetadataVoManager.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/FormMetadataVoManager.java @@ -49,11 +49,11 @@ class FormMetadataVoManager { // 如果不存在对应的voId 那么无法进行vo拷贝 continue; } - String voSpacePath = StringUtility.getOrDefault(schema.getOrDefault("voPath", "").toString(), sourceFormMetadata.getRelativePath()); - String voNameSpace = StringUtility.getOrDefault(schema.getOrDefault("voNameSpace", "").toString(), sourceFormMetadata.getHeader().getNameSpace()); + String voSpacePath = StringUtility.getOrDefault(schema.get("voPath"), sourceFormMetadata.getRelativePath()); + String voNameSpace = StringUtility.getOrDefault(schema.get("voNameSpace"), sourceFormMetadata.getHeader().getNameSpace()); MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(viewObjectId, voSpacePath, MetadataTypeEnum.ViewModel); - metadataGetterParameter.setTargetMetadataCode(schema.getOrDefault("code", "").toString()); - metadataGetterParameter.setTargetMetadataName(schema.getOrDefault("name", "").toString()); + metadataGetterParameter.setTargetMetadataCode(StringUtility.getOrDefault(schema.get("code"), "")); + metadataGetterParameter.setTargetMetadataName(StringUtility.getOrDefault(schema.get("name"), "")); metadataGetterParameter.setTargetMetadataNamespace(voNameSpace); metadataGetterParameter.setSourceMetadata(sourceFormMetadata, MetadataTypeEnum.Frm); diff --git a/web-frontendproject-api/src/main/java/com/inspur/edp/web/frontendproject/entity/resolver/ResolveFormMetadataItem.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/resolver/ResolveFormMetadataItem.java similarity index 96% rename from web-frontendproject-api/src/main/java/com/inspur/edp/web/frontendproject/entity/resolver/ResolveFormMetadataItem.java rename to web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/resolver/ResolveFormMetadataItem.java index 41788d2c093b83446b9a040ab5e83a0de545cb7a..4d29e735cf644a33373c923ab30d91b57a6afb8d 100644 --- a/web-frontendproject-api/src/main/java/com/inspur/edp/web/frontendproject/entity/resolver/ResolveFormMetadataItem.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/resolver/ResolveFormMetadataItem.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.inspur.edp.web.frontendproject.entity.resolver; +package com.inspur.edp.web.formmetadata.resolver; import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; import lombok.Data; diff --git a/web-frontendproject-api/src/main/java/com/inspur/edp/web/frontendproject/entity/resolver/ResolveFormMetadataList.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/resolver/ResolveFormMetadataList.java similarity index 97% rename from web-frontendproject-api/src/main/java/com/inspur/edp/web/frontendproject/entity/resolver/ResolveFormMetadataList.java rename to web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/resolver/ResolveFormMetadataList.java index a21565abab630a50494c4a80807c564a5e5629c0..bc38c40f6dd4c88b72fbfa0f6f3469fa6cd07be9 100644 --- a/web-frontendproject-api/src/main/java/com/inspur/edp/web/frontendproject/entity/resolver/ResolveFormMetadataList.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/resolver/ResolveFormMetadataList.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.inspur.edp.web.frontendproject.entity.resolver; +package com.inspur.edp.web.formmetadata.resolver; import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; import com.inspur.edp.web.common.utility.ListUtility; diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/service/FormRelateMetadataService.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/service/FormRelateMetadataService.java index 358637aecc6261e659da89cd50fbfe44a97e238e..62f33a23c2997ec775c03afb804d72e21d3aa2fc 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/service/FormRelateMetadataService.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/service/FormRelateMetadataService.java @@ -1,25 +1,27 @@ package com.inspur.edp.web.formmetadata.service; -import com.inspur.edp.lcm.metadata.api.IMetadataContent; import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; -import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.common.environment.ExecuteEnvironment; -import com.inspur.edp.web.common.metadata.MetadataGetterParameter; -import com.inspur.edp.web.common.metadata.MetadataTypeEnum; +import com.inspur.edp.web.common.logger.WebLogger; import com.inspur.edp.web.common.metadata.MetadataUtility; import com.inspur.edp.web.common.utility.StringUtility; +import com.inspur.edp.web.formmetadata.api.FormMetadataCommonService; import com.inspur.edp.web.formmetadata.api.dto.FormRelateMetadataInDesignParameterDto; import com.inspur.edp.web.formmetadata.api.dto.FormRelateMetadataInDesignResultDto; import com.inspur.edp.web.formmetadata.api.dto.RelateMetadataTypeEnum; +import com.inspur.edp.web.formmetadata.api.entity.FormSuInfoEntity; import com.inspur.edp.web.formmetadata.metadata.FormMetadataContent; import com.inspur.edp.web.formmetadata.metadata.FormMetadataContentService; import com.inspur.edp.web.formmetadata.metadata.formdom.FormDOM; -import com.inspur.edp.web.formmetadata.metadatamanager.CommandsMetadataManager; +import com.inspur.edp.web.formmetadata.metadataanalysis.CommandsAnalysis; import com.inspur.edp.web.formmetadata.metadatamanager.StateMachineMetadataManager; +import io.iec.edp.caf.boot.context.CAFContext; +import io.iec.edp.caf.commons.utils.SpringBeanUtils; +import io.iec.edp.caf.core.session.CafSession; +import org.apache.commons.lang3.time.StopWatch; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; +import java.util.*; +import java.util.concurrent.*; /** * 表单关联元数据获取服务 @@ -33,99 +35,182 @@ public class FormRelateMetadataService { * @param parameter */ public List getFormRelateMetadata(FormRelateMetadataInDesignParameterDto parameter) { - // 定义返回值列表结构 - List formRelateMetadataInDesignResultList = new ArrayList<>(); - GspMetadata formMetadata = getFormMetadata(parameter); + CafSession currentSession = CAFContext.current.getCurrentSession(); + // 定义返回值列表结构 线程安全的集合结构 每个方法执行都增加了synchronized + List safeFormRelateMetadataInDesignResultList = Collections.synchronizedList(new ArrayList<>(20)); + + // 线程安全的CompletableFuture List 每个方法的执行都增加了 synchronized + List> safeCompletableFutureList = Collections.synchronizedList(new ArrayList<>(20)); + // 使用线程池进行并发元数据读取 + Map formRelateMetadataInDesignResultDtoConcurrentHashMap = new ConcurrentHashMap<>(32); + + // 使用线程安全的集合进行元数据的并发读取 + this.executeFormAndRelateMetadata(currentSession, parameter.getEnvironment(), parameter.getFormMetadataFileName(), + parameter.getFormMetadataPath(), parameter.getFormMetadataId(), formRelateMetadataInDesignResultDtoConcurrentHashMap, safeCompletableFutureList); + + // 等待所有子任务执行完毕 + CompletableFuture combineCompletableFuture = CompletableFuture.allOf(safeCompletableFutureList.toArray(new CompletableFuture[0])); + try { + combineCompletableFuture.get(); + } catch (ExecutionException | InterruptedException e) { + throw new RuntimeException(e); + } + safeFormRelateMetadataInDesignResultList.addAll(formRelateMetadataInDesignResultDtoConcurrentHashMap.values()); - FormMetadataContent formMetadataContent = (FormMetadataContent) formMetadata.getContent(); - FormDOM formDOM = FormMetadataContentService.getInstance().getFormContent(formMetadataContent); + return safeFormRelateMetadataInDesignResultList; + } - FormRelateMetadataInDesignResultDto formMetadataResultDto = new FormRelateMetadataInDesignResultDto(RelateMetadataTypeEnum.Form, formMetadata.getHeader().getName(), formMetadata.getHeader().getId(), formMetadata.getContent()); - formRelateMetadataInDesignResultList.add(formMetadataResultDto); + /** + * 定义表单元数据异步任务的返回结果 + */ + static class FormMetadataAsyncResult { + public GspMetadata formMetadata; + public FormDOM formDOM; - // 获取关联的状态机元数据 - List> stateMachineList = formDOM.getModule().getStateMachines(); - if (stateMachineList != null && stateMachineList.size() > 0) { - stateMachineList.forEach(sm -> { - String smUri = StringUtility.getOrDefault(sm.getOrDefault("uri", ""), ""); - if (StringUtility.isNotNullOrEmpty(smUri)) { - - StateMachineMetadataManager stateMachineMetadataManager = new StateMachineMetadataManager(parameter.getEnvironment(), false); - GspMetadata stateMachineMetadata = stateMachineMetadataManager.getStateMachine(smUri, StringUtility.getOrDefault(sm.get("code"), ""), StringUtility.getOrDefault(sm.get("name"), ""), StringUtility.getOrDefault(sm.get("nameSpace"), "")); - - FormRelateMetadataInDesignResultDto stateMachineMetadataResultDto = new FormRelateMetadataInDesignResultDto(RelateMetadataTypeEnum.StateMachine, stateMachineMetadata.getHeader().getName(), - stateMachineMetadata.getHeader().getId(), stateMachineMetadata.getContent()); - formRelateMetadataInDesignResultList.add(stateMachineMetadataResultDto); - } - }); + public FormMetadataAsyncResult(GspMetadata formMetadata, FormDOM formDOM) { + this.formMetadata = formMetadata; + this.formDOM = formDOM; + } + + public static FormMetadataAsyncResult init(GspMetadata formMetadata, FormDOM formDOM) { + return new FormMetadataAsyncResult(formMetadata, formDOM); + } + } + + /** + * 获取表单元数据及其关联的元数据信息 + * + * @param executeEnvironment + * @param formMetadataFileName + * @param formMetadataFilePath + * @param formMetadataId + * @param safeCompletableFutureList 异步任务集合 + */ + private CompletableFuture executeFormAndRelateMetadata(CafSession cafSession, ExecuteEnvironment executeEnvironment, String formMetadataFileName, String formMetadataFilePath, String formMetadataId, + Map formRelateMetadataInDesignResultDtoConcurrentHashMap, + List> safeCompletableFutureList) { + long start = System.currentTimeMillis(); + GspMetadata formMetadata = getFormMetadata(executeEnvironment, formMetadataFileName, formMetadataFilePath, formMetadataId); + if (formMetadata == null) { + return null; + } + + FormDOM formDOM = FormMetadataContentService.getInstance().getFormContent((FormMetadataContent) formMetadata.getContent()); + FormMetadataAsyncResult formMetadataAsyncResult = FormMetadataAsyncResult.init(formMetadata, formDOM); + + WebLogger.Instance.error("获取表单元数据耗时" + (System.currentTimeMillis() - start) + "ms"); + + if (formMetadataAsyncResult.formDOM == null || formMetadataAsyncResult.formMetadata == null) { + return null; } + // 获取su info信息的异步请求 + CompletableFuture suInfoEntityCompletableFuture = CompletableFuture.supplyAsync(() -> getFormSuInfoEntity(formMetadataAsyncResult.formMetadata.getHeader().getBizobjectID())).thenApply(t -> { + FormRelateMetadataInDesignResultDto formMetadataResultDto = new FormRelateMetadataInDesignResultDto(RelateMetadataTypeEnum.Form, + formMetadataAsyncResult.formMetadata.getHeader().getName(), formMetadataAsyncResult.formMetadata.getHeader().getFileName(), formMetadataAsyncResult.formMetadata.getHeader().getId(), + formMetadataAsyncResult.formMetadata.getContent(), formMetadataAsyncResult.formMetadata.getRelativePath(), t); + formMetadataResultDto.setRelateFormMetadataId(formMetadata.getHeader().getId()); + formRelateMetadataInDesignResultDtoConcurrentHashMap.put(formMetadataAsyncResult.formMetadata.getHeader().getId(), formMetadataResultDto); + return null; + }); + safeCompletableFutureList.add(suInfoEntityCompletableFuture); + + // 获取关联的状态机元数据 + executeStateMachineWithFuture(cafSession, executeEnvironment, formMetadataAsyncResult.formMetadata, formMetadataAsyncResult.formDOM, formRelateMetadataInDesignResultDtoConcurrentHashMap, safeCompletableFutureList); // 获取关联的命令元数据 - List> webCmdList = formDOM.getModule().getWebcmds(); - if (webCmdList != null && webCmdList.size() > 0) { - webCmdList.forEach(t -> { - String webCmdId = StringUtility.getOrDefault(t.get("id"), ""); - if (StringUtility.isNotNullOrEmpty(webCmdId)) { - CommandsMetadataManager commandsMetadataManager = new CommandsMetadataManager(parameter.getEnvironment(), false); - GspMetadata webCmdMetadata = commandsMetadataManager.getWebCommands(webCmdId, StringUtility.getOrDefault(t.get("code"), ""), StringUtility.getOrDefault(t.get("name"), ""), StringUtility.getOrDefault(t.get("nameSpace"), "")); - - FormRelateMetadataInDesignResultDto stateMachineMetadataResultDto = new FormRelateMetadataInDesignResultDto(RelateMetadataTypeEnum.Command, webCmdMetadata.getHeader().getName(), - webCmdMetadata.getHeader().getId(), webCmdMetadata.getContent()); - formRelateMetadataInDesignResultList.add(stateMachineMetadataResultDto); - } + executeCommandWithFuture(cafSession, executeEnvironment, formMetadataAsyncResult.formDOM, formMetadata, formRelateMetadataInDesignResultDtoConcurrentHashMap, safeCompletableFutureList); + + // 获取其关联的组合表单--元数据 提前获取 + if (formMetadataAsyncResult.formDOM.getModule().getExternalComponents() != null && !formMetadataAsyncResult.formDOM.getModule().getExternalComponents().isEmpty()) { + formMetadataAsyncResult.formDOM.getModule().getExternalComponents().forEach(t -> { + String metadataUri = StringUtility.getOrDefault(t.get("uri"), ""); + String metadataFileName = StringUtility.getOrDefault(t.get("fileName"), ""); + String metadataFilePath = StringUtility.getOrDefault(t.get("filePath"), ""); + String metadataNameSpace = StringUtility.getOrDefault(t.get("nameSpace"), ""); + this.executeFormAndRelateMetadata(cafSession, executeEnvironment, metadataFileName, metadataFilePath, metadataUri, formRelateMetadataInDesignResultDtoConcurrentHashMap, safeCompletableFutureList); }); } - - return formRelateMetadataInDesignResultList; + return null; } /** - * 获取命令元数据信息 + * 异步执行命令元数据读取 * - * @param formMetadata - * @param webCmdId - * @param webCmdPath * @param executeEnvironment - * @return + * @param formDOM + * @param formRelateMetadataInDesignResultDtoConcurrentHashMap + * @param completableFutureList */ - private GspMetadata getWebCmdMetadata(GspMetadata formMetadata, String webCmdId, String webCmdPath, ExecuteEnvironment executeEnvironment) { - GspMetadata webCmdMetadata; - if (executeEnvironment.equals(ExecuteEnvironment.Design)) { - if (StringUtility.isNullOrEmpty(webCmdPath)) { - webCmdPath = formMetadata.getRelativePath(); + private void executeCommandWithFuture(CafSession cafSession, ExecuteEnvironment executeEnvironment, FormDOM formDOM, GspMetadata formMetadata, Map formRelateMetadataInDesignResultDtoConcurrentHashMap, + List> completableFutureList) { + long start = System.currentTimeMillis(); + CommandsAnalysis commandsAnalysis = new CommandsAnalysis(executeEnvironment, false, false); + Map webComponentMetadataHashMap = new ConcurrentHashMap<>(); + commandsAnalysis.resolveCommandAsync(CommandsAnalysis.ResolveCommandAsyncParameter.init(cafSession, formDOM, formMetadata), webComponentMetadataHashMap, completableFutureList, formRelateMetadataInDesignResultDtoConcurrentHashMap); + WebLogger.Instance.info("获取命令元数据耗时 " + (System.currentTimeMillis() - start) + " ms"); + } + + private void executeStateMachineWithFuture(CafSession cafSession, ExecuteEnvironment executeEnvironment, GspMetadata formMetadata, FormDOM formDOM, + Map formRelateMetadataInDesignResultDtoConcurrentHashMap, + List> completableFutureList) { + List> stateMachineList = formDOM.getModule().getStateMachines(); + if (stateMachineList != null && !stateMachineList.isEmpty()) { + HashMap firstStateMachine = stateMachineList.get(0); + Object smObjUri = firstStateMachine.get("uri"); + if (smObjUri != null) { + CompletableFuture stateMachineCompletableFuture = CompletableFuture.supplyAsync(() -> { + CAFContext.current.getService().setCurrentThreadPoolSession(cafSession); + long start = System.currentTimeMillis(); + StateMachineMetadataManager stateMachineMetadataManager = new StateMachineMetadataManager(executeEnvironment, false, formMetadata.getRelativePath()); + GspMetadata stateMachineMetadata = stateMachineMetadataManager.getStateMachine(smObjUri.toString(), + StringUtility.getOrDefault(firstStateMachine.get("code"), ""), StringUtility.getOrDefault(firstStateMachine.get("name"), ""), + StringUtility.getOrDefault(firstStateMachine.get("nameSpace"), "")); + WebLogger.Instance.info("获取状态机元数据耗时 " + (System.currentTimeMillis() - start) + " ms"); + return stateMachineMetadata; + }).thenApply(t -> { + FormRelateMetadataInDesignResultDto stateMachineMetadataResultDto = new FormRelateMetadataInDesignResultDto(RelateMetadataTypeEnum.StateMachine, t.getHeader().getName(), t.getHeader().getFileName(), + t.getHeader().getId(), t.getContent(), t.getRelativePath()); + stateMachineMetadataResultDto.setRelateFormMetadataId(formMetadata.getHeader().getId()); + formRelateMetadataInDesignResultDtoConcurrentHashMap.put(t.getHeader().getId(), stateMachineMetadataResultDto); + return null; + }); + completableFutureList.add(stateMachineCompletableFuture); } - MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(webCmdId, webCmdPath, MetadataTypeEnum.Command); - metadataGetterParameter.setSourceMetadata(formMetadata, MetadataTypeEnum.Frm); - webCmdMetadata = MetadataUtility.getInstance().getMetadataWithDesign(metadataGetterParameter); - } else { - webCmdMetadata = MetadataUtility.getInstance().getMetadataInRuntime(webCmdId); } - - return webCmdMetadata; } /** - * 获取状态机元数据信息 + * 获取对应业务对象信息 * - * @param formMetadata - * @param smUri - * @param executeEnvironment + * @param bizObjectId 业务对象ID * @return */ - private GspMetadata getStateMachineMetadata(String smUri, String code, String name, String nameSpace, ExecuteEnvironment executeEnvironment) { - StateMachineMetadataManager stateMachineMetadataManager = new StateMachineMetadataManager(executeEnvironment, false); - return null; + private FormSuInfoEntity getFormSuInfoEntity(String bizObjectId) { + if (StringUtility.isNullOrEmpty(bizObjectId)) { + return null; + } + long start = System.currentTimeMillis(); + FormMetadataCommonService formMetadataCommonService = SpringBeanUtils.getBean(FormMetadataCommonService.class); + FormSuInfoEntity formSuInfoEntity = formMetadataCommonService.getSuInfoWithBizobjId(bizObjectId); + WebLogger.Instance.info("获取suInfo 耗时 " + (System.currentTimeMillis() - start) + " ms"); + return formSuInfoEntity; } - private GspMetadata getFormMetadata(FormRelateMetadataInDesignParameterDto parameter) { - GspMetadata formMetadata; - if (parameter.getEnvironment().equals(ExecuteEnvironment.Design)) { - formMetadata = MetadataUtility.getInstance().getMetadataWithDesign(parameter.getFormMetadataFileName(), parameter.getFormMetadataPath()); - } else { - formMetadata = MetadataUtility.getInstance().getMetadataInRuntime(parameter.getFormMetadataId()); + /** + * 依据运行环境进行元数据读取 + * + * @param executeEnvironment + * @param formMetadataFileName + * @param formMetadataPath + * @param formMetadataId + * @return + */ + private GspMetadata getFormMetadata(ExecuteEnvironment executeEnvironment, String formMetadataFileName, String formMetadataPath, String formMetadataId) { + if (executeEnvironment.equals(ExecuteEnvironment.Design)) { + return MetadataUtility.getInstance().getMetadataWithDesign(formMetadataFileName, formMetadataPath); } - return formMetadata; + return MetadataUtility.getInstance().getMetadataInRuntime(formMetadataId); } } diff --git a/web-form-metadata/src/test/java/com/inspur/edp/web/formmetadata/serializer/FormMetadataContentSerializerTest.java b/web-form-metadata/src/test/java/com/inspur/edp/web/formmetadata/serializer/FormMetadataContentSerializerTest.java index 80e1d8abe99d744a60b5594bc9da05394321ec0a..8a8b41b3ea72b230b6ba80bee90e24c1758b2fd2 100644 --- a/web-form-metadata/src/test/java/com/inspur/edp/web/formmetadata/serializer/FormMetadataContentSerializerTest.java +++ b/web-form-metadata/src/test/java/com/inspur/edp/web/formmetadata/serializer/FormMetadataContentSerializerTest.java @@ -6,9 +6,13 @@ import com.inspur.edp.web.common.serialize.SerializeUtility; import com.inspur.edp.web.formmetadata.metadata.FormMetadataContent; import org.junit.jupiter.api.Test; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Future; + class FormMetadataContentSerializerTest { - // @Test + // @Test void serialize() { FormMetadataContent formMetadataContent = new FormMetadataContent(); formMetadataContent.setCode("ggg"); @@ -18,6 +22,42 @@ class FormMetadataContentSerializerTest { JsonNode result = SerializeUtility.getInstance().valueToJson(formMetadataContent, PropertyNamingStrategy.UPPER_CAMEL_CASE); + } + public void test() throws ExecutionException, InterruptedException { + Future future = CompletableFuture.supplyAsync(() -> { + return null; + }); + Future future1 = CompletableFuture.supplyAsync(() -> { + Future future2 = CompletableFuture.supplyAsync(() -> { + return null; + }); + + Future future3 = CompletableFuture.supplyAsync(() -> { + return null; + }); + + try { + future2.get(); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } catch (ExecutionException e) { + throw new RuntimeException(e); + } + try { + future3.get(); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } catch (ExecutionException e) { + throw new RuntimeException(e); + } + return null; + }); + + + future.get(); + future1.get(); } + + } diff --git a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/FrontendProjectCompiler.java b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/FrontendProjectCompiler.java index 3b377892ad8c62acda8663ff5c81228a5eb35e91..7c0baea00fbf0b8200f55e8bcf67023cf5d9cff4 100644 --- a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/FrontendProjectCompiler.java +++ b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/FrontendProjectCompiler.java @@ -25,12 +25,12 @@ import com.inspur.edp.web.common.environment.ExecuteEnvironment; import com.inspur.edp.web.common.logger.WebLogger; import com.inspur.edp.web.common.utility.ListUtility; import com.inspur.edp.web.common.utility.StringUtility; +import com.inspur.edp.web.formmetadata.resolver.ResolveFormMetadataList; import com.inspur.edp.web.frontendproject.changedetect.ChangeDetectExecuteManager; import com.inspur.edp.web.frontendproject.changedetect.ChangeDetectExecuteResult; import com.inspur.edp.web.frontendproject.changedetect.ChangeDetectExecuteType; import com.inspur.edp.web.frontendproject.changedetect.context.ChangeDetectContext; import com.inspur.edp.web.frontendproject.entity.ChosenFormList; -import com.inspur.edp.web.frontendproject.entity.resolver.ResolveFormMetadataList; import com.inspur.edp.web.frontendproject.generate.FrontendProjectGenerate; import com.inspur.edp.web.frontendproject.metadata.FormMetadataManager; import com.inspur.edp.web.frontendproject.resolver.FormMetadataResolver; diff --git a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/FrontendProjectDeployer.java b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/FrontendProjectDeployer.java index bbf664268eb47a5e0ec004a92b8bc3540d1f877a..69070c1d30311f2aed10db6309119f7016f8ee93 100644 --- a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/FrontendProjectDeployer.java +++ b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/FrontendProjectDeployer.java @@ -104,10 +104,10 @@ public class FrontendProjectDeployer { } // 执行metadata.js 文件拷贝 - String dynamicFormMetadataJsFilenmae = DynamicFormMetaFileNameGenerator.generateMetaFileName(jieXiParameter.getFormCode()); - String dynamicFormMetadataJs = FileUtility.combine(strFormPath, dynamicFormMetadataJsFilenmae); - String targetMetadataJsFilePath = FileUtility.combine(targetFormMetadataPath, dynamicFormMetadataJsFilenmae); - FileUtility.copyFile(dynamicFormMetadataJs, targetMetadataJsFilePath, true); +// String dynamicFormMetadataJsFilenmae = DynamicFormMetaFileNameGenerator.generateMetaFileName(jieXiParameter.getFormCode()); +// String dynamicFormMetadataJs = FileUtility.combine(strFormPath, dynamicFormMetadataJsFilenmae); +// String targetMetadataJsFilePath = FileUtility.combine(targetFormMetadataPath, dynamicFormMetadataJsFilenmae); +// FileUtility.copyFile(dynamicFormMetadataJs, targetMetadataJsFilePath, true); //复制 String strFormServicePath = FileUtility.combineOptional(projectPath, "src", FrontendProjectConstant.PROJECT_GENERATE_PATH_FOR_Dynamic, "services", jieXiParameter.getFormCode().toLowerCase()); diff --git a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/metadata/FormMetadataManager.java b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/metadata/FormMetadataManager.java index 2344d994b2e94210ac6241e8dfd243ed9e32cb68..8faec97361cf04078cde873d48512af79047012a 100644 --- a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/metadata/FormMetadataManager.java +++ b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/metadata/FormMetadataManager.java @@ -23,10 +23,10 @@ import com.inspur.edp.web.appconfig.core.service.GspAppConfigService; import com.inspur.edp.web.common.entity.TerminalType; import com.inspur.edp.web.common.io.FileUtility; import com.inspur.edp.web.common.utility.RandomUtility; +import com.inspur.edp.web.formmetadata.resolver.ResolveFormMetadataList; import com.inspur.edp.web.frontendproject.entity.ChosenFormList; import com.inspur.edp.web.frontendproject.formdynamic.FormDynamicTagGetter; import com.inspur.edp.web.frontendproject.pageflow.PageFlowMetadataManager; -import com.inspur.edp.web.frontendproject.entity.resolver.ResolveFormMetadataList; import com.inspur.edp.web.pageflow.metadata.entity.Page; import com.inspur.edp.web.pageflow.metadata.entity.PageFlowMetadataEntity; import com.inspur.edp.web.pageflow.metadata.service.PageFlowMetadataUpdateService; diff --git a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/resolver/FormMetadataResolver.java b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/resolver/FormMetadataResolver.java index c41ca088675a752f6c10eccf5bc352e606094621..8305a85ec171d0ba35d71d4cfc99f70bdc9f67ca 100644 --- a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/resolver/FormMetadataResolver.java +++ b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/resolver/FormMetadataResolver.java @@ -21,11 +21,12 @@ import com.inspur.edp.web.common.entity.TerminalType; import com.inspur.edp.web.common.environment.ExecuteEnvironment; import com.inspur.edp.web.common.io.FileUtility; import com.inspur.edp.web.formmetadata.i18n.constant.I18nResourceConstant; +import com.inspur.edp.web.formmetadata.metadataanalysis.CommandsAnalysis; +import com.inspur.edp.web.formmetadata.resolver.ResolveFormMetadataItem; +import com.inspur.edp.web.formmetadata.resolver.ResolveFormMetadataList; import com.inspur.edp.web.formmetadata.service.FormMetataService; import com.inspur.edp.web.frontendproject.customservice.SourceServicePathGenerator; import com.inspur.edp.web.frontendproject.entity.ChosenFormList; -import com.inspur.edp.web.frontendproject.entity.resolver.ResolveFormMetadataItem; -import com.inspur.edp.web.frontendproject.entity.resolver.ResolveFormMetadataList; import com.inspur.edp.web.frontendproject.metadata.FormMetadataManager; import com.inspur.edp.web.jitengine.JITEngineManager; import com.inspur.edp.web.jitengine.expressions.ExpressionManifest; @@ -82,7 +83,7 @@ public class FormMetadataResolver { FileUtility.forceDelete(dynamicServiceProductPath); - HashMap projectCmpList = new HashMap<>(); + HashMap projectCmpList = new HashMap<>(); for (ResolveFormMetadataItem resolveFormMetadataItem : formMetadataList.getResolveFormMetadataItemList()) { GeneratedI18nResourceList i18nResourceList = new GeneratedI18nResourceList(); diff --git a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/zerocode/operation/CommandMetadataOperation.java b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/zerocode/operation/CommandMetadataOperation.java index 47c9399013e6aadfc4b83f9a60ef4b8d94d379ce..4f49b2add4dc02f80bbf20f8d42272831d010a6d 100644 --- a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/zerocode/operation/CommandMetadataOperation.java +++ b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/zerocode/operation/CommandMetadataOperation.java @@ -16,24 +16,23 @@ package com.inspur.edp.web.frontendproject.zerocode.operation; -import com.inspur.edp.cdp.web.component.metadata.define.WebComponentMetadata; import com.inspur.edp.web.common.environment.ExecuteEnvironment; import com.inspur.edp.web.formmetadata.metadata.formdom.FormDOM; +import com.inspur.edp.web.formmetadata.metadataanalysis.CommandServiceAnalysis; +import com.inspur.edp.web.formmetadata.metadataanalysis.CommandsAnalysis; import com.inspur.edp.web.frontendproject.zerocode.operation.services.ServicePathGenerator; -import com.inspur.edp.web.jitengine.metadataanalysis.CommandsAnalysis; import com.inspur.edp.web.frontendproject.zerocode.ZeroCodeFormParameter; -import com.inspur.edp.web.jitengine.metadataparser.commandservice.CommandServiceAnalysis; import java.util.HashMap; class CommandMetadataOperation { public void save(FormDOM json, ZeroCodeFormParameter formParameter, String webDevPath, String formMetadataName) { CommandsAnalysis commandsAnalysis = new CommandsAnalysis(ExecuteEnvironment.Runtime, false); - HashMap cmpCacheList = new HashMap<>(); - commandsAnalysis.resolveCommand(json, formMetadataName, webDevPath, cmpCacheList, null, null); + HashMap cmpCacheList = new HashMap<>(); + commandsAnalysis.resolveCommand(CommandsAnalysis.ResolveCommandParameter.init(formParameter.getMetadata(), json), formMetadataName, webDevPath, cmpCacheList, null, null); } - public void saveCommandSourceCode(FormDOM json,String webDevPath) { + public void saveCommandSourceCode(FormDOM json, String webDevPath) { String servicesSourceDir = ServicePathGenerator.getServicesSourceDir(webDevPath); CommandServiceAnalysis.resolveCommandService(json, null, servicesSourceDir, webDevPath, ExecuteEnvironment.Runtime, false); }