news 2026/9/14 14:27:42

Apache DolphinScheduler 项目管理实战:项目列表、创建、WorkerGroup 授权与概览统计全解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Apache DolphinScheduler 项目管理实战:项目列表、创建、WorkerGroup 授权与概览统计全解析

Apache DolphinScheduler 项目管理实战:项目列表、创建、WorkerGroup 授权与概览统计全解析

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

本文以 Apache DolphinScheduler 的 Project(项目管理)功能为主线,系统讲解项目管理页面的术语体系、项目列表页字段与操作、项目创建流程、WorkerGroup 授权机制以及项目概览的三大统计指标,并结合仓库中的前端 UI 代码与后端 REST 接口源码,说明每个操作的实现原理与权限约束。读完本文,你将能完整掌握在 DolphinScheduler 中从创建项目、授权 WorkerGroup 到查看项目运行概览的完整实操链路。

一、项目管理核心术语速览

在进入操作步骤之前,先建立统一的概念基础。Apache DolphinScheduler 的项目(Project)是其全部编排能力的逻辑容器,围绕项目存在以下核心术语:

术语说明
DAG工作流中的任务以有向无环图(Directed Acyclic Graph)的形式组装,从入度为零的节点开始进行拓扑遍历,直到不再存在后继节点为止。
工作流定义(Workflow Definition)通过拖拽任务节点并建立任务节点关联(DAG)形成的可视化产物。
工作流实例(Workflow Instance)工作流定义的实例化产物,可通过手动启动或定时调度生成,流程定义每次运行都会产生一个工作流实例。
工作流关系(Workflow Relation)展示项目内所有工作流的动态状态关系。
任务(Task)工作流中的离散动作单元。DolphinScheduler 支持 SHELL、SQL、SUB_WORKFLOW、PROCEDURE、MR、SPARK、PYTHON、DEPENDENT(依赖)等多种任务类型,并计划支持动态插件扩展;SUB_WORKFLOW 本身也是一份可独立启动执行的流程定义。
任务实例(Task Instance)流程定义中任务节点的实例化,用于标识具体任务的执行状态。

从仓库源码看,任务类型在前端统一由 task-type.ts 维护,任务插件体系位于 dolphinscheduler-task-plugin 目录,每种任务类型对应一个独立模块(如dolphinscheduler-task-shelldolphinscheduler-task-spark等),印证了"任务类型支持动态插件扩展"的设计。

二、项目列表页:字段构成与操作入口

进入项目管理页面后,可以看到当前用户有权限访问的全部项目列表。列表以表格形式呈现,其字段构成在前端 use-table.ts 中定义:

  • 项目名称(project_name):以可点击链接形式展示,点击后跳转到/projects/${code}进入项目首页;
  • 所属用户(owned_users):项目的拥有者;
  • 工作流定义数(workflow_define_count):该项目下已定义的工作流数量;
  • 描述(description):项目备注说明;
  • 创建时间(create_time):格式化为yyyy-MM-dd HH:mm:ss
  • 更新时间(update_time):同上格式;
  • 操作(operation):编辑、WorkerGroup 授权、删除三个按钮。

列表页同时提供搜索框(按项目名称模糊检索)、分页组件(每页 10/30/50 条可选),并通过queryProjectListPaging请求/projects接口拉取数据,具体实现见 projects/index.ts。

页面交互层的关键细节(见 list/index.tsx):

  • 编辑:点击编辑按钮会打开项目弹窗并预填当前行数据;
  • WorkerGroup 授权:仅管理员(userType === 'ADMIN_USER')可见该按钮;
  • 删除:使用NPopconfirm弹出二次确认,确认后调用deleteProject(row.code),删除成功后若当前页仅剩一条数据且页号大于 1 会自动回退一页(见 use-table.ts)。

三、创建项目:表单字段与校验规则

创建项目是使用 DolphinScheduler 的第一步,操作路径如下:

  1. 点击左侧菜单项目管理进入项目管理页面;
  2. 点击创建项目按钮;
  3. 在弹窗中填写项目名称项目描述
  4. 点击提交完成创建。

创建/编辑弹窗由 project-modal.tsx 实现,其表单包含三个字段:

字段说明约束
项目名称项目唯一标识必填,空值校验不通过无法提交
所属用户项目拥有者自动填充为当前登录用户,输入框为只读(disabled)
项目描述项目的补充说明可选,多行文本输入

表单校验规则定义在 use-form.ts:projectNameuserName均为必填,触发时机为inputblur;校验通过后,statusRef === 0时调用createProject(POST),否则调用updateProject(PUT)提交数据。提交期间按钮进入 loading 状态,防止重复提交。

对应后端接口在 ProjectController.java 中定义:

  • POST /projects:创建项目(第 86 行起);
  • PUT /projects/{code}:更新项目;
  • DELETE /projects/{code}:删除项目;
  • GET /projects:分页查询项目列表。

其中删除操作对应后端权限校验方法checkProjectAndAuthThrowException(见 ProjectServiceImpl.java),仅持有PROJECT_DELETE权限的用户才能执行删除,体现了项目级的细粒度权限控制。

四、编辑与删除项目:操作注意事项

  • 编辑项目:在项目列表中点击"编辑"图标,弹窗会预填当前项目的名称、所属用户与描述,修改后提交即调用PUT /projects/{code}更新。
  • 删除项目:点击删除图标后,前端弹出确认框,确认后调用DELETE /projects/{code}。注意删除会连带影响项目下的工作流定义与实例,属于不可逆操作,务必确认项目已不再需要。

