Skip to content

Flow 默认出口节点——解决空 Flow 可提交问题 #39

Description

@dododcdc

背景

当前新建 Flow 后,saveOfflineFlowDocument 会将样板 flow.yaml 写入磁盘,导致 git status 检测到未提交变更,flowCommitDirty 变为 true,提交按钮启用并显示红点——但 Flow 还是空的,没有任何用户内容,这种状态下允许提交不合理。

方案

新建 Flow 时画布上自动生成一个出口节点(exit node),作为 DAG 的末端汇聚点。

出口节点规则

  • 不可编辑、不可删除、不可改名、不可双击
  • 无脚本内容
  • 只能有入向连线(别人指向它),不能有出向连线
  • 用户所有节点最终必须连到出口节点,提交时才视为完整

YAML 表示

tasks:
  - id: flow_dag
    type: io.kestra.plugin.core.flow.Dag
    tasks:
      - task:
          id: __exit__
        dependsOn:
          - last_real_node

出口节点只有 iddependsOn,无 type、无脚本文件。后端解析时识别 id__exit__ 跳过常规的 type/scriptPath 校验。

优势

  • 新建 Flow 后画布上就有出口节点,提交它完全合理
  • DAG 有明确的终点约束,避免"断头路"
  • 不需要特殊处理空 Flow 的提交按钮状态

待讨论

  • 出口节点放在 YAML 里还是前端/框架层面注入
  • 后端解析和验证逻辑的具体改动范围
  • 画布渲染时的视觉区分方式

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions