业务流程
功能概述
功能简介
业务流程是离线开发中用于跨工作流整合任务的调度单元。 在复杂的数据开发场景中,用户会面临业务逻辑跨越多个工作流,导致任务管理和依赖配置变得困难,「业务流程」功能正是为了解决这一痛点而设计的
当业务逻辑跨越多个工作流,且不同工作流中的关键任务存在依赖关系时,可通过业务流程将这些分散的任务统一管理,形成一个完整、清晰的业务链路视图。
相比传统工作流,业务流程更关注业务层面的任务编排与依赖关系,而非单一数据处理链路。它赋予用户跨工作流的任务调度、依赖配置、运行与补数能力,帮助用户在复杂业务场景下更高效地组织任务流转与执行。
与工作流的核心区别

典型使用场景
场景一:跨工作流任务依赖
痛点:某个任务(如下游的“用户画像生成”)依赖于另一个完全独立的工作流(如上游的“订单数据处理”)的产出结果,传统方式难以配置这种跨流程的依赖。
解决方案:通过业务流程,您可以轻松将“订单状态处理完成”任务和“生成用户标签”任务纳入统一管理,并直接在画布上建立它们的依赖关系,确保数据生产的正确顺序。
场景二:多工作流业务链路整合
痛点:一个完整的业务(如“用户行为分析全链路”)可能由“数据采集”、“数据清洗”、“标签生成”、“报表输出”等多个独立的工作流组成,缺乏统一的业务视图进行监控和管理。
解决方案:业务流程可以将这些分散的工作流中的核心任务串联起来,形成一个宏观的业务视图,方便您从整体上监控业务进度、定位问题和进行统一运维。
创建与配置业务流程
新建业务流程
在数据开发中新增了 “业务流程”根目录,用于集中管理所有业务流程与关联任务。系统提供三种入口用于创建业务流程,点击任一入口,将打开“新建业务流程”弹窗完成设置:
- 右键菜单:在“业务流程”根节点右键选择 新建业务流程或创建业务流程文件夹
- 任务操作栏:在“新建”菜单中选择 新建业务流程
- 数据开发首页:点击首页入口 新建业务流程

限制说明
- 任务数量限制:为保证画布性能与可维护性,单个业务流程最多支持添加 500 个任务
- 任务类型限制:业务流程中不支持创建“工作流”任务

配置业务流程
- 新建任务
- 任务创建与展示:左侧面板展示可选任务类型,用户可将任务类型拖拽至画布以创建任务
- 任务配置:新建任务弹窗支持填写任务的必要配置信息
- 任务块展示:任务块中展示任务名称与类型图标,支持拖拽连线配置依赖关系(操作方式参考工作流)
- 业务流程面板
用于可视化管理业务流程中的子任务及其依赖关系,支持以下功能:
- 自动布局:存在上下游依赖的任务按垂直方向自动布局;无依赖任务按水平方向排列
- 任务搜索:可通过任务名称快速定位并高亮目标任务
- 任务依赖:不限制起始任务的个数,可配置多个无依赖关系的头任务
- 依赖成环:面板中无法对任务依赖配置连线成环
- 新建依赖:通过任务块之间的连线配置依赖,配置后上游任务运行成功后下游任务才可运行
- 依赖删除:右键单击连线,可删除此依赖关系
- 视图缩放:支持放大 / 缩小面板视图,便于查看复杂流程结构
- 任务创建:从左侧任务列表拖入面板即可快速创建任务,并支持配置任务属性
- 业务流程与子任务操作
- 编辑:支持修改业务流程名称,弹窗中自动回显当前名称
- 业务流程调度:业务流程不支持配置周期调度属性,只支持配置任务依赖,业务流程内子任务可以配置调度属性
- 业务流程删除:仅当业务流程内所有任务均为未提交、冻结或下线状态时可删除
- 子任务删除:对未提交任务可直接删除;对已提交任务需先冻结/下线后方可删除
- 子任务编辑:双击任务进入到任务编辑界面,对子任务编写代码逻辑,配置任务依赖及其他任务属性

任务依赖配置
添加上游依赖
在任务编辑页面的“调度依赖”配置中,您可以为任务添加上游依赖(仅支持配置手动依赖)。业务流程场景下的配置规则如下:
- 新增“业务流程”下拉框:支持选择已提交到调度的业务流程或业务流程内子任务作为依赖
- 选择业务流程:“任务”下拉框将变为非必填。若不选择具体任务,则表示当前任务依赖于所选业务流程的所有尾节点任务。若选择具体任务,则表示依赖该业务流程内的指定任务,支持同一业务流程内的多个任务依赖配置 (可一次选择多个任务作为上游依赖)
- 不选择业务流程:操作与普通任务一致,可直接从项目中选择任意已提交的任务作为依赖。

- 为避免依赖重复添加,添加上游依赖存在以下限制:
- 若当前任务已依赖某个业务流程(整体),则再次添加依赖时,该业务流程不会出现在下拉列表中,如图1
- 当任务或业务流程已依赖于某业务流程内的子任务时,若再次添加上游依赖并选择该业务流程,任务下拉框将变为必填项,需明确选择具体依赖的子任务,如图2

