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