diff --git a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/TaskConstants.java b/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/TaskConstants.java index 501b4ab574..0e16649416 100644 --- a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/TaskConstants.java +++ b/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/TaskConstants.java @@ -24,6 +24,8 @@ public class TaskConstants { } public static final String APPLICATION_REGEX = "application_\\d+_\\d+"; + + public static final String SETVALUE_REGEX = "\\$\\{setValue\\(([^)]*)\\)}"; /** * string false @@ -369,4 +371,5 @@ public class TaskConstants { * data.quality.error.output.path */ public static final String DATA_QUALITY_ERROR_OUTPUT_PATH = "data-quality.error.output.path"; + } diff --git a/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/AbstractCommandExecutor.java b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/AbstractCommandExecutor.java index 487343517b..660b759f8f 100644 --- a/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/AbstractCommandExecutor.java +++ b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/AbstractCommandExecutor.java @@ -60,6 +60,11 @@ public abstract class AbstractCommandExecutor { * rules for extracting application ID */ protected static final Pattern APPLICATION_REGEX = Pattern.compile(TaskConstants.APPLICATION_REGEX); + + /** + * rules for extracting Var Pool + */ + protected static final Pattern SETVALUE_REGEX = Pattern.compile(TaskConstants.SETVALUE_REGEX); protected StringBuilder varPool = new StringBuilder(); /** @@ -318,7 +323,7 @@ public abstract class AbstractCommandExecutor { String line; while ((line = inReader.readLine()) != null) { if (line.startsWith("${setValue(")) { - varPool.append(line, "${setValue(".length(), line.length() - 2); + varPool.append(findVarPool(line)); varPool.append("$VarPool$"); } else { logBuffer.add(line); @@ -403,6 +408,19 @@ public abstract class AbstractCommandExecutor { return lineList; } + + /** + * find var pool + * @param line + * @return + */ + private String findVarPool(String line){ + Matcher matcher = SETVALUE_REGEX.matcher(line); + if (matcher.find()) { + return matcher.group(1); + } + return null; + } /** * find app id