依赖展示与类型
- 在“任务间依赖”列表中,系统会展示依赖详情,并新增“业务流程”和“依赖类型”字段,帮助您快速识别依赖来源
- 业务流程:表示依赖一个完整的业务流程。
- 流程内任务:表示依赖某个业务流程内的具体子任务。
- 单任务:表示依赖一个不属于任何业务流程的独立任务。

配置限制:
- 内部依赖不可操作:若任务依赖的是当前业务流程内的子任务(通过画布连线创建),该依赖关系在“任务间依赖”列表中不可配置周期,也不可删除,需返回画布进行操作。
- 依赖成环校验:系统禁止提交会造成循环依赖的配置。若调度依赖配置出现依赖成环,如下图所示任务依赖关系为b3->c2->b2->c3->b3,此时引擎无法确定哪个任务先运行,会造成任务在调度中一直处于等待提交状态,此时任务禁止提交

依赖视图展示
依赖视图以有向无环图(DAG)的形式,直观展示任务及其上下文的依赖关系,提升复杂流程的可理解性。当任务保存后,系统将自动更新DAG视图
- 分组展示:同一业务流程内的任务将用边框分组展示,清晰地区分归属范围。
- 依赖展示逻辑:视图会根据依赖类型智能决定展示范围,保持视图简洁。
- 依赖/被依赖为业务流程:展示该业务流程内的所有任务。
- 依赖/被依赖为流程内子任务:仅展示该子任务及其所在业务流程的边框。
- 依赖/被依赖为单任务:仅展示该任务节点。

任务依赖示例
业务流程既可依赖其他业务流程、单个任务或其他流程内的任务,也可被业务流程、任务及流程内任务所依赖。以下通过具体示例说明不同类型的依赖关系

任务级依赖逻辑
- 业务流程依赖业务流程(示例:**
ywlc_test2 -> ywlc_test1**)
- 逻辑说明:下游业务流程内的所有任务,均依赖于上游业务流程内的所有任务。
- 示例关系:
a3 -> a2
a3 -> c2 -> b2
c3 -> b3 -> a2
c3 -> b3 -> c2 -> b2
c3 -> b3 -> test -> c2 -> b2
- 任务依赖业务流程(示例:**
bb -> ywlc_test3**)
逻辑说明:任务将分别依赖于目标业务流程内的所有任务。
示例关系:
bb -> a3 bb -> c3 -> b3
- 业务流程依赖业务流程内的任务(示例:**
ywlc_5 -> b1**)
逻辑说明:下游业务流程内的所有任务,均依赖于指定上游任务。
示例关系:
a3 -> b1 c3 -> b3 -> b1
业务流程运行与运维
任务调试
在业务流程画布中,可以对流程内的任务进行调试运行
- 整体运行/停止:
- 点击工具栏的“运行”按钮,将统一执行流程内所有任务。无依赖的任务会并行运行(单次最多300个),有依赖的任务则按链路顺序执行。
- 停止按钮默认置灰,有任务运行时可点击,停止所有运行中与待运行任务
- SQL规范性校验:运行时,系统会根据平台配置的规则对SQL任务进行校验
- 阻断:命中阻断规则后,若不存在任务间依赖关系,其他任务正常运行,校验有阻断的任务不执行;若存在任务间依赖,下游均不执行。项目管理员/项目所有者可通过“仍要运行”强制执行。
- 提示:命中提示规则的任务会正常运行,并展示预警信息。

- 日志与结果:
- 运行时日志会按依赖关系依次输出。若存在多个任务并行执行,则按实际执行时间分别展示各子任务的运行日志。可以通过“查看完整日志”跳转至详情页。
- 查询类任务在业务流程的运行中不展示查询结果。
- 二次运行:将重新执行SQL规范性检查与并生成任务日志


任务操作
- 在画布上右键单击单个任务节点,可以执行更精细的操作:
- 运行当前任务:只运行当前选中的任务,其他任务均不运行
- 从当前任务开始运行:从所选任务开始运行,依次运行当前及下游依赖的任务
- 运行至当前任务:根据上游依赖运行到当前任务,若无上游则只运行当前任务
- 保存任务:保存所选任务的配置信息
- 编辑任务属性:编辑当前节点的属性信息,与新建任务的弹窗相同
- 查看任务内容:跳转至任务编辑界面,编辑任务的SQL和配置信息
- 查看运行结果:展示当前任务运行的结果(任务运行成功后展示此按钮)
- 查看运行日志:展示当前任务运行的日志(任务开始运行后展示此按钮)
- 删除任务:二次确认后删除所选任务,并删除任务上下游依赖的连线。未提交的任务,可直接删除;已提交的任务需冻结后才可删除,否则异常提示“当前任务未被冻结”,且不可删除