从权限模型看,项目操作区分了查看(PROJECT)、删除(PROJECT_DELETE)等不同级别的权限,且授权不仅限于项目拥有者——管理员可以将项目授权给其他用户,这也是"项目概览中的工作流定义统计包含管理员授予的项目"这一说法的由来。

五、项目 WorkerGroup 授权:控制任务可用的 Worker 组

WorkerGroup(Worker 分组)用于对执行任务的 Worker 节点进行逻辑分组。项目级 WorkerGroup 授权决定了该项目下的工作流可以调度到哪些 Worker 组上执行。

操作步骤:

  1. 在项目管理页面点击某项目行的WorkerGroup 授权按钮(仅管理员可见,见 use-table.ts);
  2. 在弹窗中选择目标 WorkerGroup;
  3. 授权成功后,该项目即可访问所选 WorkerGroup,其工作流任务将只能被调度到已授权分组内的 Worker 节点执行。

实现细节(见 use-worker-group.ts 与 worker-group-modal.tsx):

  • 弹窗使用NTransfer(穿梭框)组件,左侧为全量 WorkerGroup 候选,右侧为当前项目已授权的 WorkerGroup;
  • 打开弹窗时调用queryAllWorkerGroups加载候选列表,并调用queryWorkerGroupsByProjectCode(projectCode)回显该项目已授权的 WorkerGroup;
  • 提交时调用assignWorkerGroups接口,将选中的 WorkerGroup 以逗号分隔的字符串上传(空数组时传空字符串表示清空授权)。

六、项目概览:三大统计指标解析

点击项目名称链接进入项目首页后,可看到项目运行状况的总览面板。其页面结构由 overview/index.tsx 实现,采用两列栅格布局:上方并排展示"任务状态统计"与"流程状态统计"两个状态卡片,下方全宽展示"工作流定义统计"卡片。

6.1 任务状态统计

在指定时间范围内,统计项目中所有任务实例各状态的数量,包含:提交成功、运行中、准备暂停、暂停、准备停止、停止、失败、成功、需要容错、Kill、等待线程等状态。

前端通过useTaskState(见 use-task-state.ts)请求任务实例状态分布数据,同时以表格和图表(饼图/柱状图)两种形式呈现,并支持通过日期选择器(默认范围为今日零点至今)切换统计时间窗口。

6.2 流程状态统计

在指定时间范围内,统计项目中所有工作流实例各状态的数量,状态集合与任务状态统计一致(提交成功、运行中、准备暂停、暂停、准备停止、停止、失败、成功、需要容错、Kill、等待线程)。实现上对应 use-workflow-state.ts。

6.3 工作流定义统计

统计当前用户创建以及被管理员授予的项目下的工作流定义数量,对应 definition-card.tsx。与上述两个"运行态"统计不同,它反映的是项目的工作流资产规模,而非运行结果。

七、源码级透视:项目管理的调用链与权限模型

将前端操作与后端接口串联起来,可以完整还原项目管理的调用链:

  1. 列表查询:前端queryProjectListPagingGET /projectsProjectController.queryProjectListPagingProjectServiceImpl.queryProjectListPaging(ProjectServiceImpl.java),按searchVal模糊匹配、pageNo/pageSize分页返回;
  2. 创建项目:前端createProjectPOST /projectsProjectServiceImpl.createProject(同上文件第 100 行),写入项目记录;
  3. 权限校验:查询、更新、删除等操作统一通过checkProjectAndAuthThrowException(loginUser, project, permission)校验当前登录用户对目标项目是否持有对应权限,未授权则直接抛出异常;
  4. 授权查询queryAuthorizedUser(第 541 行)用于查询项目已授权的用户列表,支撑用户/项目双向授权体系。

从整体架构看,项目管理位于 Web UI 层(dolphinscheduler-ui)与 API 服务层(dolphinscheduler-api)的协作边界上:UI 层负责交互与校验,API 层负责权限控制与数据持久化,二者通过 RESTful 接口解耦,这也与 DolphinScheduler 前后端分离的总体设计一致。

八、小结

项目管理是 Apache DolphinScheduler 一切编排工作的起点:通过项目列表页完成项目的创建、编辑、删除与检索,通过 WorkerGroup 授权约束任务的调度范围,通过项目概览实时掌握任务实例与工作流实例的运行状态分布。理解项目模型与权限体系,是后续使用工作流定义、调度编排、任务实例管理等高级功能的基础。更多操作细节可参考仓库中的 项目管理页面源码 与 项目接口定义,结合源码阅读可对每个按钮、每个字段背后的实现有更精确的把握。

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/14 14:27:15

U-Net语义分割实战:从零构建像素级图像理解系统

简介:本资源是一套面向机器学习初学者与图像处理实践者的语义分割网络算法实战包,聚焦像素级图像分类任务,适用于无人驾驶感知、医学影像分析、智能监控等场景的模型复现与调优。压缩包共105个文件,含94张标注图像(png…

作者头像 李华
网站建设 2026/9/14 14:24:00

表情识别毕设实战:从CNN模型训练到实时摄像头部署

简介:面向计算机专业学生,这是一份基于Pytorch构建的卷积神经网络面部表情识别毕业设计项目,评审得分高达98分,且已严格调试可运行。资源包内含2000个文件,其中有1992张JPG表情图像、6个Python源码、1个CSV标注文件及1…

作者头像 李华