dolphinscheduler 3.0.1 项目管理(三):任务

🔼上一集:dolphinscheduler 3.0.1 项目管理(二):工作流实例

*️⃣主目录:dolphinscheduler 3.0.1功能梳理及源码解读

🔽下一集:dolphinscheduler 3.0.1 项目管理(三):资源中心


1.0的时候,工作流定义就对应一个json串,存在一个字段中,2.0开始就分开了,工作流定义和任务定义、外加一张关系表三张表,3.0的时候前端把任务也单独拎出来了,创建了单独的菜单,增加了任务定义等功能,通篇看下来,不要问我星星有几颗,确实bug很多很多


🐬任务定义基本操作


🐠基本操作


🐟创建任务


增加了任务组,组内优先级
在这里插入图片描述
但是任务组(资源中心再详聊)还创建不了,净整花里胡哨的
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

海豚调度更新迭代是块,所以bug产量也多,本地启动ui,和虚拟机上的效果还不一样!!!
在这里插入图片描述
在这里插入图片描述
效果如下:
在这里插入图片描述

🐡源码

TaskDefinitionController.createTaskBindsWorkFlow()
TaskDefinitionServiceImpl.createTaskBindsWorkFlow()

在这里插入图片描述
在这里插入图片描述

其实就登记两/四(log表)张表,登记任务定义表t_ds_task_definition和工作流任务关系表t_ds_process_task_relation(关联的key是code + version,任务的前置节点为空时,对应的pre_task_node和pre_task_version为0)
在这里插入图片描述
t_ds_process_task_relation的作用还是比较大的,构建DAG,工作流依次执行,包括前面文章提到的节点运行,向后、向前,都离不开这张表
在这里插入图片描述

在这里插入图片描述

🐟修改 查询 删除


  • 修改:只允许修改内容,不允许修改工作流、前置任务(bug 数据不显示),所以就是简单的任务定义表更新
    在这里插入图片描述
    本地启动UI,只有工作流不允许修改,前置任务数据也不显示,bug何其多
    在这里插入图片描述
  • 查询:查询任务定义表,增加判断是否有上游任务并传入上游信息
    在这里插入图片描述
  • 删除:只能删除没有依赖关系的节点,删除关系表(前置节点0),删除任务定义表,理论是这样
    在这里插入图片描述
    在这里插入图片描述
    实际上又是个bug,删除新增的任务,对应的工作流之前的节点也不显示了,被删除了还是关联关系中断了?有兴趣自己研究吧(内心MMP,更新这么快搞什么,都是bug!!!)
    在这里插入图片描述

🐟移动 版本


  • 移动报错:405 Method Not Allowed,对应ProcessTaskRelationController,没有该方法
    在这里插入图片描述
    看了最新代码也没有该方法,看页面,如果移动只传一个工作流名称,那只能移动没有关联关系的节点,比如说上面定义的addTask-local,依赖三个上游节点,其它工作流肯定没有这三个节点,所以移动的时候要页面加个前置任务,除了更新定义表、登记关系表,还要删除之前的关系表中的数据
    在这里插入图片描述
  • 版本
    下线的任务也无法编辑,找下现有的数据吧
    在这里插入图片描述

在这里插入图片描述
不见了!!!!!
在这里插入图片描述
在这里插入图片描述

🐬任务实例


🐠强制成功


只有失败的任务节点可以强制成功
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述唯一能想到的使用场景就是依赖节点,比如定义任务D,依赖工作流shell的A节点,A节点先执行,失败了,后面执行D的时候也会失败,假如这一次不需要考虑A的结果,希望D能够正常执行,那么A失败后,紧接着强制成功,那么D将正常执行下去。总感觉很鸡肋?不知道真正的使用场景是什么
在这里插入图片描述

🐠日志查看下载


3.0日志下载按钮单独拎出来了
在这里插入图片描述
在这里插入图片描述

🐟日志查看


在这里插入图片描述

LoggerController.queryLog()
LoggerServiceImpl.queryLog()

和前面文章介绍的删除日志流程一样,发送指令获取响应
在这里插入图片描述

🐟日志下载


LoggerController.downloadTaskLog()
LoggerServiceImpl.queryLog()
import org.springframework.http.ResponseEntity;
public ResponseEntity downloadTaskLog(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
                                      @RequestParam(value = "taskInstanceId") int taskInstanceId) {
    byte[] logBytes = loggerService.getLogBytes(taskInstanceId);
    return ResponseEntity
        .ok()
        .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + System.currentTimeMillis() + ".log" + "\"")
        .body(logBytes);
}

System.getProperty("line.separator")获取操作系统对应的换行符,比如:

  • windows:\r\n
  • linux/unix:\r
  • Mac:\n
private byte[] getLogBytes(TaskInstance taskInstance) {
    Host host = Host.of(taskInstance.getHost());
    byte[] head = String.format(LOG_HEAD_FORMAT, taskInstance.getLogPath(), host,System.getProperty("line.separator")).getBytes(StandardCharsets.UTF_8);
    return Bytes.concat(head,logClient.getLogBytes(host.getIp(), host.getPort(), taskInstance.getLogPath()));
}

最后给大家分享一段代码,保证认识字的人都能看懂:

if("写的还凑合"){
    "请右下角点👍"
} else if("写的不错") {
    "请右下角点⭐收藏,没事就可以回味回味!"
} else {
    "请右下角点💬,接受夸赞,反对批评!"
    "当然有问题,热烈🌞欢迎🎈指正🙇‍♂️!"
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

韧小钊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

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

抵扣说明:

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

余额充值