任务提交
- 提交子任务:仅将选中的子任务提交至调度运行,执行逻辑与任务自身配置保持一致。若再次提交,仅更新当前子任务的配置信息。
- 提交业务流程:一次性将业务流程下的所有任务提交至调度运行,按各任务的调度配置依次执行。仅在提交业务流程后,运维中心才会展示该业务流程信息。再次提交时,将更新流程内所有任务的配置信息。
运行参数
支持添加「业务流程参数」类型,添加后该业务流程下的所有任务均可引用此参数。在页面运行、周期调度及补数据等场景中,任务中引用到的参数将统一取该参数配置的值,实现参数的集中管理与统一修改

运行逻辑
- 任务依赖业务流程:当业务流程内的所有任务均运行成功后(即尾节点任务 task_b1、task_d1 均执行成功),下游test任务开始运行,实际依赖关系如下:
test->task_b1->tastk_a1
test->task_d1->tastk_c1

- 任务依赖业务流程内子任务:当业务流程内被依赖的子任务task 与 task_b1 运行成功后,下游test任务开始运行,实际依赖关系如下:
test->task_a1

- 业务流程依赖业务流程:当被依赖的业务流程 ywlc_test1 内尾节点任务(task_b1、task_d1)运行成功后,下游业务流程 ywlc_test2 内任务均开始运行。实际依赖关系如下:
task_b2->task_a2->task_b1->task_a1
task_b2->task_a2->task_d1->task_c1
task_d2->task_c2->task_b1->task_a1
task_d2->task_c2->task_d1->task_c1

- 业务流程依赖业务流程内子任务: 当被依赖的业务流程内指定子任务运行成功后,下游业务流程内任务开始运行。实际依赖关系如下:
task_b2->task_a2->task_a1
task_d2->task_c2->task_a1

- 业务流程内子任务依赖业务流程:当被依赖的业务流程 ywlc_test1 内尾节点任务(task_b1、task_d1)运行成功后,下游业务流程内的子任务开始运行。实际依赖关系如下:
task_b2->task_b1->task_a1
task_b2->task_d1->task_c1

- 业务流程内子任务依赖业务流程内子任务:当被依赖的业务流程内子任务运行成功后,下游业务流程内对应子任务开始运行。实际依赖关系如下:
task_d2->task_c2->task_a1

任务发布与批量操作
任务发布
业务流程提交后,即可在“任务发布”模块中进行打包发布。在任务列表中新增筛选功能,提供以下筛选项:
- 按任务筛选:可筛选业务流程内已提交的子任务,以及任务开发目录下已提交的独立任务。
- 按业务流程筛选:可根据业务流程名称筛选展示对应业务流程下的任务。
任务发布逻辑:
- 打包发布整个业务流程:首次发布时,在目标项目中自动新建对应的业务流程及其全部任务;再次发布时,将对目标项目中的任务和依赖进行覆盖更新,目标项目中如有多余的未包含在发布包内的任务将被删除。
- 打包发布业务流程内部分任务:首次发布时,在目标项目中新建对应业务流程及所选任务;再次发布时,仅更新发布包内包含的任务,其他任务保持不变。
- 发布内容及状态说明:打包业务流程内子任务时,发布包中将自动新增业务流程对象,并将该业务流程所在的文件夹一并发布至目标项目。发布完成后,业务流程及其子任务默认均为已提交状态。

上游依赖校验:
在任务发布过程中,系统会对发布包内任务的上游依赖进行校验。
- 若目标项目中未包含发布包内任务所依赖的上游任务,系统将在发布时提示缺失上游依赖错误。
- 需确保目标项目中已存在所有上游依赖任务,或将相关上游任务一同打包发布
eg:发布业务流程 0928B 内的任务 0928B_2、0928B_3 时,若目标项目中不存在上游任务 0928B_1,则发布时会报错提示“缺失上游依赖”

批量操作
在周期任务批量操作中新增「业务流程」筛选框,按业务流程维度筛选出其下的所有子任务,然后进行批量操作,例如:批量进行提交、修改调度周期、修改任务名称、修改责任人、修改资源组、修改任务标签操作

运维中心
新增「业务流程」Tab页面,以业务流程维度对流程内所有子任务进行批量管理操作,包括补数据、下线、冻结及解冻。

业务流程补数据
- 统支持按照业务流程的上下游依赖关系进行补数据操作。
- 当选择“补当前业务流程及下游”时,系统将基于任务依赖关系自动识别并展示所有下游相关任务。执行补数据后,系统会沿业务流程中任务的依赖链路依次运行相应任务。
- 若任务依赖于业务流程内的子任务,则在对该业务流程进行补数据时,也会自动补到对应的子任务。

任务下线限制
为确保数据生产的准确性,当下线的任务被其他正在运行的任务依赖时,系统将阻止下线操作并给出提示。需要先处理下游依赖关系,才能成功下线该任务。
例如:任务 test 依赖业务流程 ywlc_test,该流程中存在两条依赖链路:
test → task_b → task_atest → task_d → task_c
为确保调度任务的数据产出准确,此时 task_a、task_b、task_c、task_d 均无法下线
