diff --git a/client/.gitignore b/client/.gitignore
deleted file mode 100644
index 60ea5a5..0000000
--- a/client/.gitignore
+++ /dev/null
@@ -1,169 +0,0 @@
-*.iml
-*.ipr
-*.iws
-*.idea/*
-.project
-.settings/
-core/.classpath
-core/.gitignore
-core/.project
-core/.settings/
-dest
-*.egg.*
-.git
-build
-dist
-*.pyc
-*~
-#*
-*#
-*.log*
-../spec/target/classes
-*.egg-info*
-# .gitignore for maven
-target/
-*.releaseBackup
-.git/*
-.SQI_PROCESS
-.SQI_BETA_STATUS
-
-# web application files
-#/web-app/WEB-INF
-
-# IDE support files
-/.classpath
-/.launch
-/.project
-/.settings
-.idea/*
-/*.launch
-/*.tmproj
-/ivy*
-/eclipse
-
-# default HSQL database files for production mode
-/prodDb.*
-
-# general HSQL database files
-*Db.properties
-*Db.script
-
-# logs
-/stacktrace.log
-/test/reports
-/logs
-*.log
-*.log.*
-
-# plugin release file
-/*.zip
-/*.zip.sha1
-
-# older plugin install locations
-/web-app/plugins
-/web-app/WEB-INF/classes
-
-# "temporary" build files
-target/
-**/target/
-out/
-build/
-
-# other
-*.iws
-
-#.gitignore for java
-*.class
-
-# Package Files #
-*.jar
-*.war
-*.ear
-
-
-
-## .gitignore for eclipse
-
-*.pydevproject
-.project
-.metadata
-bin/**
-tmp/**
-tmp/**/*
-*.tmp
-*.bak
-*.swp
-*~.nib
-local.properties
-.classpath
-.settings/
-.loadpath
-
-# External tool builders
-.externalToolBuilders/
-
-# Locally stored "Eclipse launch configurations"
-*.launch
-
-# CDT-specific
-.cproject
-
-# PDT-specific
-.buildpath
-
-## .gitignore for intellij
-
-*.iml
-*.ipr
-*.iws
-.idea/
-
-## .gitignore for windows
-
-# Windows image file caches
-Thumbs.db
-ehthumbs.db
-
-# Folder config file
-Desktop.ini
-
-# Recycle Bin used on file shares
-$RECYCLE.BIN/
-
-## .gitignore for mac os x
-
-.DS_Store
-.AppleDouble
-.LSOverride
-
-
-# Thumbnails
-._*
-
-# Files that might appear on external disk
-.Spotlight-V100
-.Trashes
-
-## hack for graddle wrapper
-!wrapper/*.jar
-!**/wrapper/*.jar
-
-# Packages #
-# it's better to unpack these files and commit the raw source
-# git has its own built in compression methods
-*.7z
-*.dmg
-*.gz
-*.iso
-*.jar
-*.rar
-*.tar
-*.zip
-*.war
-*.ear
-*.tgz
-
-# NODE_MODULES
-**/node_modules/
-
-**/.factorypath
\ No newline at end of file
diff --git a/client/client-common/pom.xml b/client/client-common/pom.xml
index fdcd31c..a898324 100644
--- a/client/client-common/pom.xml
+++ b/client/client-common/pom.xml
@@ -4,7 +4,7 @@
com.aliyun.dataworks
client
- 1.1.9-2
+ 1.1.9-8
../pom.xml
diff --git a/client/client-common/src/main/conf/logback.xml b/client/client-common/src/main/conf/logback.xml
index 36bba3b..3feb09d 100644
--- a/client/client-common/src/main/conf/logback.xml
+++ b/client/client-common/src/main/conf/logback.xml
@@ -27,7 +27,7 @@
${LOG_FILE}
${FILE_LOG_PATTERN}
- utf8
+ UTF-8
@@ -64,7 +64,7 @@
${CONSOLE_LOG_PATTERN}
- utf8
+ UTF-8
@@ -77,6 +77,7 @@
-
+
+
\ No newline at end of file
diff --git a/client/client-common/src/main/java/com/aliyun/dataworks/client/command/CommandAppEntrance.java b/client/client-common/src/main/java/com/aliyun/dataworks/client/command/CommandAppEntrance.java
index ea1850f..6f7263b 100644
--- a/client/client-common/src/main/java/com/aliyun/dataworks/client/command/CommandAppEntrance.java
+++ b/client/client-common/src/main/java/com/aliyun/dataworks/client/command/CommandAppEntrance.java
@@ -96,9 +96,9 @@ private static Map> loadApps(String conf, AppType.
appMeta.setName(appName);
appMeta.setType(appType);
log.info("register command app type: {}, name: {}, class: {}", appType, appName, appMeta.getAppClass());
- CommandAppFactory.register(appType, appName, (Class extends CommandApp>)Class.forName(appMeta.getAppClass()));
- } catch (ClassNotFoundException e) {
- log.info("register command app failed, appType: {}, appName: {}, class: {}, error: ", appType, appName, appMeta.getAppClass(), e);
+ CommandAppFactory.register(appType, appName, appMeta.getAppClass());
+ } catch (Exception e) {
+ throw new RuntimeException(e);
}
}));
diff --git a/client/client-common/src/main/java/com/aliyun/dataworks/client/command/CommandAppFactory.java b/client/client-common/src/main/java/com/aliyun/dataworks/client/command/CommandAppFactory.java
index 52013bf..3b08683 100644
--- a/client/client-common/src/main/java/com/aliyun/dataworks/client/command/CommandAppFactory.java
+++ b/client/client-common/src/main/java/com/aliyun/dataworks/client/command/CommandAppFactory.java
@@ -30,10 +30,10 @@
*/
@Slf4j
public class CommandAppFactory {
- private static final Map>> commandApps = new HashMap<>();
+ private static final Map> commandApps = new HashMap<>();
- public static void register(AppType appType, String appName, Class extends CommandApp> readerAppClz) {
- Map> apps = commandApps.computeIfAbsent(appType, type -> new HashMap<>());
+ public static void register(AppType appType, String appName, String readerAppClz) {
+ Map apps = commandApps.computeIfAbsent(appType, type -> new HashMap<>());
if (apps.containsKey(appName)) {
return;
}
@@ -42,19 +42,21 @@ public static void register(AppType appType, String appName, Class extends Com
}
@SuppressWarnings("unchecked")
- public static T create(AppType appType, String appName) throws InstantiationException, IllegalAccessException {
+ public static T create(AppType appType, String appName) throws InstantiationException,
+ IllegalAccessException, ClassNotFoundException {
if (!commandApps.containsKey(appType)) {
throw new RuntimeException("unregistered app type: " + appType);
}
- Map> apps = commandApps.get(appType);
+ Map apps = commandApps.get(appType);
if (!apps.containsKey(appName)) {
log.error("appName: {} not found in apps: {}", appName, apps);
throw new RuntimeException("unregistered app name: " + appName);
}
- Class extends CommandApp> clz = apps.get(appName);
- return (T)clz.newInstance();
+ String clz = apps.get(appName);
+ Class clazz = Class.forName(clz);
+ return (T) clazz.newInstance();
}
public static Map> getApps() {
diff --git a/client/client-spark-utils/pom.xml b/client/client-spark-utils/pom.xml
index 57d3907..4019036 100644
--- a/client/client-spark-utils/pom.xml
+++ b/client/client-spark-utils/pom.xml
@@ -4,7 +4,7 @@
com.aliyun.dataworks
client
- 1.1.9-2
+ 1.1.9-8
../pom.xml
diff --git a/client/client-toolkits/pom.xml b/client/client-toolkits/pom.xml
index f96d449..7f243fb 100644
--- a/client/client-toolkits/pom.xml
+++ b/client/client-toolkits/pom.xml
@@ -4,7 +4,7 @@
com.aliyun.dataworks
client
- 1.1.9-2
+ 1.1.9-8
../pom.xml
diff --git a/client/migrationx/migrationx-common/pom.xml b/client/migrationx/migrationx-common/pom.xml
index fa68e82..e1ddc07 100644
--- a/client/migrationx/migrationx-common/pom.xml
+++ b/client/migrationx/migrationx-common/pom.xml
@@ -22,7 +22,7 @@
migrationx
com.aliyun.dataworks
- 1.1.9-2
+ 1.1.9-8
../pom.xml
diff --git a/client/migrationx/migrationx-common/src/main/java/com/aliyun/migrationx/common/http/HttpClientUtil.java b/client/migrationx/migrationx-common/src/main/java/com/aliyun/migrationx/common/http/HttpClientUtil.java
index b799748..2065f1b 100644
--- a/client/migrationx/migrationx-common/src/main/java/com/aliyun/migrationx/common/http/HttpClientUtil.java
+++ b/client/migrationx/migrationx-common/src/main/java/com/aliyun/migrationx/common/http/HttpClientUtil.java
@@ -29,10 +29,6 @@
import org.apache.http.client.methods.HttpRequestBase;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.net.SocketException;
/**
* @author 聿剑
@@ -66,7 +62,7 @@ public boolean isRetry(Exception e) {
}
public String executeAndGet(HttpRequestBase httpRequestBase) throws Exception {
- return executeAndGet(httpRequestBase, 3, 1000);
+ return executeAndGet(httpRequestBase, 1, 1000);
}
public String executeAndGet(HttpRequestBase httpRequestBase, boolean retry) throws Exception {
diff --git a/client/migrationx/migrationx-common/src/main/java/com/aliyun/migrationx/common/metrics/DolphinMetricsCollector.java b/client/migrationx/migrationx-common/src/main/java/com/aliyun/migrationx/common/metrics/DolphinMetricsCollector.java
index cb30094..3bbe20f 100644
--- a/client/migrationx/migrationx-common/src/main/java/com/aliyun/migrationx/common/metrics/DolphinMetricsCollector.java
+++ b/client/migrationx/migrationx-common/src/main/java/com/aliyun/migrationx/common/metrics/DolphinMetricsCollector.java
@@ -53,7 +53,7 @@ public class DolphinMetricsCollector implements MetricsCollector {
private String transformerType;
private Date startTime;
- private Consumer defaultMetricsConsumer = metrics -> metricsLogger.warn("{}", GSON.toJson(metrics));
+ private Consumer defaultMetricsConsumer = metrics -> metricsLogger.info("{}", GSON.toJson(metrics));
public DolphinMetricsCollector() {
startTime = new Date();
@@ -172,7 +172,7 @@ private Metrics findMetrics(Metrics tmp) {
@Override
public void finishCollector() {
- finishCollector((summary) -> summaryLogger.warn("{}", PrettyGson.toJson(summary)));
+ finishCollector((summary) -> summaryLogger.info("{}", PrettyGson.toJson(summary)));
}
@Override
diff --git a/client/migrationx/migrationx-common/src/main/java/com/aliyun/migrationx/common/utils/BeanUtils.java b/client/migrationx/migrationx-common/src/main/java/com/aliyun/migrationx/common/utils/BeanUtils.java
index bd11c57..f5b5373 100644
--- a/client/migrationx/migrationx-common/src/main/java/com/aliyun/migrationx/common/utils/BeanUtils.java
+++ b/client/migrationx/migrationx-common/src/main/java/com/aliyun/migrationx/common/utils/BeanUtils.java
@@ -8,8 +8,13 @@
package com.aliyun.migrationx.common.utils;
-import org.dozer.DozerBeanMapper;
+import java.beans.PropertyDescriptor;
+import java.lang.reflect.InvocationTargetException;
+import java.util.Arrays;
+import java.util.List;
+import org.apache.commons.beanutils.PropertyUtils;
+import org.dozer.DozerBeanMapper;
/**
* Desc:
*
@@ -33,4 +38,45 @@ public static T deepCopy(Object obj, Class clazz) {
private BeanUtils() {
}
+
+ public static void copyProperties(Object src, Object dest) {
+ try {
+ org.apache.commons.beanutils.BeanUtils.copyProperties(dest, src);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ public static void copyProperties(Object src, Object dest, String... ignoreProperties) {
+ try {
+ copyPropertiesWithIgnore(dest, src, ignoreProperties);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ private static void copyPropertiesWithIgnore(Object dest, Object orig, String... ignoreProperties)
+ throws IllegalAccessException, InvocationTargetException {
+ List ignoreList = (ignoreProperties != null) ? Arrays.asList(ignoreProperties) : null;
+
+ PropertyDescriptor[] origDescriptors = PropertyUtils.getPropertyDescriptors(orig);
+ for (PropertyDescriptor origDescriptor : origDescriptors) {
+ String name = origDescriptor.getName();
+ if ("class".equals(name)) {
+ continue; // Ignore the "class" property
+ }
+ if (ignoreList != null && ignoreList.contains(name)) {
+ continue; // Ignore specified properties
+ }
+
+ if (PropertyUtils.isReadable(orig, name) && PropertyUtils.isWriteable(dest, name)) {
+ try {
+ Object value = PropertyUtils.getSimpleProperty(orig, name);
+ org.apache.commons.beanutils.BeanUtils.setProperty(dest, name, value);
+ } catch (NoSuchMethodException e) {
+ // Ignore if the setter method does not exist in the destination bean
+ }
+ }
+ }
+ }
}
\ No newline at end of file
diff --git a/client/migrationx/migrationx-common/src/main/java/com/aliyun/migrationx/common/utils/Config.java b/client/migrationx/migrationx-common/src/main/java/com/aliyun/migrationx/common/utils/Config.java
index 0be5968..4d7d886 100644
--- a/client/migrationx/migrationx-common/src/main/java/com/aliyun/migrationx/common/utils/Config.java
+++ b/client/migrationx/migrationx-common/src/main/java/com/aliyun/migrationx/common/utils/Config.java
@@ -39,4 +39,9 @@ public static void init(Config config) {
* '*' for all
*/
private List filterTasks = new ArrayList<>();
+
+ /**
+ * workflow base path
+ */
+ private String basePath;
}
diff --git a/client/migrationx/migrationx-common/src/main/java/com/aliyun/migrationx/common/utils/IntlUtils.java b/client/migrationx/migrationx-common/src/main/java/com/aliyun/migrationx/common/utils/IntlUtils.java
index ba8b33d..82056b9 100644
--- a/client/migrationx/migrationx-common/src/main/java/com/aliyun/migrationx/common/utils/IntlUtils.java
+++ b/client/migrationx/migrationx-common/src/main/java/com/aliyun/migrationx/common/utils/IntlUtils.java
@@ -15,9 +15,9 @@
package com.aliyun.migrationx.common.utils;
-import java.io.BufferedReader;
import java.io.IOException;
-import java.io.InputStreamReader;
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Locale;
@@ -33,9 +33,8 @@
import lombok.ToString;
import lombok.experimental.Accessors;
import org.apache.commons.collections4.MapUtils;
+import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
-import org.springframework.core.io.ClassPathResource;
-import org.springframework.core.io.Resource;
/**
* @author 聿剑
@@ -44,7 +43,7 @@
public class IntlUtils {
public static Map> intlResource = new HashMap<>();
- private static final String CLASS_PATH_RESOURCE = "i18n";
+ public static final String CLASS_PATH_RESOURCE = "i18n";
public static IntlBo get(String key) {
IntlBo intlBo = new IntlBo();
@@ -85,24 +84,34 @@ public static Map getLanguageResource() {
}
}
- private static String readFileToStr(String fileName) {
- Resource resource = new ClassPathResource(CLASS_PATH_RESOURCE + "/" + fileName);
- try {
- BufferedReader br = new BufferedReader(new InputStreamReader(resource.getInputStream()));
- StringBuilder buffer = new StringBuilder();
- String line;
-
- while((line = br.readLine()) != null) {
- buffer.append(line);
+ public static String readFileToStr(String file) throws IOException {
+ String path = CLASS_PATH_RESOURCE + "/" + file;
+ try (InputStream inputStream = IntlUtils.class.getClassLoader().getResourceAsStream(path)) {
+ if (inputStream != null) {
+ return IOUtils.toString(inputStream, StandardCharsets.UTF_8);
+ } else {
+ return null;
}
-
- resource.getInputStream().close();
- return buffer.toString();
- } catch (IOException e) {
- e.printStackTrace();
- return "";
}
}
+ //private static String readFileToStr(String fileName) {
+ // Resource resource = new ClassPathResource(CLASS_PATH_RESOURCE + "/" + fileName);
+ // try {
+ // BufferedReader br = new BufferedReader(new InputStreamReader(resource.getInputStream()));
+ // StringBuilder buffer = new StringBuilder();
+ // String line;
+ //
+ // while((line = br.readLine()) != null) {
+ // buffer.append(line);
+ // }
+ //
+ // resource.getInputStream().close();
+ // return buffer.toString();
+ // } catch (IOException e) {
+ // e.printStackTrace();
+ // return "";
+ // }
+ //}
public static class IntlBo {
private String value;
diff --git a/client/migrationx/migrationx-common/src/main/java/com/aliyun/migrationx/common/utils/UuidGenerators.java b/client/migrationx/migrationx-common/src/main/java/com/aliyun/migrationx/common/utils/UuidGenerators.java
new file mode 100644
index 0000000..0b827c0
--- /dev/null
+++ b/client/migrationx/migrationx-common/src/main/java/com/aliyun/migrationx/common/utils/UuidGenerators.java
@@ -0,0 +1,23 @@
+package com.aliyun.migrationx.common.utils;
+
+import java.util.Objects;
+import java.util.function.Function;
+
+import static com.aliyun.migrationx.common.utils.UuidUtils.genUuidWithoutHorizontalLine;
+
+public class UuidGenerators {
+
+ private static final Function generateUuidFunc = code -> genUuidWithoutHorizontalLine();
+
+ public static String generateUuid(Long code) {
+ if (Objects.isNull(code)) {
+ return generateUuid();
+ }
+ return generateUuidFunc.apply(code);
+ }
+
+ public static String generateUuid() {
+ String uuid = genUuidWithoutHorizontalLine();
+ return uuid;
+ }
+}
diff --git a/client/migrationx/migrationx-domain/migrationx-domain-adf/pom.xml b/client/migrationx/migrationx-domain/migrationx-domain-adf/pom.xml
index fc58e86..0c7c3e2 100644
--- a/client/migrationx/migrationx-domain/migrationx-domain-adf/pom.xml
+++ b/client/migrationx/migrationx-domain/migrationx-domain-adf/pom.xml
@@ -6,7 +6,7 @@
com.aliyun.dataworks
migrationx-domain
- 1.1.9-2
+ 1.1.9-8
../pom.xml
diff --git a/client/migrationx/migrationx-domain/migrationx-domain-airflow/pom.xml b/client/migrationx/migrationx-domain/migrationx-domain-airflow/pom.xml
index b2fa55d..e4fecad 100644
--- a/client/migrationx/migrationx-domain/migrationx-domain-airflow/pom.xml
+++ b/client/migrationx/migrationx-domain/migrationx-domain-airflow/pom.xml
@@ -20,7 +20,7 @@
migrationx-domain
com.aliyun.dataworks
- 1.1.9-2
+ 1.1.9-8
../pom.xml
4.0.0
diff --git a/client/migrationx/migrationx-domain/migrationx-domain-aliyunemr/pom.xml b/client/migrationx/migrationx-domain/migrationx-domain-aliyunemr/pom.xml
index 2aacf79..cebb868 100644
--- a/client/migrationx/migrationx-domain/migrationx-domain-aliyunemr/pom.xml
+++ b/client/migrationx/migrationx-domain/migrationx-domain-aliyunemr/pom.xml
@@ -20,7 +20,7 @@
migrationx-domain
com.aliyun.dataworks
- 1.1.9-2
+ 1.1.9-8
../pom.xml
4.0.0
diff --git a/client/migrationx/migrationx-domain/migrationx-domain-aliyunemr/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/aliyunemr/AliyunEmrService.java b/client/migrationx/migrationx-domain/migrationx-domain-aliyunemr/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/aliyunemr/AliyunEmrService.java
index 5effc13..2689c7c 100644
--- a/client/migrationx/migrationx-domain/migrationx-domain-aliyunemr/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/aliyunemr/AliyunEmrService.java
+++ b/client/migrationx/migrationx-domain/migrationx-domain-aliyunemr/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/aliyunemr/AliyunEmrService.java
@@ -28,7 +28,9 @@
import java.util.Objects;
import java.util.Optional;
+import com.aliyun.migrationx.common.utils.BeanUtils;
import com.aliyun.migrationx.common.utils.GsonUtils;
+
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.emr.model.v20160408.DescribeFlowCategoryRequest;
import com.aliyuncs.emr.model.v20160408.DescribeFlowCategoryResponse;
@@ -56,7 +58,6 @@
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.BeanUtils;
/**
* @author sam.liux
diff --git a/client/migrationx/migrationx-domain/migrationx-domain-azkaban/pom.xml b/client/migrationx/migrationx-domain/migrationx-domain-azkaban/pom.xml
index fdad0a3..e59fa4c 100644
--- a/client/migrationx/migrationx-domain/migrationx-domain-azkaban/pom.xml
+++ b/client/migrationx/migrationx-domain/migrationx-domain-azkaban/pom.xml
@@ -20,7 +20,7 @@
migrationx-domain
com.aliyun.dataworks
- 1.1.9-2
+ 1.1.9-8
../pom.xml
4.0.0
diff --git a/client/migrationx/migrationx-domain/migrationx-domain-caiyunjian/pom.xml b/client/migrationx/migrationx-domain/migrationx-domain-caiyunjian/pom.xml
index 7be6416..a267da2 100644
--- a/client/migrationx/migrationx-domain/migrationx-domain-caiyunjian/pom.xml
+++ b/client/migrationx/migrationx-domain/migrationx-domain-caiyunjian/pom.xml
@@ -20,7 +20,7 @@
migrationx-domain
com.aliyun.dataworks
- 1.1.9-2
+ 1.1.9-8
../pom.xml
4.0.0
diff --git a/client/migrationx/migrationx-domain/migrationx-domain-core/pom.xml b/client/migrationx/migrationx-domain/migrationx-domain-core/pom.xml
index f78bb7e..18dd19b 100644
--- a/client/migrationx/migrationx-domain/migrationx-domain-core/pom.xml
+++ b/client/migrationx/migrationx-domain/migrationx-domain-core/pom.xml
@@ -21,7 +21,7 @@
com.aliyun.dataworks
migrationx-domain
- 1.1.9-2
+ 1.1.9-8
../pom.xml
diff --git a/client/migrationx/migrationx-domain/migrationx-domain-datago/pom.xml b/client/migrationx/migrationx-domain/migrationx-domain-datago/pom.xml
index 53566b7..c80d933 100644
--- a/client/migrationx/migrationx-domain/migrationx-domain-datago/pom.xml
+++ b/client/migrationx/migrationx-domain/migrationx-domain-datago/pom.xml
@@ -20,7 +20,7 @@
migrationx-domain
com.aliyun.dataworks
- 1.1.9-2
+ 1.1.9-8
../pom.xml
4.0.0
diff --git "a/client/migrationx/migrationx-domain/migrationx-domain-dataworks/.tmp/test/DataStudio/\344\270\232\345\212\241\346\265\201\347\250\213/test_flow1/MaxCompute/\346\225\260\346\215\256\345\274\200\345\217\221/test1/test1.schedule.json" "b/client/migrationx/migrationx-domain/migrationx-domain-dataworks/.tmp/test/DataStudio/\344\270\232\345\212\241\346\265\201\347\250\213/test_flow1/MaxCompute/\346\225\260\346\215\256\345\274\200\345\217\221/test1/test1.schedule.json"
new file mode 100644
index 0000000..40deecf
--- /dev/null
+++ "b/client/migrationx/migrationx-domain/migrationx-domain-dataworks/.tmp/test/DataStudio/\344\270\232\345\212\241\346\265\201\347\250\213/test_flow1/MaxCompute/\346\225\260\346\215\256\345\274\200\345\217\221/test1/test1.schedule.json"
@@ -0,0 +1,29 @@
+{
+ "version":"1.1.0",
+ "kind":"CycleWorkflow",
+ "spec":{
+ "nodes":[
+ {
+ "recurrence":"Normal",
+ "id":"e2f7ce7c-e5ee-49aa-a13f-2958006e257e",
+ "instanceMode":"T+1",
+ "rerunMode":"Allowed",
+ "script":{
+ "path":"业务流程/test_flow1/MaxCompute/数据开发",
+ "runtime":{
+ "engine":"MaxCompute",
+ "command":"ODPS_SQL"
+ },
+ "id":"e2f7ce7c-e5ee-49aa-a13f-2958006e257e"
+ },
+ "name":"test1",
+ "inputs":{
+
+ },
+ "outputs":{
+
+ }
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/client/migrationx/migrationx-transformer/src/main/java/com/aliyun/dataworks/migrationx/transformer/dataworks/converter/dolphinscheduler/v1/AbstractDolphinSchedulerConverter.java "b/client/migrationx/migrationx-domain/migrationx-domain-dataworks/.tmp/test/DataStudio/\344\270\232\345\212\241\346\265\201\347\250\213/test_flow1/MaxCompute/\346\225\260\346\215\256\345\274\200\345\217\221/test1/test1.sql"
similarity index 100%
rename from client/migrationx/migrationx-transformer/src/main/java/com/aliyun/dataworks/migrationx/transformer/dataworks/converter/dolphinscheduler/v1/AbstractDolphinSchedulerConverter.java
rename to "client/migrationx/migrationx-domain/migrationx-domain-dataworks/.tmp/test/DataStudio/\344\270\232\345\212\241\346\265\201\347\250\213/test_flow1/MaxCompute/\346\225\260\346\215\256\345\274\200\345\217\221/test1/test1.sql"
diff --git a/client/migrationx/migrationx-domain/migrationx-domain-dataworks/.tmp/test/SPEC.FORMAT b/client/migrationx/migrationx-domain/migrationx-domain-dataworks/.tmp/test/SPEC.FORMAT
new file mode 100644
index 0000000..e69de29
diff --git a/client/migrationx/migrationx-domain/migrationx-domain-dataworks/pom.xml b/client/migrationx/migrationx-domain/migrationx-domain-dataworks/pom.xml
index f9a58e3..f102511 100644
--- a/client/migrationx/migrationx-domain/migrationx-domain-dataworks/pom.xml
+++ b/client/migrationx/migrationx-domain/migrationx-domain-dataworks/pom.xml
@@ -20,7 +20,7 @@
migrationx-domain
com.aliyun.dataworks
- 1.1.9-2
+ 1.1.9-8
../pom.xml
4.0.0
diff --git a/client/migrationx/migrationx-domain/migrationx-domain-dataworks/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/objects/entity/client/File.java b/client/migrationx/migrationx-domain/migrationx-domain-dataworks/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/objects/entity/client/File.java
index e9bdea5..8d467b4 100644
--- a/client/migrationx/migrationx-domain/migrationx-domain-dataworks/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/objects/entity/client/File.java
+++ b/client/migrationx/migrationx-domain/migrationx-domain-dataworks/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/objects/entity/client/File.java
@@ -87,4 +87,8 @@ public class File {
private Boolean ignoreLock;
private String advanceSettings;
+ /**
+ * 绝对路径,目前只有ListFiles在needAbsoluteFolderPath时会用到
+ */
+ private String absoluteFolderPath;
}
diff --git a/client/migrationx/migrationx-domain/migrationx-domain-dataworks/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/service/spec/NodeSpecAdapter.java b/client/migrationx/migrationx-domain/migrationx-domain-dataworks/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/service/spec/NodeSpecAdapter.java
index 956063e..1b8fdca 100644
--- a/client/migrationx/migrationx-domain/migrationx-domain-dataworks/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/service/spec/NodeSpecAdapter.java
+++ b/client/migrationx/migrationx-domain/migrationx-domain-dataworks/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/service/spec/NodeSpecAdapter.java
@@ -28,6 +28,8 @@
import java.util.stream.Collectors;
import java.util.stream.Stream;
+import com.alibaba.fastjson2.JSONWriter.Feature;
+
import com.aliyun.dataworks.common.spec.adapter.SpecAdapter;
import com.aliyun.dataworks.common.spec.adapter.SpecHandlerContext;
import com.aliyun.dataworks.common.spec.domain.DataWorksWorkflowSpec;
@@ -55,9 +57,6 @@
import com.aliyun.dataworks.migrationx.domain.dataworks.service.spec.entity.DwNodeEntity;
import com.aliyun.dataworks.migrationx.domain.dataworks.service.spec.handler.BasicNodeSpecHandler;
import com.aliyun.dataworks.migrationx.domain.dataworks.service.spec.handler.ComponentSpecHandler;
-
-import com.alibaba.fastjson2.JSONWriter.Feature;
-
import com.google.common.base.Joiner;
import com.google.common.base.Preconditions;
import lombok.extern.slf4j.Slf4j;
@@ -82,14 +81,14 @@ private void registerHandlers() {
Reflections reflections = new Reflections(BasicNodeSpecHandler.class.getPackage().getName());
Set> handlerClasses = reflections.getSubTypesOf(BasicNodeSpecHandler.class);
SetUtils.emptyIfNull(handlerClasses).stream()
- .filter(h -> !h.equals(BasicNodeSpecHandler.class))
- .forEach(this::registerHandler);
+ .filter(h -> !h.equals(BasicNodeSpecHandler.class))
+ .forEach(this::registerHandler);
}
public String getNodeSpec(DwNodeEntity dmNodeBO, SpecHandlerContext context) {
context.setSpecAdapter(this);
SpecWriterContext specWriterContext = new SpecWriterContext();
- SpecificationWriter writer = (SpecificationWriter) WriterFactory.getWriter(Specification.class, specWriterContext);
+ SpecificationWriter writer = (SpecificationWriter)WriterFactory.getWriter(Specification.class, specWriterContext);
return writer.write(getNodeSpecObject(dmNodeBO, context), specWriterContext).toJSONString(Feature.PrettyFormat);
}
@@ -97,13 +96,17 @@ public Specification getNodeSpecObject(DwNodeEntity dwNod
Preconditions.checkNotNull(dwNode, "node is null");
context.setSpecAdapter(this);
Specification spec = new Specification<>();
+ DataWorksWorkflowSpec dataWorksWorkflowSpec = new DataWorksWorkflowSpec();
spec.setVersion(SpecVersion.V_1_1_0.getLabel());
spec.setKind(Optional.ofNullable(dwNode.getNodeUseType()).map(useType -> {
switch (useType) {
case MANUAL:
return SpecKind.MANUAL_NODE.getLabel();
- case MANUAL_WORKFLOW:
+ case MANUAL_WORKFLOW: {
+ dataWorksWorkflowSpec.setId(Optional.ofNullable(dwNode.getBizId()).filter(id -> id > 0).map(String::valueOf).orElse(null));
+ dataWorksWorkflowSpec.setName(dwNode.getBizName());
return SpecKind.MANUAL_WORKFLOW.getLabel();
+ }
case COMPONENT:
return SpecKind.COMPONENT.getLabel();
default:
@@ -113,9 +116,6 @@ public Specification getNodeSpecObject(DwNodeEntity dwNod
Map metadata = new LinkedHashMap<>();
metadata.put("owner", dwNode.getOwner());
spec.setMetadata(metadata);
- DataWorksWorkflowSpec dataWorksWorkflowSpec = new DataWorksWorkflowSpec();
- dataWorksWorkflowSpec.setId(Optional.ofNullable(dwNode.getBizId()).filter(id -> id > 0).map(String::valueOf).orElse(null));
- dataWorksWorkflowSpec.setName(Optional.ofNullable(dwNode.getBizName()).orElse(null));
spec.setSpec(dataWorksWorkflowSpec);
Optional.ofNullable(spec.getKind()).map(kind -> LabelEnum.getByLabel(SpecKind.class, kind)).ifPresent(kind -> {
@@ -125,7 +125,7 @@ public Specification getNodeSpecObject(DwNodeEntity dwNod
Optional.ofNullable(handler.handle(dwNode)).ifPresent(nodes::add);
dataWorksWorkflowSpec.setComponents(nodes);
} else {
- BasicNodeSpecHandler nodeSpecHandler = (BasicNodeSpecHandler) getHandler(dwNode, context.getLocale());
+ BasicNodeSpecHandler nodeSpecHandler = (BasicNodeSpecHandler)getHandler(dwNode, context.getLocale());
nodeSpecHandler.setContext(context);
dataWorksWorkflowSpec.setFlow(toFlow(nodeSpecHandler, dwNode, context));
List nodes = new ArrayList<>();
@@ -176,7 +176,7 @@ public List toFlow(BasicNodeSpecHandler handler, DwNodeEntity dm
flowDepend.setNodeId(nodeId);
List inputs = handler.getNodeInputs(dmNodeBo);
- flowDepend.setDepends(ListUtils.emptyIfNull(inputs).stream().map(in -> (SpecNodeOutput) in).map(dep -> {
+ flowDepend.setDepends(ListUtils.emptyIfNull(inputs).stream().map(in -> (SpecNodeOutput)in).map(dep -> {
SpecDepend specDepend = new SpecDepend();
specDepend.setType(DependencyType.NORMAL);
SpecNodeOutput art = new SpecNodeOutput();
@@ -188,21 +188,21 @@ public List toFlow(BasicNodeSpecHandler handler, DwNodeEntity dm
}).collect(Collectors.toList()));
if (Stream.of(DependentType.USER_DEFINE, DependentType.USER_DEFINE_AND_SELF).anyMatch(
- dt -> Objects.equals(dmNodeBo.getDependentType(), dt.getValue()) && StringUtils.isNotBlank(dmNodeBo.getDependentDataNode()))) {
+ dt -> Objects.equals(dmNodeBo.getDependentType(), dt.getValue()) && StringUtils.isNotBlank(dmNodeBo.getDependentDataNode()))) {
Optional.ofNullable(StringUtils.split(dmNodeBo.getDependentDataNode(), ",")).map(Arrays::asList).orElse(new ArrayList<>()).stream().map(
- out -> {
- SpecDepend specDepend = new SpecDepend();
- specDepend.setType(DependencyType.CROSS_CYCLE_OTHER_NODE);
- SpecNodeOutput art = new SpecNodeOutput();
- art.setData(out);
- art.setArtifactType(ArtifactType.NODE_OUTPUT);
- specDepend.setOutput(art);
- return specDepend;
- }).forEach(sp -> flowDepend.getDepends().add(sp));
+ out -> {
+ SpecDepend specDepend = new SpecDepend();
+ specDepend.setType(DependencyType.CROSS_CYCLE_OTHER_NODE);
+ SpecNodeOutput art = new SpecNodeOutput();
+ art.setData(out);
+ art.setArtifactType(ArtifactType.NODE_OUTPUT);
+ specDepend.setOutput(art);
+ return specDepend;
+ }).forEach(sp -> flowDepend.getDepends().add(sp));
}
if (Stream.of(DependentType.SELF, DependentType.USER_DEFINE_AND_SELF, DependentType.CHILD_AND_SELF).anyMatch(
- dt -> Objects.equals(dt.getValue(), dmNodeBo.getDependentType()))) {
+ dt -> Objects.equals(dt.getValue(), dmNodeBo.getDependentType()))) {
SpecDepend specDepend = new SpecDepend();
specDepend.setType(DependencyType.CROSS_CYCLE_SELF);
specDepend.setNodeId(nodeId);
diff --git a/client/migrationx/migrationx-domain/migrationx-domain-dataworks/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/service/spec/handler/EmrNodeSpecHandler.java b/client/migrationx/migrationx-domain/migrationx-domain-dataworks/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/service/spec/handler/EmrNodeSpecHandler.java
index 6e8c6d1..c0ba71b 100644
--- a/client/migrationx/migrationx-domain/migrationx-domain-dataworks/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/service/spec/handler/EmrNodeSpecHandler.java
+++ b/client/migrationx/migrationx-domain/migrationx-domain-dataworks/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/service/spec/handler/EmrNodeSpecHandler.java
@@ -28,9 +28,10 @@
import com.aliyun.dataworks.common.spec.domain.ref.runtime.SpecScriptRuntime;
import com.aliyun.dataworks.common.spec.utils.ReflectUtils;
import com.aliyun.dataworks.migrationx.domain.dataworks.service.spec.entity.DwNodeEntity;
+import com.aliyun.migrationx.common.utils.BeanUtils;
+
import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.BeanUtils;
/**
* EMR节点处理器
diff --git a/client/migrationx/migrationx-domain/migrationx-domain-dataworks/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/utils/NodeUtils.java b/client/migrationx/migrationx-domain/migrationx-domain-dataworks/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/utils/NodeUtils.java
index 05d9fe7..056fbbf 100644
--- a/client/migrationx/migrationx-domain/migrationx-domain-dataworks/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/utils/NodeUtils.java
+++ b/client/migrationx/migrationx-domain/migrationx-domain-dataworks/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/utils/NodeUtils.java
@@ -33,6 +33,7 @@
import com.aliyun.dataworks.migrationx.domain.dataworks.objects.entity.client.FileNodeInputOutput;
import com.aliyun.dataworks.migrationx.domain.dataworks.objects.types.IoParseType;
import com.aliyun.dataworks.migrationx.domain.dataworks.objects.types.RerunMode;
+import com.aliyun.migrationx.common.utils.BeanUtils;
import com.aliyun.migrationx.common.utils.GsonUtils;
import com.google.common.base.Joiner;
@@ -44,7 +45,6 @@
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.BeanUtils;
/**
* @author sam.liux
diff --git a/client/migrationx/migrationx-domain/migrationx-domain-dolphinscheduler/pom.xml b/client/migrationx/migrationx-domain/migrationx-domain-dolphinscheduler/pom.xml
index 14235c3..b4aacaf 100644
--- a/client/migrationx/migrationx-domain/migrationx-domain-dolphinscheduler/pom.xml
+++ b/client/migrationx/migrationx-domain/migrationx-domain-dolphinscheduler/pom.xml
@@ -20,7 +20,7 @@
migrationx-domain
com.aliyun.dataworks
- 1.1.9-2
+ 1.1.9-8
../pom.xml
4.0.0
diff --git a/client/migrationx/migrationx-domain/migrationx-domain-dolphinscheduler/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/dolphinscheduler/service/DolphinSchedulerV3PackageLoader.java b/client/migrationx/migrationx-domain/migrationx-domain-dolphinscheduler/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/dolphinscheduler/service/DolphinSchedulerV3PackageLoader.java
index 8668575..6989bdb 100644
--- a/client/migrationx/migrationx-domain/migrationx-domain-dolphinscheduler/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/dolphinscheduler/service/DolphinSchedulerV3PackageLoader.java
+++ b/client/migrationx/migrationx-domain/migrationx-domain-dolphinscheduler/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/dolphinscheduler/service/DolphinSchedulerV3PackageLoader.java
@@ -21,7 +21,6 @@
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
-import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors;
@@ -40,7 +39,6 @@
import com.google.gson.reflect.TypeToken;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.collections4.ListUtils;
import org.apache.commons.io.FileUtils;
/**
@@ -106,9 +104,8 @@ private List readProcessMetaList(File rootDir) {
.map(files -> files.stream().map(this::readProcessMetaJson)
.filter(CollectionUtils::isNotEmpty)
.flatMap(List::stream)
- .filter(Objects::nonNull)
.collect(Collectors.toList()))
- .orElse(ListUtils.emptyIfNull(null));
+ .orElse(Collections.emptyList());
}
private List readProcessMetaJson(File jsonFile) {
diff --git a/client/migrationx/migrationx-domain/migrationx-domain-dolphinscheduler/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/dolphinscheduler/v1/DolphinSchedulerV1Context.java b/client/migrationx/migrationx-domain/migrationx-domain-dolphinscheduler/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/dolphinscheduler/v1/DolphinSchedulerV1Context.java
index f4c1c8c..ee9f775 100644
--- a/client/migrationx/migrationx-domain/migrationx-domain-dolphinscheduler/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/dolphinscheduler/v1/DolphinSchedulerV1Context.java
+++ b/client/migrationx/migrationx-domain/migrationx-domain-dolphinscheduler/src/main/java/com/aliyun/dataworks/migrationx/domain/dataworks/dolphinscheduler/v1/DolphinSchedulerV1Context.java
@@ -22,6 +22,7 @@
import com.aliyun.dataworks.migrationx.domain.dataworks.dolphinscheduler.Project;
import com.aliyun.dataworks.migrationx.domain.dataworks.dolphinscheduler.v1.v139.ProcessMeta;
+import com.aliyun.dataworks.migrationx.domain.dataworks.dolphinscheduler.v1.v139.TaskNode;
import com.aliyun.dataworks.migrationx.domain.dataworks.dolphinscheduler.v1.v139.UdfFunc;
import com.aliyun.dataworks.migrationx.domain.dataworks.dolphinscheduler.v1.v139.datasource.DataSource;
import com.aliyun.dataworks.migrationx.domain.dataworks.dolphinscheduler.v1.v139.entity.ResourceInfo;
@@ -42,7 +43,36 @@ public class DolphinSchedulerV1Context {
private List dagDatas;
private Map projectCodeMap = new HashMap<>();
- private Map> subProcessCodeOutMap = new HashMap<>();
+ private Map> subProcessCodeOutMap = new HashMap<>();
+
+ public Map> getProcessCodeTaskRelationMap() {
+ return processCodeTaskRelationMap;
+ }
+
+ private Map> processCodeTaskRelationMap = new HashMap<>();
+
+ /**
+ * processId:SpecNode
+ */
+ private Map subProcessCodeNodeMap = new HashMap<>();
+ /**
+ * processId: workflow
+ */
+ private Map subProcessCodeWorkflowMap = new HashMap<>();
+
+ /**
+ * taskDefinition.code : SpecNodeOutput.data
+ */
+ private Map taskCodeNodeDataMap = new HashMap<>();
+ private Map taskCodeNodeIdMap = new HashMap<>();
+
+ public Map getTaskCodeSpecNodeMap() {
+ return taskCodeSpecNodeMap;
+ }
+
+ private Map taskCodeSpecNodeMap = new HashMap<>();
+
+ private Map