切换主题
3.3.2 离线开发
离线开发以「工作流」为单位组织任务。一个工作流内可以放多个节点,节点之间通过连线形成上下游依赖,整体按调度周期或手动触发运行。日常操作沿着这条链路展开:
创建工作流 → 配置节点 → 建立依赖 → 配置调度 → 保存 → 上线 → 运行 → 查看实例与日志
| 环节 | 页面 | 产物 |
|---|---|---|
| 创建工作流 | 工作流定义 > 创建工作流 | 一个处于「下线」状态的工作流 |
| 配置节点 | 工作流画布 > 当前节点设置 | 节点脚本、资源与参数 |
| 配置调度 | 工作流定义 > 定时 | 一条定时计划 |
| 发布 | 工作流定义 > 上线 | 状态变为「上线」,可运行、可被调度 |
| 运行 | 工作流定义 > 运行 | 工作流实例 |
| 观察 | 工作流实例 / 任务实例 | 整体结果、节点结果与日志 |
左右滑动查看完整表格
3.3.2.1 工作流定义列表
进入「离线开发 → 工作流程 → 工作流定义」。页面顶部为操作按钮与筛选条件,中部为工作流列表,支持按工作流名称模糊查询。
| 列 | 含义 |
|---|---|
| # | 当前页内的行号 |
| 工作流名称 | 工作流的唯一标识,创建时在「基本信息」中填写 |
| 状态 | 「上线」可运行、可被调度;「下线」不能运行,但可以编辑 |
| 定时状态 | 「-」表示未配置定时;配置后为「上线 / 下线」 |
| 创建时间 / 更新时间 | 创建与最后修改时间 |
| 描述 | 创建时填写的用途说明 |
| 创建用户 / 修改用户 | 操作人账号 |
左右滑动查看完整表格
每行右侧的操作列提供 9 个图标按钮,鼠标悬停可看到名称。按下表顺序排列:
| 序 | 按钮 | 作用 |
|---|---|---|
| 1 | 编辑 | 打开「工作流定义详情」画布;工作流处于「上线」状态时不响应,需先下线 |
| 2 | 运行 | 弹出「启动前请先设置参数」,确认后立即执行一次 |
| 3 | 上线 / 下线 | 切换工作流的上线状态,操作前有确认提示 |
| 4 | 定时 | 配置调度周期与执行资源 |
| 5 | (无名称提示) | 与工作流结构相关的操作入口 |
| 6 | 复制工作流 | 以当前工作流为模板复制一份新的工作流 |
| 7 | (无名称提示) | 与工作流维护相关的操作入口 |
| 8 | 工作流树形图 | 以树形结构查看工作流内的节点关系 |
| 9 | 版本信息 | 查看工作流的版本记录 |
左右滑动查看完整表格
看不清按钮作用时,先悬停 操作列的图标含义并不是每个都有文字提示。执行影响面较大的操作(如下线、复制、删除)前,先在测试项目上确认按钮行为,避免误操作影响正在运行的工作流。 |
3.3.2.2 创建工作流
创建工作流分两步:先把节点拖进画布并完成配置,再填写工作流名称保存。只有保存成功,工作流才会出现在列表中。
- 在工作流定义列表点击右上角「创建工作流」。
- 系统在内容区打开「创建工作流定义」标签页,左侧为组件面板,右侧为空白画布。
- 从左侧「通用组件」中按住所需类型,拖到画布空白处后松开。可选类型为 SHELL、JAVA、PYTHON、SQL、FLINK_SQL、HTTP。
- 松开鼠标后弹出「当前节点设置」面板,填写节点名称并在「脚本」区域编写代码。
- 点击「确定」,节点回到画布,节点上显示序号与名称。
- 点击画布右上角「保存」,弹出「基本信息」窗口。
- 填写「工作流名称」(必填),按需填写描述、执行策略与全局参数,点击「确定」。
- 返回工作流定义列表,新建的工作流出现在列表中,状态为「下线」。
节点设置面板较长,向下滚动可见「脚本」区域。脚本为必填项,未填写时面板不会关闭,并在脚本下方提示「请输入脚本(必填)」。
| 字段 | 是否必填 | 填写说明 |
|---|---|---|
| 工作流名称 | 是 | 工作流的唯一标识,保存后以此名称显示在列表与实例中 |
| 描述 | 否 | 工作流的用途说明,便于他人识别 |
| 超时告警 | 否 | 开关。开启后按超时规则发送告警 |
| 执行策略 | 否 | 节点之间的执行方式,默认「并行」 |
| 全局参数 | 否 | 点击「添加」逐行填写键与值,供工作流内各节点引用(用法见 3.3.2.11) |
左右滑动查看完整表格
创建成功的判断依据 保存后列表中出现该工作流,且「创建用户」为当前登录账号、「创建时间」为当前时间、「状态」为「下线」,即表示创建成功。此时工作流还不参与任何调度。 |
3.3.2.3 节点配置
节点是工作流的最小执行单元。双击画布上的节点,可重新打开「当前节点设置」面板,面板字段分为执行控制、资源配置与脚本三类。
| 字段 | 说明 |
|---|---|
| 节点名称 | 必填。节点在画布与任务实例中的显示名称 |
| 运行标志 | 「正常」参与执行;「禁止执行」跳过该节点 |
| 描述 | 节点用途说明,可选 |
| 任务优先级 | 节点优先级,默认 MEDIUM |
| Worker分组 | 节点在哪个 Worker 组执行,默认「继承启动或项目默认组」 |
| 环境名称 | 节点运行环境,按项目实际配置选择 |
| 失败重试次数 / 重试间隔 | 失败后自动重试的次数与间隔(分钟) |
| CPU配额 / 最大内存 | 节点的资源限制,-1 表示不单独限制 |
| 延时执行时间 | 节点启动前等待的分钟数 |
| 超时告警 | 开关。开启后按超时时间告警 |
| 脚本 | 必填。节点实际执行的代码内容 |
| 资源 | 可关联 S3 数据源中的资源文件,点「重新加载」刷新可选列表 |
| 自定义参数 | 节点级参数,供脚本内以 ${参数名} 方式引用(用法见 3.3.2.11) |
| 前置任务 | 指定本节点的上游节点,用于补充画布连线之外的依赖 |
左右滑动查看完整表格
配置节点时需要注意三点:
- 脚本是保存的前提:脚本为空时面板不会关闭,工作流也无法保存成功。
- 依赖有两种建立方式:在画布上从一个节点向另一个节点拉线,或在「前置任务」中直接指定上游;两条路径的效果都是让节点按顺序执行。
- 执行顺序由依赖决定,不由位置决定:画布上的左右上下排布不产生依赖,只有连线和「前置任务」才产生依赖。
3.3.2.4 编辑工作流
点击列表的「编辑」图标进入编辑页,页面标题为「工作流定义详情」,布局与创建时一致,可在画布上增删节点、调整连线、修改节点配置,改完点击「保存」。
上线状态不能直接编辑 工作流处于「上线」状态时,点击「编辑」图标不会打开编辑页。正确顺序是:先点操作列第 3 个图标「下线」,确认后再点「编辑」。修改保存后必须重新「上线」,新的配置才会在后续运行与调度中生效。 |
修改已上线的工作流时,建议先在页面上确认以下三点,避免影响正在运行或待触发的任务:
- 确认本次改动范围:只改脚本、还是同时增删了节点与依赖。增删节点会影响下游依赖关系。
- 确认定时是否在运行:定时状态为「上线」时,到点会自动触发;改动期间建议先暂停调度。
- 确认是否需要重跑历史数据:节点逻辑变更后,已产出的历史数据不会自动重算,需要时通过补数处理(见 3.3.2.12)。
3.3.2.5 上线与下线
上线是工作流可运行、可被调度的前提。点击操作列第 3 个图标,系统弹出确认框,确认后列表状态随之变化。
| 操作 | 确认提示 | 执行后状态 | 影响 |
|---|---|---|---|
| 上线 | 是否确定上线该工作流? | 上线 | 可手动运行;已配置的定时可按计划触发 |
| 下线 | 是否确定下线该工作流? | 下线 | 不能运行;编辑入口恢复可用;定时不会触发 |
左右滑动查看完整表格
下线前先核对下游依赖 工作流之间存在上下游依赖时,下线本工作流可能导致下游任务一直等待。确认前请先在工作流树形图中核对是否存在下游,并通知相关任务的负责人。 |
3.3.2.6 运行工作流
点击操作列的「运行」图标,弹出「启动前请先设置参数」窗口。该窗口用于指定本次运行的策略与参数,确认后立即生成一次工作流实例。
| 字段 | 说明 |
|---|---|
| 工作流名称 | 只读,显示当前运行的工作流 |
| 失败策略 | 「继续」:某节点失败后其余节点继续执行;「结束」:某节点失败即终止整条工作流 |
| 流程优先级 | 本次运行的优先级,默认 MEDIUM |
| Worker分组 / 租户 | 本次运行使用的 Worker 组与租户,默认取项目配置 |
| 环境名称 | 本次运行的环境,按项目实际配置选择 |
| 补数 | 勾选「是否是补数」后按指定日期范围执行,详见 3.3.2.12 |
| 启动参数 | 点击「添加」逐行填写本次运行使用的参数,详见 3.3.2.11 |
| 是否空跑 | 开启后不真正执行脚本,详见 3.3.2.13 |
左右滑动查看完整表格
点击「确定」后,当前页面不会停留显示结果,需要到「工作流实例」查看本次运行。实例列表中新增一条记录,运行类型为「启动工作流」,状态显示成功或失败,并记录运行时长、执行用户与主机。
3.3.2.7 工作流定时
点击操作列的「定时」图标,弹出定时配置窗口。窗口标题为「定时前请先设置参数」,表示定时运行同样需要先确定运行参数。
| 字段 | 说明 |
|---|---|
| 起止时间 | 必填。调度的生效区间,默认从当天到一百年后 |
| 定时 | Cron 表达式,例如 0 0 * * * ? * 表示每小时整点触发 |
| 执行时间 | 点击后按当前 Cron 计算并展示接下来 5 次执行时间 |
| 时区 | 默认 Asia/Shanghai |
| 定时错过策略 | 调度延迟时的补偿方式,默认「补触发所有错过的执行,之后按正常节奏继续调度」 |
| 失败策略 / 通知策略 | 运行失败后的处理方式与通知范围 |
| 流程优先级 / Worker分组 / 租户 / 环境名称 | 本次调度的执行资源与账号 |
左右滑动查看完整表格
填写 Cron 后,点击「执行时间」是最快的校验方式,系统会直接列出后续 5 次触发时间。如果时间不符合预期,说明表达式写错了,需要先修正再提交。
提交后,工作流列表的「定时状态」由「-」变为「下线」,表示调度计划已创建但尚未启用。进入「工作流程 → 工作流定时」可以查看该计划的完整信息,包括 Crontab、起止时间、状态与 Worker 分组。
定时状态为「下线」时不会自动触发 定时计划创建后默认是「下线」状态,需要在定时列表中把它上线,调度才会按 Cron 触发。「工作流上线」与「定时上线」是两件事,两者都满足才会按时运行。 |
3.3.2.8 工作流实例
「工作流程 → 工作流实例」列出每次运行产生的实例。顶部可按工作流名称、执行用户、主机筛选,点「展开」显示更多条件。
| 列 / 操作 | 含义 |
|---|---|
| 工作流实例名称 | 由「工作流名称-时间戳」组成,是本次运行的唯一标识 |
| 状态 | 本次运行的整体结果,成功时显示绿色对勾 |
| 运行类型 | 「启动工作流」为手动运行;按调度触发时显示对应类型;补数运行为「补数」 |
| 调度时间 | 本次运行对应的调度日期;手动运行显示「-」 |
| 开始时间 / 结束时间 / 运行时长 | 本次运行的时间信息 |
| 运行次数 / 容错标识 / 空跑标识 | 重跑次数、是否容错运行、是否为空跑 |
| 执行用户 / 主机 | 发起人与实际执行节点 |
| 操作:编辑 | 打开「工作流实例详情」,以画布形式查看各节点状态 |
| 操作:重跑 | 按原参数整体重跑本次实例 |
| 操作:重跑失败任务 | 只重跑上次失败的节点 |
| 操作:停止 / 暂停 | 终止或暂停正在运行的实例 |
左右滑动查看完整表格
点击「编辑」打开实例详情,画布上每个节点带状态标记,可以直观看出哪个节点成功、哪个失败。该页面为只读视图,右上角提供「保存」「关闭」,节点上不提供日志入口。
实例详情只看整体,日志要到任务实例 工作流实例详情展示的是节点状态分布;要看清某个节点执行了什么、报了什么错,需要到「任务实例」中查看该节点的运行日志(见 3.3.2.9)。 |
3.3.2.9 任务实例与运行日志
工作流实例是「整条流程」的结果,任务实例是「单个节点」的结果。定位失败原因要看任务实例。进入「离线开发 → 任务 → 任务实例」,可按任务编码、任务名称、工作流实例筛选。
| 列 / 操作 | 含义 |
|---|---|
| 任务名称 | 节点名称,与工作流画布上的节点一致 |
| 工作流实例 | 所属的工作流实例名称,是两张表的关联字段 |
| 执行用户 / 节点类型 | 执行账号与节点类型(如 SHELL) |
| 状态 | 节点执行结果 |
| 提交时间 / 开始时间 / 结束时间 / 运行时间 | 节点的执行时间信息 |
| 重试次数 / 空跑标识 / 主机 | 自动重试次数、是否空跑、执行节点 |
| 操作:强制成功 | 把失败节点标记为成功,用于人工放行 |
| 操作:查看日志 | 打开日志窗口,查看节点实际输出 |
| 操作:下载日志 | 把日志文件下载到本地 |
左右滑动查看完整表格
点击「查看日志」弹出日志窗口,窗口顶部有「刷新」「全屏」,底部为「确定」。日志开头固定包含日志路径与主机信息,随后是执行过程。
日志内容按固定顺序输出,可用来快速定位问题:
| 日志片段 | 含义 |
|---|---|
| [LOG-PATH] / [HOST] | 日志文件在服务器上的路径、执行该节点的主机 |
| Initialize Task Context / TenantCode | 初始化任务上下文,校验租户账号是否可用 |
| working directory ... create successfully | 任务工作目录创建成功 |
| Load Task Instance Plugin / physicalTask: SHELL | 加载节点类型插件 |
| Initialize shell task params { ... } | 节点参数与脚本原文,含 localParams、rawScript,可与页面配置对照 |
| Final Script Content | 平台替换参数后最终执行的完整脚本 |
| Execute Task Instance 及后续输出 | 实际执行过程与脚本输出 |
左右滑动查看完整表格
日志时间与页面时间相差 8 小时 日志中的时间戳为 UTC,页面显示为本地时间(UTC+8)。例如页面开始时间为 16:01,日志首行显示 08:01,两者是同一次执行,不是两次运行。 |
定位失败原因时,建议按以下顺序查看日志:
- 先看日志末尾的退出码与最后几行输出,确认是脚本报错还是资源、权限问题。
- 再看「Initialize shell task params」,核对脚本原文与页面配置是否一致。
- 再看「Final Script Content」,确认参数是否按预期替换。
- 若脚本依赖外部服务,检查连接串、账号与网络连通性。
- 修复后,在任务实例或工作流实例上执行重跑。
3.3.2.10 项目偏好
「离线开发 → 项目 → 项目偏好」用于设置项目级的默认值,分为项目运行配置与项目偏好管理两块。这里设置的内容会成为该项目下新建工作流与任务的默认选项。
| 区域 | 内容 | 作用 |
|---|---|---|
| 项目运行配置 | 运行账号、队列、默认工作组 | 执行任务前必须配置运行账号与队列,并由运维确认 Worker 主机上存在该账号 |
| 项目偏好管理 | 任务优先级、租户、Worker分组、环境名称、失败重试次数与间隔、通知策略、告警组、CPU配额、最大内存 | 新建节点时的默认值,分「启用 / 未启用」两栏 |
左右滑动查看完整表格
实际执行时的工作组按「节点显式选择 → 启动或定时时选择 → 项目默认组」的顺序确定。因此节点上留空并不代表使用项目默认值以外的配置,而是逐级向上取默认。