ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Apache DolphinScheduler 条件节点(Conditions)任务完整指南:基于上游任务执行状态的分支调度

2026/9/24 10:42:29 拓冰建站 浏览量
Apache DolphinScheduler 条件节点(Conditions)任务完整指南:基于上游任务执行状态的分支调度 任务调度大数据后端前端【免费下载链接】dolphinschedulerApache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code项目地址https://gitcode.com/gh_mirrors/do/dolphinscheduler点击查看免费下载Conditions条件节点是 Apache DolphinScheduler 中一种条件分支类任务节点它根据**上游任务的执行状态成功 / 失败**来决定后续应该运行哪一条下游分支。与 Switch 节点按参数值分支不同Conditions 关注的是上游任务跑得怎么样适合在数据链路中实现失败走告警分支、成功走正常处理分支这类依赖运行结果的分支编排。读完本文你将掌握 Conditions 节点的创建步骤、全部参数含义、多上游组合的and/or逻辑、真实示例搭建过程以及它在引擎内部的执行原理与常见使用禁忌。Conditions 节点的核心概念Conditions 是一个条件判定节点它本身不执行业务逻辑而是充当路由开关根据上游任务的执行状态决定下游哪个任务应当运行。它的核心约束如下支持多个上游任务但仅支持两个下游分支成功分支、失败分支当上游任务数量超过一个时通过and且与or或操作符组合出复杂的依赖关系下游分支的取舍完全取决于上游任务的执行结果而非某个参数值。从源码上看Conditions 属于逻辑类任务Logic Task并不真正提交到 Worker 执行。其参数模型定义在 ConditionsParameters.java 中核心由两部分组成ConditionDependency dependence上游依赖集合dependTaskList与组合关系relation取值为AND/ORConditionResult conditionResult判定结果的路由目标包括成功分支节点列表successNode与失败分支节点列表failedNode。参数校验逻辑checkParameters()要求上游依赖列表不能为空且成功节点与失败节点都至少配置一个否则任务参数不合法。这从引擎层面保证了两个分支必须齐备的设计约束。创建 Conditions 任务创建 Conditions 任务的入口与其他任务节点一致进入项目管理 - 项目名称 - 工作流定义点击创建工作流按钮进入 DAG 编辑页面从左侧工具栏中将 Conditions 任务节点拖拽到画布上在弹窗中完成下游任务选择与上游条件选择保存后连线组成 DAG。由于 Conditions 是一个纯逻辑节点配置完成后无需提交给 Worker 执行引擎会在 Master 侧完成条件判定与分支选择详见下文引擎内部如何判定一节。任务参数详解Conditions 任务没有业务参数其全部配置集中在下游任务选择与上游条件选择两项。通用默认参数如节点名称、运行标志、失败重试次数、超时告警等请参考 任务参数附录 中的Default Task Parameters一节。参数说明下游任务选择根据前置任务的执行状态跳转到对应分支当前支持两个分支成功、失败。成功Success当上游任务运行成功时运行成功分支。失败Failure当上游任务运行失败时运行失败分支。上游条件选择可选择单个或多个上游任务作为条件。添加上游依赖第一个参数选择指定的任务名称第二个参数选择用于触发条件的上游任务状态。选择上游任务关系当存在多个上游任务作为条件时使用and和or操作符处理上游任务的复杂关系。下游任务选择在下游任务选择区域分别为成功分支与失败分支指定具体的下游任务节点成功上游条件判定为真时运行的分支失败上游条件判定为假时运行的分支。与源码中的ConditionResult对应successNode保存成功分支节点编码列表failedNode保存失败分支节点编码列表。引擎判定完成后只会把对应分支节点加入可执行集合另一分支节点在本轮运行中被跳过。上游条件选择上游条件用于声明什么情况下条件成立每个上游依赖条目包含两部分任务名称选择哪个上游任务作为判定对象任务状态选择该上游任务的期望状态例如成功来触发条件。当配置多个上游任务时可通过关系操作符组合and所有上游任务都满足指定状态时条件才成立or任意一个上游任务满足指定状态时条件即成立。对应源码中的ConditionDependencydependTaskList保存每个上游依赖条目含任务编码与期望状态通过 DependentTaskModel 建模relation保存AND/OR组合关系。组合示例假设 A、B 两个上游任务若选择and则只有 A、B 都成功或都满足所选状态时走成功分支若选择or则 A、B 任一成功即走成功分支。与 Switch 节点的区别Conditions 与 Switch 节点同属条件分支类任务但判定依据完全不同对比维度ConditionsSwitch判定依据上游任务的执行状态成功 / 失败全局参数 的值与用户编写的表达式分支数量固定两个成功、失败可配置多个分支 默认分支适用场景依据任务运行结果分流依据参数取值分流简单来说Conditions 关心上游任务跑成功了没有Switch 关心参数值是什么。如果业务上是数据校验任务失败则发告警、成功则继续下游计算用 Conditions 最直观如果是根据日期参数走不同分区处理逻辑则用 Switch 更合适。实战示例用 Shell 任务演示 Conditions 分支下面通过 Shell 任务搭建一个完整示例演示 Conditions 的运行过程。创建工作流进入工作流定义页面依次创建以下任务节点Node_AShell 任务输出hello world。它是 Conditions 的上游分支其执行成功与否将决定触发哪条分支ConditionConditions 任务根据上游任务的执行状态执行对应分支Node_SuccessShell 任务输出success当 Node_A 执行成功时运行Node_FalseShell 任务输出false当 Node_A 执行失败时运行。连线顺序为Node_A - ConditionCondition - Node_Success成功分支、Condition - Node_False失败分支。查看执行结果创建完成后将工作流上线并手动运行。在工作流实例页面可以查看每个任务的执行状态如下图所示上图中带有绿色对勾标记的任务节点即为成功执行的任务节点。当 Node_A 运行成功时Conditions 判定条件成立Node_Success 被执行、Node_False 被跳过反之若 Node_A 运行失败则 Node_False 被执行、Node_Success 被跳过。引擎内部如何判定源码级解析Conditions 的分支判定发生在Master 服务侧而不是 Worker 侧。从 WorkflowExecuteRunnable.java 的执行逻辑可以还原出完整判定链路识别逻辑节点在任务提交前引擎通过TaskTypeUtils.isConditionTask(...)判断当前节点是否为 Conditions 类型类型常量定义在 TaskTypeUtils.java若是则走逻辑判定路径不派发给 Worker解析依赖并跳过目标分支调用DagHelper.parseConditionTask(...)解析 Conditions 的上游依赖结合已完成的实例状态getCompleteTaskInstanceMap()计算条件结果并把不需要运行的分支节点写入跳过映射skipTaskNodeMap计算后续可执行节点通过DagHelper.haveConditionsAfterNode(...)判断某节点之后是否挂有 Conditions 节点从而在下游节点遍历时决定是直接执行还是继续判定保证整条链路上的分支选择一致。对应到参数模型ConditionResult.conditionSuccess记录判定结果布尔值successNode/failedNode分别记录两条分支的目标节点编码引擎依据判定结果将对应分支节点放行、另一分支节点跳过从而实现二选一的路由效果。而checkParameters()要求成功、失败分支都至少有一个节点正是为了保证两个分支都能被正确映射。注意事项与常见误区使用 Conditions 任务时请务必遵守以下约束仅支持两个下游分支Conditions 支持多个上游任务但下游只能配置成功、失败两条分支分支数量不可扩展不支持复制Conditions 任务及其所属工作流不支持复制操作禁止反向连线Conditions 的前置任务不能连接到它的分支节点。这样会造成逻辑混乱不符合 DAG 调度规范。下图所示的连接方式是错误的条件必须可判定上游依赖任务列表不能为空且成功、失败分支都至少选择一个节点否则任务参数校验不通过工作流无法正常提交。总结Conditions 是 Apache DolphinScheduler 中基于运行结果进行分支编排的轻量逻辑节点它以上游任务执行状态 and/or组合作为判定依据把下游路由收敛到成功、失败两个分支并且全程在 Master 侧完成判定、不占用 Worker 资源。在搭建成功走处理链、失败走告警链的数据工作流时Conditions 是最直接、最高效的选择掌握它与 Switch 的分工差异以及两个分支、禁止反向连线、不支持复制三条红线即可在真实项目中安全使用这一能力。赞分享任务调度大数据后端前端【免费下载链接】dolphinschedulerApache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code项目地址https://gitcode.com/gh_mirrors/do/dolphinscheduler点击查看免费下载相关推荐Apache DolphinScheduler 条件任务Conditions完整指南基于上游执行状态的分支调度Apache DolphinScheduler 条件任务Conditions完整指南基于上游执行状态的分支调度 导读 Conditions条件是 Ap任务调度数据编排工作流自动化后端大数据Apache DolphinScheduler Conditions 条件节点基于上游任务状态的分支调度实战指南Apache DolphinScheduler Conditions 条件节点基于上游任务状态的分支调度实战指南 导读 Conditions 是 Apache任务调度数据编排工作流自动化后端大数据Apache DolphinScheduler Conditions 条件节点完全指南基于上游任务状态的分支流转实现Apache DolphinScheduler Conditions 条件节点完全指南基于上游任务状态的分支流转实现 Conditions 是 Apache任务调度大数据后端前端创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考