Java 提交 DolphinScheduler 任务

介绍

[DolphinScheduler]( 是一个分布式的大数据工作流调度系统,它可以帮助用户方便地进行任务调度和任务管理。同时,DolphinScheduler 还支持 Java 提交任务,使得开发者可以通过 Java 代码来提交任务并获取任务执行结果。

本文将介绍如何使用 Java 提交 DolphinScheduler 任务,并附上相应的代码示例。

准备工作

在开始之前,确保已经按照 DolphinScheduler 的官方文档进行了部署和配置。同时,还需要保证 Java 环境已经正确安装和配置。

Java 提交 DolphinScheduler 任务的步骤

步骤一:导入依赖

首先,在 Java 项目中,需要导入 DolphinScheduler 的客户端依赖。可以通过 Maven 或者 Gradle 进行导入。

<!-- Maven -->
<dependency>
    <groupId>org.apache.dolphinscheduler</groupId>
    <artifactId>dolphinscheduler-client</artifactId>
    <version>1.3.0</version>
</dependency>
// Gradle
implementation 'org.apache.dolphinscheduler:dolphinscheduler-client:1.3.0'

步骤二:创建任务

接下来,可以通过 Java 代码来创建任务。首先,需要创建一个 DolphinScheduler 的连接客户端。

String host = "localhost";  // DolphinScheduler 的主机名或 IP 地址
int port = 12345;  // DolphinScheduler 的端口号
DolphinSchedulerClient client = new DolphinSchedulerClient(host, port);

然后,可以使用 createProcessInstance 方法来创建一个任务实例。

int projectId = 1;  // 项目 ID
String processDefinitionName = "testProcess";  // 流程定义名称
String processDefinitionJson = "{\"globalParams\":[],\"tasks\":[{\"name\":\"task1\",\"type\":\"SHELL\",\"params\":{\"rawScript\":\"echo 'Hello, DolphinScheduler!'\"},\"description\":\"\"}]}";  // 流程定义的 JSON
String processInstanceName = "testInstance";  // 任务实例名称
int queueId = 1;  // 队列 ID
int workerGroupId = 1;  // 工作组 ID
int timeout = 0;  // 超时时间,单位为秒,0 表示不超时

int processInstanceId = client.createProcessInstance(projectId, processDefinitionName, processDefinitionJson, processInstanceName, queueId, workerGroupId, timeout);

步骤三:运行任务

任务创建成功后,可以使用 runProcessInstance 方法来运行任务。

client.runProcessInstance(processInstanceId);

步骤四:获取任务状态

可以使用 getProcessInstanceById 方法来获取任务的状态。

ProcessInstance processInstance = client.getProcessInstanceById(processInstanceId);
// 获取任务状态
ProcessInstanceStatus status = processInstance.getState();

步骤五:获取任务结果

任务运行完成后,可以使用 getTaskInstanceListByProcessId 方法来获取任务的执行结果。

List<TaskInstance> taskInstances = client.getTaskInstanceListByProcessId(processInstanceId);
for (TaskInstance taskInstance : taskInstances) {
    // 获取任务执行结果
    String result = taskInstance.getResult();
    // 处理任务执行结果
    // ...
}

步骤六:释放资源

最后,使用 close 方法来释放 DolphinScheduler 的连接资源。

client.close();

完整示例

下面是一个完整的示例,展示了如何使用 Java 提交 DolphinScheduler 任务并获取任务执行结果。

import org.apache.dolphinscheduler.api.client.DolphinSchedulerClient;
import org.apache.dolphinscheduler.api.enums.ProcessInstanceStatus;
import org.apache.dolphinscheduler.api.model.ProcessInstance;
import org.apache.dolphinscheduler.api.model.TaskInstance;

import java.util.List;

public class DolphinSchedulerExample {

    public static void main(String[] args) {
        String host = "localhost";
        int port = 12345;
        DolphinSchedulerClient client = new DolphinSchedulerClient(host, port);

        try {
            // 创建任务
            int projectId = 1;
            String processDefinitionName = "testProcess";
            String processDefinitionJson = "{\"globalParams\":[],\"tasks\":[{\"name\":\"task1\",\"type\":\"SHELL\",\"params\":{\"rawScript\":\"echo 'Hello, DolphinScheduler!'\"},\"description\":\"\"}]}";
            String processInstanceName = "testInstance";