From 5d9331f4eef14f011b1bc90526e5de2dee2f0756 Mon Sep 17 00:00:00 2001 From: juzimao <578961953@qq.com> Date: Fri, 9 Sep 2022 10:37:24 +0800 Subject: [PATCH] [Feature-10683][Task Plugin] Add Java Task Plugin. (#10689) --- docs/configs/docsdev.js | 8 + docs/docs/en/guide/task/java.md | 47 +++ docs/docs/zh/guide/task/java.md | 50 +++ docs/img/tasks/demo/java_task02.png | Bin 0 -> 286501 bytes .../dolphinscheduler-task-all/pom.xml | 6 + .../plugin/task/api/model/TaskResponse.java | 69 +--- .../dolphinscheduler-task-java/pom.xml | 45 ++ .../plugin/task/java/JavaConstants.java | 62 +++ .../plugin/task/java/JavaParameters.java | 84 ++++ .../plugin/task/java/JavaTask.java | 388 ++++++++++++++++++ .../plugin/task/java/JavaTaskChannel.java | 72 ++++ .../task/java/JavaTaskChannelFactory.java | 59 +++ .../JavaSourceFileExistException.java | 39 ++ .../PublicClassNotFoundException.java | 39 ++ .../exception/RunTypeNotFoundException.java | 41 ++ .../plugin/task/java/JavaTaskTest.java | 250 +++++++++++ dolphinscheduler-task-plugin/pom.xml | 1 + .../public/images/task-icons/java.png | Bin 0 -> 18499 bytes .../public/images/task-icons/java_hover.png | Bin 0 -> 14025 bytes .../src/locales/en_US/project.ts | 6 +- .../src/locales/zh_CN/project.ts | 4 + .../task/components/node/fields/index.ts | 2 + .../node/fields/use-java-task-main-jar.ts | 80 ++++ .../task/components/node/fields/use-java.ts | 86 ++++ .../task/components/node/format-data.ts | 11 + .../task/components/node/tasks/index.ts | 2 + .../task/components/node/tasks/use-java.ts | 89 ++++ .../projects/task/components/node/types.ts | 3 + .../projects/task/constants/task-type.ts | 4 + .../workflow/components/dag/dag.module.scss | 6 + 30 files changed, 1486 insertions(+), 67 deletions(-) create mode 100644 docs/docs/en/guide/task/java.md create mode 100644 docs/docs/zh/guide/task/java.md create mode 100644 docs/img/tasks/demo/java_task02.png create mode 100644 dolphinscheduler-task-plugin/dolphinscheduler-task-java/pom.xml create mode 100644 dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/java/org/apache/dolphinscheduler/plugin/task/java/JavaConstants.java create mode 100644 dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/java/org/apache/dolphinscheduler/plugin/task/java/JavaParameters.java create mode 100644 dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/java/org/apache/dolphinscheduler/plugin/task/java/JavaTask.java create mode 100644 dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/java/org/apache/dolphinscheduler/plugin/task/java/JavaTaskChannel.java create mode 100644 dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/java/org/apache/dolphinscheduler/plugin/task/java/JavaTaskChannelFactory.java create mode 100644 dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/java/org/apache/dolphinscheduler/plugin/task/java/exception/JavaSourceFileExistException.java create mode 100644 dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/java/org/apache/dolphinscheduler/plugin/task/java/exception/PublicClassNotFoundException.java create mode 100644 dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/java/org/apache/dolphinscheduler/plugin/task/java/exception/RunTypeNotFoundException.java create mode 100644 dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/test/org/apache/dolphinscheduler/plugin/task/java/JavaTaskTest.java create mode 100644 dolphinscheduler-ui/public/images/task-icons/java.png create mode 100644 dolphinscheduler-ui/public/images/task-icons/java_hover.png create mode 100644 dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-java-task-main-jar.ts create mode 100644 dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-java.ts create mode 100644 dolphinscheduler-ui/src/views/projects/task/components/node/tasks/use-java.ts diff --git a/docs/configs/docsdev.js b/docs/configs/docsdev.js index d7cac77fa9..3dfd9b3166 100644 --- a/docs/configs/docsdev.js +++ b/docs/configs/docsdev.js @@ -185,6 +185,10 @@ export default { title: 'Dinky', link: '/en-us/docs/dev/user_doc/guide/task/dinky.html', }, + { + title: 'Java', + link: '/en-us/docs/dev/user_doc/guide/task/java.html', + }, { title: 'SageMaker', link: '/en-us/docs/dev/user_doc/guide/task/sagemaker.html', @@ -809,6 +813,10 @@ export default { title: 'Dinky', link: '/zh-cn/docs/dev/user_doc/guide/task/dinky.html', }, + { + title: 'Java', + link: '/zh-cn/docs/dev/user_doc/guide/task/java.html', + }, { title: 'SageMaker', link: '/zh-cn/docs/dev/user_doc/guide/task/sagemaker.html', diff --git a/docs/docs/en/guide/task/java.md b/docs/docs/en/guide/task/java.md new file mode 100644 index 0000000000..95bf5c28f9 --- /dev/null +++ b/docs/docs/en/guide/task/java.md @@ -0,0 +1,47 @@ +# Overview + +This node is for executing java-type tasks and supports using files and jar packages as program entries. + +# Create Tasks + +- Click on `Project Management` -> `Project Name` -> `Workflow Definition`, click on the “Create workflow” button, go to the DAG edit page: + +- Drag the toolbar's Java task node to the palette. + +# Task Parameters +| **Parameter** | **Description** | +|--------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Node Name | The name of the set task. The node name in a workflow definition is unique. | +| Run Flag | Indicates whether the node is scheduled properly and turns on the kill switch, if not needed. | +| Description | Describes the functionality of the node. | +| Task Priority | When the number of worker threads is insufficient, the worker executes tasks according to the priority. When the priority is the same, the worker executes tasks by order. | +| Worker Group | The group of machines who execute the tasks. If selecting `Default`, DolphinScheduler will randomly choose a worker machine to execute the task. | +| Environment Name | Configure the environment in which the task runs. | +| Number Of Failed Retries | Number of resubmitted tasks that failed. You can choose the number in the drop-down menu or fill it manually. | +| Failed Retry Interval | the interval between the failure and resubmission of a task. You can choose the number in the drop-down menu or fill it manually. | +| Delayed Execution Time | the amount of time a task is delayed, in units. | +| Timeout Alarm | Check timeout warning, timeout failure, when the task exceeds the“Timeout length”, send a warning message and the task execution fails. | +| Module Path | pick Java 9 + 's modularity feature, put all resources into-module-path, and require that the JDK version in your worker supports modularity. | +| Main Parameter | Java program main method entry parameter. | +| Java VM Parameters | JVM startup parameters. | +| Script | You need to write Java code if you use the Java run type. The public class must exist in the code without writing a package statement. | +| Resources | External JAR packages or other resource files that are added to the classpath or module path and can be easily retrieved in your JAVA script. | +| Custom parameter | A user-defined parameter that is part of HTTP and replaces `${ variable }` in the script . | +| Pre Tasks | Selects a pre-task for the current task and sets the pre-task as the upstream of the current task. | + +## Example + +Java type tasks have two modes of execution, here is a demonstration of executing tasks in Java mode. + +The main configuration parameters are as follows: +- Run Type +- Module Path +- Main Parameters +- Java VM Parameters +- Script + +![java_task](../../../../img/tasks/demo/java_task02.png) + +## Note + +When you run the task in JAVA execution mode, the public class must exist in the code, and you could omit writing a package statement. diff --git a/docs/docs/zh/guide/task/java.md b/docs/docs/zh/guide/task/java.md new file mode 100644 index 0000000000..852886dae4 --- /dev/null +++ b/docs/docs/zh/guide/task/java.md @@ -0,0 +1,50 @@ +# JAVA 节点 + +## 综述 + +该节点用于执行 java 类型的任务,支持使用单文件和jar包作为程序入口。 + +## 创建任务 + +- 点击项目管理 -> 项目名称 -> 工作流定义,点击”创建工作流”按钮,进入 DAG 编辑页面: + +- 拖动工具栏的JAVA任务节点到画板中。 + +## 任务参数 + +- 节点名称:设置任务的名称。一个工作流定义中的节点名称是唯一的。 +- 运行标志:标识这个节点是否能正常调度,如果不需要执行,可以打开禁止执行开关。 +- 描述:描述该节点的功能。 +- 任务优先级:worker 线程数不足时,根据优先级从高到低依次执行,优先级一样时根据先进先出原则执行。 +- Worker 分组:任务分配给 worker 组的机器机执行,选择 Default,会随机选择一台 worker 机执行。 +- 环境名称:配置运行任务的环境。 +- 失败重试次数:任务失败重新提交的次数,支持下拉和手填。 +- 失败重试间隔:任务失败重新提交任务的时间间隔,支持下拉和手填。 +- 延迟执行时间:任务延迟执行的时间,以分为单位。 +- 超时告警:勾选超时告警、超时失败,当任务超过"超时时长"后,会发送告警邮件并且任务执行失败。 +- 模块路径:开启使用JAVA9+的模块化特性,把所有资源放入--module-path中,要求您的worker中的JDK版本支持模块化。 +- 主程序参数:作为普通Java程序main方法入口参数。 +- 虚拟机参数:配置启动虚拟机参数。 +- 脚本:若使用JAVA运行类型则需要编写JAVA代码。代码中必须存在public类,不用写package语句。 +- 资源:可以是外部JAR包也可以是其他资源文件,它们都会被加入到类路径或模块路径中,您可以在自己的JAVA脚本中轻松获取。 +- 自定义参数:是 http 局部的用户自定义参数,会替换脚本中以 ${变量} 的内容。 +- 前置任务:选择当前任务的前置任务,会将被选择的前置任务设置为当前任务的上游。 + +## 任务样例 + +java任务类型有两种运行模式,这里以JAVA模式为例进行演示。 + +主要配置参数如下: + +- 运行类型 +- 模块路径 +- 主程序参数 +- 虚拟机参数 +- 脚本文件 + +![java_task](../../../../img/tasks/demo/java_task02.png) + +## 注意事项 + +使用JAVA运行类型时代码中必须存在public类,可以不写package语句 + diff --git a/docs/img/tasks/demo/java_task02.png b/docs/img/tasks/demo/java_task02.png new file mode 100644 index 0000000000000000000000000000000000000000..28cc4beb280e01e5a04e47d54b52a2323203e857 GIT binary patch literal 286501 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 D!CjvH literal 0 HcmV?d00001 diff --git a/dolphinscheduler-task-plugin/dolphinscheduler-task-all/pom.xml b/dolphinscheduler-task-plugin/dolphinscheduler-task-all/pom.xml index 665d28783d..ff252760ab 100644 --- a/dolphinscheduler-task-plugin/dolphinscheduler-task-all/pom.xml +++ b/dolphinscheduler-task-plugin/dolphinscheduler-task-all/pom.xml @@ -189,6 +189,12 @@ ${project.version} + + org.apache.dolphinscheduler + dolphinscheduler-task-java + ${project.version} + + org.apache.dolphinscheduler dolphinscheduler-task-sagemaker diff --git a/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/model/TaskResponse.java b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/model/TaskResponse.java index e4b60c1928..241f308dea 100644 --- a/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/model/TaskResponse.java +++ b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/model/TaskResponse.java @@ -19,6 +19,9 @@ package org.apache.dolphinscheduler.plugin.task.api.model; import org.apache.dolphinscheduler.plugin.task.api.enums.TaskRunStatus; +import lombok.Data; + +@Data public class TaskResponse { /** @@ -46,8 +49,6 @@ public class TaskResponse { */ private Process process; - - /** * cancel */ @@ -59,68 +60,4 @@ public class TaskResponse { private volatile int exitStatusCode = -1; private TaskRunStatus status; - - public String getVarPool() { - return varPool; - } - - public void setVarPool(String varPool) { - this.varPool = varPool; - } - - public int getProcessId() { - return processId; - } - - public void setProcessId(int processId) { - this.processId = processId; - } - - public String getResultString() { - return resultString; - } - - public void setResultString(String resultString) { - this.resultString = resultString; - } - - public String getAppIds() { - return appIds; - } - - public void setAppIds(String appIds) { - this.appIds = appIds; - } - - public boolean isCancel() { - return cancel; - } - - public void setCancel(boolean cancel) { - this.cancel = cancel; - } - - public int getExitStatusCode() { - return exitStatusCode; - } - - public void setExitStatusCode(int exitStatusCode) { - this.exitStatusCode = exitStatusCode; - } - - public Process getProcess() { - return process; - } - - public void setProcess(Process process) { - this.process = process; - } - - public TaskRunStatus getStatus() { - return status; - } - - public void setStatus(TaskRunStatus status) { - this.status = status; - } } diff --git a/dolphinscheduler-task-plugin/dolphinscheduler-task-java/pom.xml b/dolphinscheduler-task-plugin/dolphinscheduler-task-java/pom.xml new file mode 100644 index 0000000000..36aa9afeb2 --- /dev/null +++ b/dolphinscheduler-task-plugin/dolphinscheduler-task-java/pom.xml @@ -0,0 +1,45 @@ + + + + + dolphinscheduler-task-plugin + org.apache.dolphinscheduler + dev-SNAPSHOT + + + 4.0.0 + dolphinscheduler-task-java + jar + + + + + org.apache.dolphinscheduler + dolphinscheduler-spi + + + + org.apache.dolphinscheduler + dolphinscheduler-task-api + + + + + \ No newline at end of file diff --git a/dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/java/org/apache/dolphinscheduler/plugin/task/java/JavaConstants.java b/dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/java/org/apache/dolphinscheduler/plugin/task/java/JavaConstants.java new file mode 100644 index 0000000000..e4d941db30 --- /dev/null +++ b/dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/java/org/apache/dolphinscheduler/plugin/task/java/JavaConstants.java @@ -0,0 +1,62 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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 org.apache.dolphinscheduler.plugin.task.java; + +import java.io.File; + +public class JavaConstants { + + private JavaConstants() { + throw new IllegalStateException("Utility class"); + } + + /** + * The constants used to get the Java installation directory + **/ + public static final String JAVA_HOME_VAR = "${JAVA_HOME}"; + + /** + * this constant represents the use of the java command to run a task + **/ + public static final String RUN_TYPE_JAVA = "JAVA"; + + /** + * this constant represents the use of the java -jar command to run a task + **/ + public static final String RUN_TYPE_JAR = "JAR"; + + /** + * This constant is the Classpath or module path delimiter for different operating systems + **/ + public static final String PATH_SEPARATOR = System.getProperty("path.separator"); + + /** + * This constant represents the current directory in the Classpath or module path + **/ + public static final String CLASSPATH_CURRENT_DIR = "."; + + /** + * This constant is used to construct the pre-pathname of the Java source file + **/ + public static final String JAVA_SOURCE_CODE_NAME_TEMPLATE = "%s/%s.java"; + + /** + * This constant is the regular expression to get the class name of the source file + **/ + public static final String PUBLIC_CLASS_NAME_REGEX = "(.*\\s*public\\s+class\\s+)([a-zA-Z_]+[//w_]*)([.\\s\\S]*)"; +} diff --git a/dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/java/org/apache/dolphinscheduler/plugin/task/java/JavaParameters.java b/dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/java/org/apache/dolphinscheduler/plugin/task/java/JavaParameters.java new file mode 100644 index 0000000000..527441b634 --- /dev/null +++ b/dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/java/org/apache/dolphinscheduler/plugin/task/java/JavaParameters.java @@ -0,0 +1,84 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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 org.apache.dolphinscheduler.plugin.task.java; + +import org.apache.dolphinscheduler.plugin.task.api.model.ResourceInfo; +import org.apache.dolphinscheduler.plugin.task.api.parameters.AbstractParameters; +import org.apache.dolphinscheduler.spi.utils.StringUtils; + +import java.util.List; + +import lombok.Data; + +@Data +public class JavaParameters extends AbstractParameters { + /** + * origin java script + */ + private String rawScript; + + /** + * run in jar file + */ + private ResourceInfo mainJar; + + /** + * Marks the current task running mode + */ + private String runType; + + /** + * main method args + **/ + private String mainArgs; + + /** + * java virtual machine args + **/ + private String jvmArgs; + + /** + * module path or class path flag + **/ + private boolean isModulePath; + + /** + * resource list + */ + private List resourceList; + + /** + * Check that the parameters are valid + * + * @returnboolean + */ + @Override + public boolean checkParameters() { + return runType != null && (StringUtils.isNotBlank(rawScript) || mainJar != null); + } + + /** + * Gets a list of known resource files + * + * @return List + **/ + @Override + public List getResourceFilesList() { + return this.resourceList; + } +} diff --git a/dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/java/org/apache/dolphinscheduler/plugin/task/java/JavaTask.java b/dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/java/org/apache/dolphinscheduler/plugin/task/java/JavaTask.java new file mode 100644 index 0000000000..e23eb5124c --- /dev/null +++ b/dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/java/org/apache/dolphinscheduler/plugin/task/java/JavaTask.java @@ -0,0 +1,388 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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 org.apache.dolphinscheduler.plugin.task.java; + +import static org.apache.dolphinscheduler.plugin.task.api.TaskConstants.SINGLE_SLASH; +import static org.apache.dolphinscheduler.plugin.task.java.JavaConstants.JAVA_HOME_VAR; +import static org.apache.dolphinscheduler.plugin.task.java.JavaConstants.PUBLIC_CLASS_NAME_REGEX; + +import org.apache.dolphinscheduler.plugin.task.api.AbstractTask; +import org.apache.dolphinscheduler.plugin.task.api.ShellCommandExecutor; +import org.apache.dolphinscheduler.plugin.task.api.TaskCallBack; +import org.apache.dolphinscheduler.plugin.task.api.TaskConstants; +import org.apache.dolphinscheduler.plugin.task.api.TaskException; +import org.apache.dolphinscheduler.plugin.task.api.TaskExecutionContext; +import org.apache.dolphinscheduler.plugin.task.api.model.Property; +import org.apache.dolphinscheduler.plugin.task.api.model.ResourceInfo; +import org.apache.dolphinscheduler.plugin.task.api.model.TaskResponse; +import org.apache.dolphinscheduler.plugin.task.api.parameters.AbstractParameters; +import org.apache.dolphinscheduler.plugin.task.api.parser.ParamUtils; +import org.apache.dolphinscheduler.plugin.task.api.parser.ParameterUtils; +import org.apache.dolphinscheduler.plugin.task.api.utils.MapUtils; +import org.apache.dolphinscheduler.plugin.task.java.exception.JavaSourceFileExistException; +import org.apache.dolphinscheduler.plugin.task.java.exception.PublicClassNotFoundException; +import org.apache.dolphinscheduler.plugin.task.java.exception.RunTypeNotFoundException; +import org.apache.dolphinscheduler.spi.utils.JSONUtils; + +import org.apache.commons.io.FileUtils; + +import java.io.File; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.HashMap; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import com.google.common.base.Preconditions; + +public class JavaTask extends AbstractTask { + + /** + * Contains various parameters for this task + */ + private JavaParameters javaParameters; + + /** + * To run shell commands + */ + private ShellCommandExecutor shellCommandExecutor; + + /** + * task execution context + */ + private TaskExecutionContext taskRequest; + + /** + * class name regex pattern + */ + private static final Pattern classNamePattern = Pattern.compile(PUBLIC_CLASS_NAME_REGEX); + + public JavaTask(TaskExecutionContext taskRequest) { + super(taskRequest); + this.taskRequest = taskRequest; + this.shellCommandExecutor = new ShellCommandExecutor(this::logHandle, + taskRequest, + logger); + } + + /** + * Initializes a Java task + * @return void + **/ + @Override + public void init() { + logger.info("java task params {}", taskRequest.getTaskParams()); + javaParameters = JSONUtils.parseObject(taskRequest.getTaskParams(), JavaParameters.class); + if (javaParameters == null || !javaParameters.checkParameters()) { + throw new TaskException("java task params is not valid"); + } + if (javaParameters.getRunType().equals(JavaConstants.RUN_TYPE_JAR)) { + setMainJarName(); + } + } + + /** + * Gets the Java source file that was initially processed + * + * @return String + **/ + @Override + public String getPreScript() { + String rawJavaScript = javaParameters.getRawScript().replaceAll("\\r\\n", "\n"); + try { + rawJavaScript = convertJavaSourceCodePlaceholders(rawJavaScript); + } catch (StringIndexOutOfBoundsException e) { + logger.error("setShareVar field format error, raw java script: {}", rawJavaScript); + } + return rawJavaScript; + } + + /** + * Execute Java tasks + * + * @return void + * @throws Exception + */ + @Override + public void handle(TaskCallBack taskCallBack) throws TaskException { + try { + // Step 1: judge if is java or jar run type. + // Step 2 case1: the jar run type builds the command directly, adding resource to the java -jar class when building the command + // Step 2 case2: the java run type, first replace the custom parameters, then compile the code, and then build the command will add resource + // Step 3: to run the command + String command = null; + switch (javaParameters.getRunType()) { + case JavaConstants.RUN_TYPE_JAVA: + command = buildJavaCommand(); + break; + case JavaConstants.RUN_TYPE_JAR: + command = buildJarCommand(); + break; + default: + throw new RunTypeNotFoundException("run type is required, but it is null now."); + } + Preconditions.checkNotNull(command, "command not be null."); + TaskResponse taskResponse = shellCommandExecutor.run(command); + logger.info("java task run result: {}", taskResponse); + setExitStatusCode(taskResponse.getExitStatusCode()); + setAppIds(taskResponse.getAppIds()); + setProcessId(taskResponse.getProcessId()); + setVarPool(shellCommandExecutor.getVarPool()); + } catch (InterruptedException e) { + logger.error("java task interrupted ", e); + setExitStatusCode(TaskConstants.EXIT_CODE_FAILURE); + Thread.currentThread().interrupt(); + } catch (RunTypeNotFoundException e) { + logger.error(e.getMessage()); + setExitStatusCode(TaskConstants.EXIT_CODE_FAILURE); + throw e; + } catch (Exception e) { + logger.error("java task failed ", e); + setExitStatusCode(TaskConstants.EXIT_CODE_FAILURE); + throw new TaskException("run java task error", e); + } + } + + /** + * Construct a shell command for the java Run mode + * + * @return String + * @throws Exception + **/ + protected String buildJavaCommand() throws Exception { + StringBuilder builder = new StringBuilder(); + String sourceCode = buildJavaSourceContent(); + builder.append(buildJavaCompileCommand(sourceCode)) + .append(";") + .append(getJavaCommandPath()) + .append("java").append(" ") + .append(buildResourcePath()) + .append(" ") + .append(getPublicClassName(sourceCode)) + .append(" ") + .append(javaParameters.getMainArgs().trim()).append(" ") + .append(javaParameters.getJvmArgs().trim()); + return builder.toString(); + } + + private void setMainJarName() { + ResourceInfo mainJar = javaParameters.getMainJar(); + String resourceName = getResourceNameOfMainJar(mainJar); + mainJar.setRes(resourceName); + javaParameters.setMainJar(mainJar); + } + + /** + * Construct a shell command for the java -jar Run mode + * + * @return String + **/ + protected String buildJarCommand() { + String fullName = javaParameters.getMainJar().getResourceName(); + String mainJarName = fullName.substring(0, fullName.lastIndexOf('.')); + mainJarName = mainJarName.substring(mainJarName.lastIndexOf('.') + 1) + ".jar"; + StringBuilder builder = new StringBuilder(); + builder.append(getJavaCommandPath()) + .append("java").append(" ") + .append(buildResourcePath()).append(" ") + .append("-jar").append(" ") + .append(taskRequest.getExecutePath()) + .append(mainJarName).append(" ") + .append(javaParameters.getMainArgs().trim()).append(" ") + .append(javaParameters.getJvmArgs().trim()); + return builder.toString(); + } + + private String getResourceNameOfMainJar(ResourceInfo mainJar) { + if (null == mainJar) { + throw new RuntimeException("The jar for the task is required."); + } + return mainJar.getId() == 0 + ? mainJar.getRes() + // when update resource maybe has error + : mainJar.getResourceName().replaceFirst(SINGLE_SLASH, ""); + } + + @Override + public void cancel() throws TaskException { + // cancel process + try { + shellCommandExecutor.cancelApplication(); + } catch (Exception e) { + throw new TaskException(); + } + } + + @Override + public AbstractParameters getParameters() { + return javaParameters; + } + + + /** + * Replaces placeholders such as local variables in source files + * + * @param rawScript + * @return String + * @throws StringIndexOutOfBoundsException + */ + protected static String convertJavaSourceCodePlaceholders(String rawScript) throws StringIndexOutOfBoundsException { + int len = "${setShareVar(${".length(); + + int scriptStart = 0; + while ((scriptStart = rawScript.indexOf("${setShareVar(${", scriptStart)) != -1) { + int start = -1; + int end = rawScript.indexOf('}', scriptStart + len); + String prop = rawScript.substring(scriptStart + len, end); + + start = rawScript.indexOf(',', end); + end = rawScript.indexOf(')', start); + + String value = rawScript.substring(start + 1, end); + + start = rawScript.indexOf('}', start) + 1; + end = rawScript.length(); + + String replaceScript = String.format("print(\"${{setValue({},{})}}\".format(\"%s\",%s))", prop, value); + + rawScript = rawScript.substring(0, scriptStart) + replaceScript + rawScript.substring(start, end); + + scriptStart += replaceScript.length(); + } + return rawScript; + } + + /** + * Creates a Java source file when it does not exist + * + * @param sourceCode + * @param fileName + * @return String + **/ + protected void createJavaSourceFileIfNotExists(String sourceCode, String fileName) throws IOException { + logger.info("tenantCode: {}, task dir:{}", taskRequest.getTenantCode(), taskRequest.getExecutePath()); + if (!Files.exists(Paths.get(fileName))) { + logger.info("the java source code:{}, will be write to the file: {}", fileName,sourceCode); + // write data to file + FileUtils.writeStringToFile(new File(fileName), + sourceCode, + StandardCharsets.UTF_8); + } else { + throw new JavaSourceFileExistException("java source file exists, please report an issue on official."); + } + } + + /** + * Construct the full path name of the Java source file from the temporary execution path of the task + * + * @return String + **/ + protected String buildJavaSourceCodeFileFullName(String publicClassName) { + return String.format(JavaConstants.JAVA_SOURCE_CODE_NAME_TEMPLATE, taskRequest.getExecutePath(), publicClassName); + } + + /** + * Construct a Classpath or module path based on isModulePath + * + * @return String + **/ + protected String buildResourcePath() { + StringBuilder builder = new StringBuilder(); + if (javaParameters.isModulePath()) { + builder.append("--module-path"); + } else { + builder.append("--class-path"); + } + builder.append(" ").append(JavaConstants.CLASSPATH_CURRENT_DIR) + .append(JavaConstants.PATH_SEPARATOR) + .append(taskRequest.getExecutePath()); + for (ResourceInfo info : javaParameters.getResourceFilesList()) { + builder.append(JavaConstants.PATH_SEPARATOR); + builder.append(taskRequest.getExecutePath()) + .append(info.getResourceName()); + } + return builder.toString(); + } + + /** + * Constructs a shell command compiled from a Java source file + * + * @param sourceCode + * @return String + * @throws IOException + **/ + protected String buildJavaCompileCommand(String sourceCode) throws IOException { + String publicClassName = getPublicClassName(sourceCode); + String fileName = buildJavaSourceCodeFileFullName(publicClassName); + createJavaSourceFileIfNotExists(sourceCode, fileName); + + StringBuilder compilerCommand = new StringBuilder() + .append(getJavaCommandPath()) + .append("javac").append(" ") + .append(buildResourcePath()).append(" ") + .append(fileName); + return compilerCommand.toString(); + } + + /** + * Work with Java source file content, such as replacing local variables + * + * @return String + **/ + protected String buildJavaSourceContent() { + String rawJavaScript = javaParameters.getRawScript().replaceAll("\\r\\n", "\n"); + // replace placeholder + + Map paramsMap = taskRequest.getPrepareParamsMap(); + if (MapUtils.isEmpty(paramsMap)) { + paramsMap = new HashMap<>(); + } + if (MapUtils.isNotEmpty(taskRequest.getParamsMap())) { + paramsMap.putAll(taskRequest.getParamsMap()); + } + logger.info("The current java source code will begin to replace the placeholder: {}", rawJavaScript); + rawJavaScript = ParameterUtils.convertParameterPlaceholders(rawJavaScript, ParamUtils.convert(paramsMap)); + return rawJavaScript; + } + + /** + * Gets the operating system absolute path to the Java command + * + * @return String + **/ + private String getJavaCommandPath() { + return JAVA_HOME_VAR + File.separator + "bin" + File.separator; + } + + /** + * Gets the public class name from the Java source file + * + * @param sourceCode + * @return String + **/ + public String getPublicClassName(String sourceCode) { + Matcher matcher = classNamePattern.matcher(sourceCode); + if (!matcher.find()) { + throw new PublicClassNotFoundException("public class is not be found in source code : " + sourceCode); + } + return matcher.group(2).trim(); + } +} diff --git a/dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/java/org/apache/dolphinscheduler/plugin/task/java/JavaTaskChannel.java b/dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/java/org/apache/dolphinscheduler/plugin/task/java/JavaTaskChannel.java new file mode 100644 index 0000000000..32407b204a --- /dev/null +++ b/dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/java/org/apache/dolphinscheduler/plugin/task/java/JavaTaskChannel.java @@ -0,0 +1,72 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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 org.apache.dolphinscheduler.plugin.task.java; + +import org.apache.dolphinscheduler.plugin.task.api.TaskChannel; +import org.apache.dolphinscheduler.plugin.task.api.TaskExecutionContext; +import org.apache.dolphinscheduler.plugin.task.api.parameters.AbstractParameters; +import org.apache.dolphinscheduler.plugin.task.api.parameters.ParametersNode; +import org.apache.dolphinscheduler.plugin.task.api.parameters.resource.ResourceParametersHelper; +import org.apache.dolphinscheduler.spi.utils.JSONUtils; + +public class JavaTaskChannel implements TaskChannel { + + /** + * Cancel the mission + * + * @param status + * @return void + **/ + @Override + public void cancelApplication(boolean status) { + + } + + /** + * Create a task + * + * @param taskRequest This parameter is the Echternach of the mission + * @return JavaTask + **/ + @Override + public JavaTask createTask(TaskExecutionContext taskRequest) { + return new JavaTask(taskRequest); + } + + /** + * Parses Java task parameters + * + * @param parametersNode + * @return: org.apache.dolphinscheduler.plugin.task.api.parameters.AbstractParameters + **/ + @Override + public AbstractParameters parseParameters(ParametersNode parametersNode) { + return JSONUtils.parseObject(parametersNode.getTaskParams(), JavaParameters.class); + } + + /** + * Gets a list of the resources that the task depends on + * + * @param parameters + * @return ResourceParametersHelper + **/ + @Override + public ResourceParametersHelper getResources(String parameters) { + return null; + } +} diff --git a/dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/java/org/apache/dolphinscheduler/plugin/task/java/JavaTaskChannelFactory.java b/dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/java/org/apache/dolphinscheduler/plugin/task/java/JavaTaskChannelFactory.java new file mode 100644 index 0000000000..c374960d45 --- /dev/null +++ b/dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/java/org/apache/dolphinscheduler/plugin/task/java/JavaTaskChannelFactory.java @@ -0,0 +1,59 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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 org.apache.dolphinscheduler.plugin.task.java; + +import org.apache.dolphinscheduler.plugin.task.api.TaskChannel; +import org.apache.dolphinscheduler.plugin.task.api.TaskChannelFactory; +import org.apache.dolphinscheduler.spi.params.base.PluginParams; + +import java.util.List; + +import com.google.auto.service.AutoService; + +@AutoService(TaskChannelFactory.class) +public class JavaTaskChannelFactory implements TaskChannelFactory { + /** + * Construct a channel for a Java task + * + * @return TaskChannel + **/ + @Override + public TaskChannel create() { + return new JavaTaskChannel(); + } + + /** + * Get a unique identifier of the Java task + * + * @return String + **/ + @Override + public String getName() { + return "JAVA"; + } + + /** + * Gets the plug-in parameters for the Java task + * + * @return List + **/ + @Override + public List getParams() { + return null; + } +} diff --git a/dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/java/org/apache/dolphinscheduler/plugin/task/java/exception/JavaSourceFileExistException.java b/dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/java/org/apache/dolphinscheduler/plugin/task/java/exception/JavaSourceFileExistException.java new file mode 100644 index 0000000000..421d77de66 --- /dev/null +++ b/dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/java/org/apache/dolphinscheduler/plugin/task/java/exception/JavaSourceFileExistException.java @@ -0,0 +1,39 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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 org.apache.dolphinscheduler.plugin.task.java.exception; + +public class JavaSourceFileExistException extends RuntimeException { + public JavaSourceFileExistException() { + } + + public JavaSourceFileExistException(String message) { + super(message); + } + + public JavaSourceFileExistException(String message, Throwable cause) { + super(message, cause); + } + + public JavaSourceFileExistException(Throwable cause) { + super(cause); + } + + public JavaSourceFileExistException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { + super(message, cause, enableSuppression, writableStackTrace); + } +} diff --git a/dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/java/org/apache/dolphinscheduler/plugin/task/java/exception/PublicClassNotFoundException.java b/dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/java/org/apache/dolphinscheduler/plugin/task/java/exception/PublicClassNotFoundException.java new file mode 100644 index 0000000000..16b0070c97 --- /dev/null +++ b/dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/java/org/apache/dolphinscheduler/plugin/task/java/exception/PublicClassNotFoundException.java @@ -0,0 +1,39 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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 org.apache.dolphinscheduler.plugin.task.java.exception; + +public class PublicClassNotFoundException extends RuntimeException { + public PublicClassNotFoundException() { + } + + public PublicClassNotFoundException(String message) { + super(message); + } + + public PublicClassNotFoundException(String message, Throwable cause) { + super(message, cause); + } + + public PublicClassNotFoundException(Throwable cause) { + super(cause); + } + + public PublicClassNotFoundException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { + super(message, cause, enableSuppression, writableStackTrace); + } +} diff --git a/dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/java/org/apache/dolphinscheduler/plugin/task/java/exception/RunTypeNotFoundException.java b/dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/java/org/apache/dolphinscheduler/plugin/task/java/exception/RunTypeNotFoundException.java new file mode 100644 index 0000000000..d893690673 --- /dev/null +++ b/dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/java/org/apache/dolphinscheduler/plugin/task/java/exception/RunTypeNotFoundException.java @@ -0,0 +1,41 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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 org.apache.dolphinscheduler.plugin.task.java.exception; + +public class RunTypeNotFoundException extends RuntimeException { + + public RunTypeNotFoundException() { + super(); + } + + public RunTypeNotFoundException(String s) { + super(s); + } + + public RunTypeNotFoundException(String s, Throwable throwable) { + super(s, throwable); + } + + public RunTypeNotFoundException(Throwable throwable) { + super(throwable); + } + + protected RunTypeNotFoundException(String s, Throwable throwable, boolean b, boolean b1) { + super(s, throwable, b, b1); + } +} diff --git a/dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/test/org/apache/dolphinscheduler/plugin/task/java/JavaTaskTest.java b/dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/test/org/apache/dolphinscheduler/plugin/task/java/JavaTaskTest.java new file mode 100644 index 0000000000..89cc4f89e5 --- /dev/null +++ b/dolphinscheduler-task-plugin/dolphinscheduler-task-java/src/main/test/org/apache/dolphinscheduler/plugin/task/java/JavaTaskTest.java @@ -0,0 +1,250 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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 org.apache.dolphinscheduler.plugin.task.java; + +import static org.apache.dolphinscheduler.plugin.task.api.enums.DataType.VARCHAR; +import static org.apache.dolphinscheduler.plugin.task.api.enums.Direct.IN; +import static org.apache.dolphinscheduler.plugin.task.java.JavaConstants.RUN_TYPE_JAR; +import static org.apache.dolphinscheduler.plugin.task.java.JavaConstants.RUN_TYPE_JAVA; + +import org.apache.dolphinscheduler.plugin.task.api.TaskExecutionContext; +import org.apache.dolphinscheduler.plugin.task.api.model.Property; +import org.apache.dolphinscheduler.plugin.task.api.model.ResourceInfo; +import org.apache.dolphinscheduler.plugin.task.java.exception.JavaSourceFileExistException; +import org.apache.dolphinscheduler.plugin.task.java.exception.PublicClassNotFoundException; +import org.apache.dolphinscheduler.plugin.task.java.exception.RunTypeNotFoundException; +import org.apache.dolphinscheduler.spi.utils.JSONUtils; + +import java.io.File; +import java.io.IOException; +import java.lang.reflect.Field; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.ArrayList; + +import org.junit.Assert; +import org.junit.Test; + +public class JavaTaskTest { + + @Test + public void testGetPubllicClassName(){ + JavaTask javaTask = runJavaType(); + Assert.assertEquals(javaTask.getPublicClassName("import java.io.IOException;\n" + + "public class JavaTaskTest {\n" + + " public static void main(String[] args) throws IOException {\n" + + " StringBuilder builder = new StringBuilder(\"Hello: \");\n" + + " for (String arg : args) {\n" + + " builder.append(arg).append(\" \");\n" + + " }\n" + + " System.out.println(builder);\n" + + " }\n" + + "}\n"), "JavaTaskTest"); + } + + /** + * Construct a java -jar command + * + * @return void + **/ + @Test + public void buildJarCommand() { + String homeBinPath = JavaConstants.JAVA_HOME_VAR + File.separator + "bin" + File.separator; + JavaTask javaTask = runJarType(); + Assert.assertEquals(javaTask.buildJarCommand(), homeBinPath + + "java --class-path .:/tmp/dolphinscheduler/test/executepath:/tmp/dolphinscheduler/test/executepath/opt/share/jar/resource2.jar -jar /tmp/dolphinscheduler/test/executepath/opt/share/jar/main.jar -host 127.0.0.1 -port 8080 -xms:50m"); + } + + /** + * Construct the compile command + * + * @return void + **/ + @Test + public void buildJavaCompileCommand() throws IOException { + JavaTask javaTask = runJavaType(); + String sourceCode = javaTask.buildJavaSourceContent(); + String publicClassName = javaTask.getPublicClassName(sourceCode); + Assert.assertEquals("JavaTaskTest", publicClassName); + String fileName = javaTask.buildJavaSourceCodeFileFullName(publicClassName); + try { + String homeBinPath = JavaConstants.JAVA_HOME_VAR + File.separator + "bin" + File.separator; + Path path = Paths.get(fileName); + if (Files.exists(path)) { + Files.delete(path); + } + Assert.assertEquals(homeBinPath + + "javac --class-path .:/tmp/dolphinscheduler/test/executepath:/tmp/dolphinscheduler/test/executepath/opt/share/jar/resource2.jar /tmp/dolphinscheduler/test/executepath/JavaTaskTest.java", + javaTask.buildJavaCompileCommand(sourceCode)); + } finally { + Path path = Paths.get(fileName); + if (Files.exists(path)) { + Files.delete(path); + } + } + + } + + /** + * Construct java to run the command + * + * @return void + **/ + @Test + public void buildJavaCommand() throws Exception { + String wantJavaCommand = "${JAVA_HOME}/bin/javac --class-path .:/tmp/dolphinscheduler/test/executepath:/tmp/dolphinscheduler/test/executepath/opt/share/jar/resource2.jar /tmp/dolphinscheduler/test/executepath/JavaTaskTest.java;${JAVA_HOME}/bin/java --class-path .:/tmp/dolphinscheduler/test/executepath:/tmp/dolphinscheduler/test/executepath/opt/share/jar/resource2.jar JavaTaskTest -host 127.0.0.1 -port 8080 -xms:50m"; + JavaTask javaTask = runJavaType(); + String sourceCode = javaTask.buildJavaSourceContent(); + String publicClassName = javaTask.getPublicClassName(sourceCode); + Assert.assertEquals("JavaTaskTest", publicClassName); + String fileName = javaTask.buildJavaSourceCodeFileFullName(publicClassName); + Path path = Paths.get(fileName); + if (Files.exists(path)) { + Files.delete(path); + } + Assert.assertEquals(wantJavaCommand, javaTask.buildJavaCommand()); + } + + /** + * There is no exception to overwriting the Java source file + * @return void + * @throws IOException + **/ + @Test(expected = JavaSourceFileExistException.class) + public void coverJavaSourceFileExistException() throws IOException { + JavaTask javaTask = runJavaType(); + String sourceCode = javaTask.buildJavaSourceContent(); + String publicClassName = javaTask.getPublicClassName(sourceCode); + Assert.assertEquals("JavaTaskTest", publicClassName); + String fileName = javaTask.buildJavaSourceCodeFileFullName(publicClassName); + try { + Path path = Paths.get(fileName); + if (!Files.exists(path)) { + Files.createDirectories(path); + } + javaTask.createJavaSourceFileIfNotExists(sourceCode,fileName); + } finally { + Path path = Paths.get(fileName); + if (Files.exists(path)) { + Files.delete(path); + } + } + } + + /** + * The override class name could not find an exception + * + * @return void + **/ + @Test(expected = PublicClassNotFoundException.class) + public void coverPublicClassNotFoundException() { + JavaTask javaTask = runJavaType(); + javaTask.getPublicClassName(""); + } + + /** + * The override run mode could not find an exception + * + * @return void + * @throws Exception + **/ + @Test(expected = RunTypeNotFoundException.class) + public void coverRunTypeNotFoundException() throws Exception { + JavaTask javaTask = runJavaType(); + Field javaParameters = JavaTask.class.getDeclaredField("javaParameters"); + javaParameters.setAccessible(true); + ((JavaParameters)(javaParameters.get(javaTask))).setRunType(""); + javaTask.handle(); + javaTask.getPublicClassName(""); + } + + /** + * Create a Java task parameter mock object + * + * @param runType + * @return JavaParameters + **/ + public JavaParameters createJavaParametersObject(String runType) { + JavaParameters javaParameters = new JavaParameters(); + javaParameters.setRunType(runType); + javaParameters.setModulePath(false); + javaParameters.setJvmArgs("-xms:50m"); + javaParameters.setMainArgs("-host 127.0.0.1 -port 8080"); + ResourceInfo resourceJar = new ResourceInfo(); + resourceJar.setId(2); + resourceJar.setResourceName("/opt/share/jar/resource2.jar"); + resourceJar.setRes("I'm resource2.jar"); + ArrayList resourceInfoArrayList = new ArrayList<>(); + resourceInfoArrayList.add(resourceJar); + javaParameters.setResourceList(resourceInfoArrayList); + javaParameters.setRawScript( + "import java.io.IOException;\n" + + "public class JavaTaskTest {\n" + + " public static void main(String[] args) throws IOException {\n" + + " StringBuilder builder = new StringBuilder(\"Hello: \");\n" + + " for (String arg : args) {\n" + + " builder.append(arg).append(\" \");\n" + + " }\n" + " System.out.println(builder);\n" + + " }\n" + + "}\n"); + ArrayList localParams = new ArrayList<>(); + Property property = new Property(); + property.setProp("name"); + property.setValue("zhangsan"); + property.setDirect(IN); + property.setType(VARCHAR); + javaParameters.setLocalParams(localParams); + ResourceInfo mainJar = new ResourceInfo(); + mainJar.setId(1); + mainJar.setResourceName("/opt/share/jar/main.jar"); + mainJar.setRes("I'm main.jar"); + javaParameters.setMainJar(mainJar); + return javaParameters; + } + + /** + * A Java task that constructs the Java runtime pattern + * + * @return JavaTask + **/ + public JavaTask runJavaType() { + TaskExecutionContext taskExecutionContext = new TaskExecutionContext(); + taskExecutionContext.setTaskParams(JSONUtils.toJsonString(createJavaParametersObject(RUN_TYPE_JAVA))); + taskExecutionContext.setExecutePath("/tmp/dolphinscheduler/test/executepath"); + taskExecutionContext.setTaskAppId("runJavaType"); + JavaTask javaTask = new JavaTask(taskExecutionContext); + javaTask.init(); + return javaTask; + } + + /** + * The Java task to construct the jar run mode + * + * @return JavaTask + **/ + public JavaTask runJarType() { + TaskExecutionContext taskExecutionContext = new TaskExecutionContext(); + taskExecutionContext.setTaskParams(JSONUtils.toJsonString(createJavaParametersObject(RUN_TYPE_JAR))); + taskExecutionContext.setExecutePath("/tmp/dolphinscheduler/test/executepath"); + taskExecutionContext.setTaskAppId("runJavaType"); + JavaTask javaTask = new JavaTask(taskExecutionContext); + javaTask.init(); + return javaTask; + } +} diff --git a/dolphinscheduler-task-plugin/pom.xml b/dolphinscheduler-task-plugin/pom.xml index 528e21f459..744a285826 100644 --- a/dolphinscheduler-task-plugin/pom.xml +++ b/dolphinscheduler-task-plugin/pom.xml @@ -56,6 +56,7 @@ dolphinscheduler-task-openmldb dolphinscheduler-task-dvc dolphinscheduler-task-dinky + dolphinscheduler-task-java dolphinscheduler-task-sagemaker dolphinscheduler-task-chunjun dolphinscheduler-task-flink-stream diff --git a/dolphinscheduler-ui/public/images/task-icons/java.png b/dolphinscheduler-ui/public/images/task-icons/java.png new file mode 100644 index 0000000000000000000000000000000000000000..218201404e2dbac043a919ac7e73509abb04899a GIT binary patch literal 18499 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 literal 0 HcmV?d00001 diff --git a/dolphinscheduler-ui/src/locales/en_US/project.ts b/dolphinscheduler-ui/src/locales/en_US/project.ts index fa599a466c..549e6092de 100644 --- a/dolphinscheduler-ui/src/locales/en_US/project.ts +++ b/dolphinscheduler-ui/src/locales/en_US/project.ts @@ -131,7 +131,6 @@ export default { switch_version: 'Switch To This Version', confirm_switch_version: 'Confirm Switch To This Version?', current_version: 'Current Version', - run_type: 'Run Type', scheduling_time: 'Scheduling Time', duration: 'Duration', run_times: 'Run Times', @@ -217,6 +216,7 @@ export default { workflow_state: 'Workflow State', version: 'Version', current_version: 'Current Version', + run_type: 'Run Type', switch_version: 'Switch To This Version', confirm_switch_version: 'Confirm Switch To This Version?', description: 'Description', @@ -309,6 +309,10 @@ export default { online: 'Online' }, node: { + jvm_args: 'Java VM Parameters', + jvm_args_tips: 'Please enter virtual machine parameters', + run_type: 'Run Type', + is_module_path: 'Use Module Path', return_back: 'Return', current_node_settings: 'Current node settings', instructions: 'Instructions', diff --git a/dolphinscheduler-ui/src/locales/zh_CN/project.ts b/dolphinscheduler-ui/src/locales/zh_CN/project.ts index a08d0dc678..ea019f24cc 100644 --- a/dolphinscheduler-ui/src/locales/zh_CN/project.ts +++ b/dolphinscheduler-ui/src/locales/zh_CN/project.ts @@ -310,6 +310,10 @@ export default { online: '已上线' }, node: { + is_module_path: '使用模块路径', + run_type: '运行类型', + jvm_args: '虚拟机参数', + jvm_args_tips: '请输入虚拟机参数', return_back: '返回上一节点', current_node_settings: '当前节点设置', instructions: '使用说明', diff --git a/dolphinscheduler-ui/src/views/projects/task/components/node/fields/index.ts b/dolphinscheduler-ui/src/views/projects/task/components/node/fields/index.ts index d5235a9fbf..f37b79779d 100644 --- a/dolphinscheduler-ui/src/views/projects/task/components/node/fields/index.ts +++ b/dolphinscheduler-ui/src/views/projects/task/components/node/fields/index.ts @@ -49,6 +49,7 @@ export { useExecutorCores } from './use-executor-cores' export { useMainJar } from './use-main-jar' export { useResources } from './use-resources' export { useTaskDefinition } from './use-task-definition' +export { useJavaTaskMainJar } from './use-java-task-main-jar' export { useShell } from './use-shell' export { useSpark } from './use-spark' @@ -74,6 +75,7 @@ export { useOpenmldb } from './use-openmldb' export { useDvc } from './use-dvc' export { useDinky } from './use-dinky' export { useSagemaker } from './use-sagemaker' +export { useJava } from './use-java' export { useChunjun } from './use-chunjun' export { useChunjunDeployMode } from './use-chunjun-deploy-mode' export { usePytorch } from './use-pytorch' diff --git a/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-java-task-main-jar.ts b/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-java-task-main-jar.ts new file mode 100644 index 0000000000..3fe1fea9ed --- /dev/null +++ b/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-java-task-main-jar.ts @@ -0,0 +1,80 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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. + */ +import { computed, ref, onMounted, watch } from 'vue' +import { useI18n } from 'vue-i18n' +import { queryResourceByProgramType } from '@/service/modules/resources' +import { useTaskNodeStore } from '@/store/project/task-node' +import utils from '@/utils' +import type { IJsonItem, ProgramType, IMainJar } from '../types' + +export function useJavaTaskMainJar(model: { [field: string]: any }): IJsonItem { + const { t } = useI18n() + const mainJarOptions = ref([] as IMainJar[]) + const taskStore = useTaskNodeStore() + + const mainJarSpan = computed(() => (model.runType === 'JAVA' ? 0 : 24)) + const getMainJars = async (programType: ProgramType) => { + const storeMainJar = taskStore.getMainJar(programType) + if (storeMainJar) { + mainJarOptions.value = storeMainJar + return + } + const res = await queryResourceByProgramType({ + type: 'FILE', + programType + }) + utils.removeUselessChildren(res) + mainJarOptions.value = res || [] + taskStore.updateMainJar(programType, res) + } + + onMounted(() => { + getMainJars(model.programType) + }) + + watch( + () => model.programType, + (value) => { + getMainJars(value) + } + ) + + return { + type: 'tree-select', + field: 'mainJar', + name: t('project.node.main_package'), + span: mainJarSpan, + props: { + cascade: true, + showPath: true, + checkStrategy: 'child', + placeholder: t('project.node.main_package_tips'), + keyField: 'id', + labelField: 'fullName' + }, + validate: { + trigger: ['input', 'blur'], + required: true, + validator(validate: any, value: string) { + if (!value) { + return new Error(t('project.node.main_package_tips')) + } + } + }, + options: mainJarOptions + } +} diff --git a/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-java.ts b/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-java.ts new file mode 100644 index 0000000000..3b05a9c16d --- /dev/null +++ b/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-java.ts @@ -0,0 +1,86 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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. + */ +import { computed } from 'vue' +import { useI18n } from 'vue-i18n' +import { useCustomParams, useResources ,useJavaTaskMainJar} from '.' +import type { IJsonItem } from '../types' + +export function useJava(model: { [field: string]: any }): IJsonItem[] { + const { t } = useI18n() + const rawScriptSpan = computed(() => (model.runType === 'JAR' ? 0 : 24)) + return [ + { + type: 'select', + field: 'runType', + span: 12, + name: t('project.node.run_type'), + options: RUN_TYPES, + value: model.runType + }, + { + type: 'switch', + field: 'isModulePath', + span: 24, + name: t('project.node.is_module_path'), + value: model.isModulePath + }, + { + type: 'input', + field: 'mainArgs', + name: t('project.node.main_arguments'), + props: { + type: 'textarea', + placeholder: t('project.node.main_arguments_tips') + } + }, + { + type: 'input', + field: 'jvmArgs', + name: t('project.node.jvm_args'), + props: { + type: 'textarea', + placeholder: t('project.node.jvm_args_tips') + } + }, + useJavaTaskMainJar(model), + { + type: 'editor', + field: 'rawScript', + span: rawScriptSpan, + name: t('project.node.script'), + validate: { + trigger: ['input', 'trigger'], + required: true, + message: t('project.node.script_tips') + } + }, + useResources(), + ...useCustomParams({ model, field: 'localParams', isSimple: false }) + ] +} + +export const RUN_TYPES = [ + { + label: 'JAVA', + value: 'JAVA' + }, + { + label: 'JAR', + value: 'JAR' + } + ] + \ No newline at end of file diff --git a/dolphinscheduler-ui/src/views/projects/task/components/node/format-data.ts b/dolphinscheduler-ui/src/views/projects/task/components/node/format-data.ts index 0d845fafc1..8c3a1497fc 100644 --- a/dolphinscheduler-ui/src/views/projects/task/components/node/format-data.ts +++ b/dolphinscheduler-ui/src/views/projects/task/components/node/format-data.ts @@ -35,6 +35,17 @@ export function formatParams(data: INodeData): { if (data.taskType === 'SUB_PROCESS') { taskParams.processDefinitionCode = data.processDefinitionCode } + + if(data.taskType === 'JAVA'){ + taskParams.runType = data.runType + taskParams.mainArgs = data.mainArgs + taskParams.jvmArgs = data.jvmArgs + taskParams.isModulePath = data.isModulePath + if(data.runType === 'JAR' && data.mainJar){ + taskParams.mainJar = {id: data.mainJar}; + } + } + if ( data.taskType && ['SPARK', 'MR', 'FLINK', 'FLINK_STREAM'].includes(data.taskType) diff --git a/dolphinscheduler-ui/src/views/projects/task/components/node/tasks/index.ts b/dolphinscheduler-ui/src/views/projects/task/components/node/tasks/index.ts index 1217de2aeb..4ae4d5b14a 100644 --- a/dolphinscheduler-ui/src/views/projects/task/components/node/tasks/index.ts +++ b/dolphinscheduler-ui/src/views/projects/task/components/node/tasks/index.ts @@ -40,6 +40,7 @@ import { useJupyter } from './use-jupyter' import { useMlflow } from './use-mlflow' import { useOpenmldb } from './use-openmldb' import { useDvc } from './use-dvc' +import { useJava } from './use-java' import { useDinky } from './use-dinky' import { userSagemaker } from './use-sagemaker' import { useChunjun } from './use-chunjun' @@ -75,6 +76,7 @@ export default { SAGEMAKER: userSagemaker, CHUNJUN: useChunjun, FLINK_STREAM: useFlinkStream, + JAVA: useJava, PYTORCH: usePytorch, HIVECLI: useHiveCli } diff --git a/dolphinscheduler-ui/src/views/projects/task/components/node/tasks/use-java.ts b/dolphinscheduler-ui/src/views/projects/task/components/node/tasks/use-java.ts new file mode 100644 index 0000000000..822ec193cc --- /dev/null +++ b/dolphinscheduler-ui/src/views/projects/task/components/node/tasks/use-java.ts @@ -0,0 +1,89 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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. + */ + +import { reactive } from 'vue' +import * as Fields from '../fields/index' +import type { IJsonItem, INodeData } from '../types' +import { ITaskData } from '../types' + +export function useJava({ + projectCode, + from = 0, + readonly, + data +}: { + projectCode: number + from?: number + readonly?: boolean + data?: ITaskData +}) { + const model = reactive({ + name: '', + taskType: 'JAVA', + flag: 'YES', + description: '', + localParams: [], + environmentCode: null, + failRetryInterval: 1, + failRetryTimes: 0, + workerGroup: 'default', + delayTime: 0, + isModulePath: false, + rawScript: '', + timeoutFlag: false, + timeoutNotifyStrategy: ['WARN'], + timeout: 30, + mainJar: undefined, + runType:'JAVA', + mainArgs:'', + jvmArgs:'', + programType: 'JAVA' + } as unknown as INodeData) + + let extra: IJsonItem[] = [] + if (from === 1) { + extra = [ + Fields.useTaskType(model, readonly), + Fields.useProcessName({ + model, + projectCode, + isCreate: !data?.id, + from, + processName: data?.processName + }) + ] + } + + return { + json: [ + Fields.useName(from), + ...extra, + Fields.useRunFlag(), + Fields.useDescription(), + Fields.useTaskPriority(), + Fields.useWorkerGroup(), + Fields.useEnvironmentName(model, !model.id), + ...Fields.useTaskGroup(model, projectCode), + ...Fields.useFailed(), + Fields.useDelayTime(model), + ...Fields.useTimeoutAlarm(model), + ...Fields.useJava(model), + Fields.usePreTasks() + ] as IJsonItem[], + model + } +} diff --git a/dolphinscheduler-ui/src/views/projects/task/components/node/types.ts b/dolphinscheduler-ui/src/views/projects/task/components/node/types.ts index 2dba623ea6..2d3451da08 100644 --- a/dolphinscheduler-ui/src/views/projects/task/components/node/types.ts +++ b/dolphinscheduler-ui/src/views/projects/task/components/node/types.ts @@ -223,6 +223,9 @@ interface ITaskParams { resourceList?: ISourceItem[] mainJar?: ISourceItem localParams?: ILocalParam[] + runType?:string + jvmArgs?:string + isModulePath?:boolean rawScript?: string initScript?: string programType?: string diff --git a/dolphinscheduler-ui/src/views/projects/task/constants/task-type.ts b/dolphinscheduler-ui/src/views/projects/task/constants/task-type.ts index 0ecc53bccc..d69f38788f 100644 --- a/dolphinscheduler-ui/src/views/projects/task/constants/task-type.ts +++ b/dolphinscheduler-ui/src/views/projects/task/constants/task-type.ts @@ -39,6 +39,7 @@ export type TaskType = | 'MLFLOW' | 'OPENMLDB' | 'DVC' + | 'JAVA' | 'DINKY' | 'SAGEMAKER' | 'CHUNJUN' @@ -49,6 +50,9 @@ export type TaskType = export type TaskExecuteType = 'STREAM' | 'BATCH' export const TASK_TYPES_MAP = { + JAVA: { + alias: 'JAVA' + }, SHELL: { alias: 'SHELL' }, diff --git a/dolphinscheduler-ui/src/views/projects/workflow/components/dag/dag.module.scss b/dolphinscheduler-ui/src/views/projects/workflow/components/dag/dag.module.scss index d8b4a3da28..8c27b71785 100644 --- a/dolphinscheduler-ui/src/views/projects/workflow/components/dag/dag.module.scss +++ b/dolphinscheduler-ui/src/views/projects/workflow/components/dag/dag.module.scss @@ -177,6 +177,9 @@ $bgLight: #ffffff; &.icon-dvc { background-image: url('/images/task-icons/dvc.png'); } + &.icon-java { + background-image: url('/images/task-icons/java.png'); + } &.icon-dinky { background-image: url('/images/task-icons/dinky.png'); } @@ -272,6 +275,9 @@ $bgLight: #ffffff; &.icon-dinky { background-image: url('/images/task-icons/dinky_hover.png'); } + &.icon-java { + background-image: url('/images/task-icons/java.png'); + } &.icon-sagemaker { background-image: url('/images/task-icons/sagemaker_hover.png'); }