3步开发DolphinScheduler自定义任务插件:从0到1实现专属任务类型

3步开发DolphinScheduler自定义任务插件:从0到1实现专属任务类型

【免费下载链接】dolphinscheduler Apache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code 【免费下载链接】dolphinscheduler 项目地址: https://gitcode.com/gh_mirrors/do/dolphinscheduler

你还在为重复开发数据任务烦恼?团队需要特定业务的任务类型却无从下手?本文将通过3个核心步骤,带你从零构建DolphinScheduler自定义任务插件,无需深入框架源码,即可让你的任务类型像官方组件一样无缝集成。

插件开发准备:理解项目架构与环境

在开始编码前,先了解DolphinScheduler的插件化架构。项目采用分层设计,任务插件统一管理在dolphinscheduler-task-plugin/目录下,每个任务类型对应独立模块(如Shell任务dolphinscheduler-task-shell/、SQL任务dolphinscheduler-task-sql/)。

任务插件架构

核心依赖模块

第一步:创建插件项目结构

Maven模块配置

dolphinscheduler-task-plugin/目录下创建新模块(以custom-task为例),编写pom.xml

<parent>
  <groupId>org.apache.dolphinscheduler</groupId>
  <artifactId>dolphinscheduler-task-plugin</artifactId>
  <version>${project.version}</version>
</parent>

<dependencies>
  <dependency>
    <groupId>org.apache.dolphinscheduler</groupId>
    <artifactId>dolphinscheduler-task-api</artifactId>
  </dependency>
  <!-- 添加自定义任务所需依赖 -->
</dependencies>

标准项目结构

custom-task/
├── src/main/java/org/apache/dolphinscheduler/plugin/task/custom/
│   ├── CustomTask.java          // 任务执行类
│   ├── CustomParameters.java    // 参数模型类
│   └── CustomTaskPlugin.java    // 插件注册类
├── src/main/resources/
│   └── META-INF/services/       // SPI服务注册
└── pom.xml

第二步:实现核心任务类

1. 参数模型定义

继承AbstractParameters实现任务参数校验与序列化:

public class CustomParameters extends AbstractParameters {
    private String customField; // 自定义业务参数

    @Override
    public boolean checkParameters() {
        return StringUtils.isNotBlank(customField);
    }
    // getter/setter
}

2. 任务执行类

继承AbstractTask实现核心业务逻辑,参考ShellTask.java的实现模式:

@Slf4j
public class CustomTask extends AbstractTask {
    private CustomParameters parameters;

    public CustomTask(TaskExecutionContext context) {
        super(context);
    }

    @Override
    public void init() {
        // 参数初始化与校验
        parameters = JSONUtils.parseObject(getTaskRequest().getTaskParams(), CustomParameters.class);
        if (!parameters.checkParameters()) {
            throw new TaskException("Custom task parameters are invalid");
        }
    }

    @Override
    public void handle(TaskCallBack callback) throws TaskException {
        try {
            // 实现自定义业务逻辑
            log.info("Executing custom task with parameter: {}", parameters.getCustomField());
            // 任务进度回调
            callback.onProgressUpdate(50, "Processing...");
            // 设置成功状态
            setExitStatusCode(TaskConstants.EXIT_CODE_SUCCESS);
        } catch (Exception e) {
            log.error("Custom task failed", e);
            setExitStatusCode(TaskConstants.EXIT_CODE_FAILURE);
            throw new TaskException("Task execution failed", e);
        }
    }

    @Override
    public void cancel() throws TaskException {
        // 实现任务取消逻辑
    }

    @Override
    public AbstractParameters getParameters() {
        return parameters;
    }
}

3. 插件注册

创建SPI服务文件META-INF/services/org.apache.dolphinscheduler.spi.task.TaskPlugin

org.apache.dolphinscheduler.plugin.task.custom.CustomTaskPlugin

实现插件定义类:

public class CustomTaskPlugin implements TaskPlugin {
    @Override
    public String getName() {
        return "CUSTOM"; // 任务类型名称,页面显示用
    }

    @Override
    public AbstractTask createTask(TaskExecutionContext context) {
        return new CustomTask(context);
    }

    @Override
    public AbstractParameters createParameters() {
        return new CustomParameters();
    }
}

第三步:UI配置与打包部署

前端配置

在dolphinscheduler-ui/src/views/task/目录添加任务配置表单组件,参考shell/ShellTask.vue实现参数录入界面。

打包与部署

执行项目根目录打包命令:

mvn clean package -DskipTests -pl dolphinscheduler-task-plugin/custom-task

将生成的custom-task-*.jar复制到部署目录的lib/文件夹下,重启DolphinScheduler服务:

./bin/dolphinscheduler-daemon.sh restart master-server
./bin/dolphinscheduler-daemon.sh restart worker-server

插件调试与验证

本地调试配置

在IDE中配置WorkerServer启动参数,指定插件目录:

-Dplugin.dir=./dolphinscheduler-task-plugin/custom-task/target/

任务创建与执行

登录DolphinScheduler UI,在工作流定义页面选择"自定义任务"类型,配置参数并运行。通过监控页面查看任务执行状态,日志可在worker/logs/中查看。

自定义任务配置界面

总结与扩展

通过本文3个步骤,你已掌握:

  1. 插件项目的标准结构与依赖配置
  2. 核心任务类的实现方法(参数校验、业务逻辑、状态回调)
  3. 插件打包部署与验证流程

进阶方向

完整开发文档可参考官方开发指南,更多插件示例可查看dolphinscheduler-task-plugin/目录下的官方实现。

收藏本文,关注项目RELEASE.md获取插件API变更通知,让你的自定义任务持续兼容新版本。

【免费下载链接】dolphinscheduler Apache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code 【免费下载链接】dolphinscheduler 项目地址: https://gitcode.com/gh_mirrors/do/dolphinscheduler

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值