
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-shell、dolphinscheduler-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 的第一步操作路径如下点击左侧菜单项目管理进入项目管理页面点击创建项目按钮在弹窗中填写项目名称与项目描述点击提交完成创建。创建/编辑弹窗由 project-modal.tsx 实现其表单包含三个字段字段说明约束项目名称项目唯一标识必填空值校验不通过无法提交所属用户项目拥有者自动填充为当前登录用户输入框为只读disabled项目描述项目的补充说明可选多行文本输入表单校验规则定义在 use-form.tsprojectName和userName均为必填触发时机为input与blur校验通过后statusRef 0时调用createProjectPOST否则调用updateProjectPUT提交数据。提交期间按钮进入 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 组WorkerGroupWorker 分组用于对执行任务的 Worker 节点进行逻辑分组。项目级 WorkerGroup 授权决定了该项目下的工作流可以调度到哪些 Worker 组上执行。操作步骤在项目管理页面点击某项目行的WorkerGroup 授权按钮仅管理员可见见 use-table.ts在弹窗中选择目标 WorkerGroup授权成功后该项目即可访问所选 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。与上述两个运行态统计不同它反映的是项目的工作流资产规模而非运行结果。七、源码级透视项目管理的调用链与权限模型将前端操作与后端接口串联起来可以完整还原项目管理的调用链列表查询前端queryProjectListPaging→GET /projects→ProjectController.queryProjectListPaging→ProjectServiceImpl.queryProjectListPagingProjectServiceImpl.java按searchVal模糊匹配、pageNo/pageSize分页返回创建项目前端createProject→POST /projects→ProjectServiceImpl.createProject同上文件第 100 行写入项目记录权限校验查询、更新、删除等操作统一通过checkProjectAndAuthThrowException(loginUser, project, permission)校验当前登录用户对目标项目是否持有对应权限未授权则直接抛出异常授权查询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),仅供参考