IQS-FLOW · DSL 语法讲义

泳道流程图 DSL
从零到全要素

基础语法 · 扩展语法 · 技巧语法 · 三级示例 · 场景映射

信息中心 · 数字化培训系列
基于 smart-qc-studio 工程(spec v0.7 · 154 项断言护栏)

本讲学习路径

导航

1基础语法

最小可运行子集:骨架 / Dict / Lane / W 行 / 连线 / 属性

2扩展语法

子流程 / 并行 / 回边 / vh 链 / DOC 泳道 / 轴标题

3技巧语法

声明序 / Location 三层语义 / 18 条校验 / 高频坑

4示例与场景

简单 → 一般 → 复杂;六大使用场景 + 决策树

操作:↑ / ↓ 上下翻页 · ← / → 前后翻页 · Esc 总览 · 右下角按钮导航
📌 讲解 · 学习路径设计
  • 五个阶段是递进关系:基础语法 让你能画出图,扩展语法 让图能表达复杂业务,技巧语法 让图不踩坑,示例 提供可直接改写的模板,场景 告诉你何时用哪种。
  • 建议节奏:每讲完一个 Section,立刻打开 04_示例 对照改一张自己的流程,动手比听讲有效十倍。
  • 本讲的验收标准:能独立写出"一般示例"级别的二维矩阵审批图(含泳道、判断、回边、六属性),且 0 error

什么是 IQS-Flow DSL

总览

一套面向企业非技术员工、同时具备强机器可读性的流程图语言,语义定界为 BPMN 2.0 子集,渲染为自研 SVG(零新增第三方依赖)。

数据与结构分离

可变内容集中在 Dict 字典,结构层只写索引引用 D[0]/P[1]——一处定义、多处引用、修改全局生效。

索引即引用

索引稳定可校验;渲染时全部展开为字典值(图上显示"信息中心"而非 D[0])。

默认顺序流

普通节点按声明顺序自动连线,省约 80% 显式书写;判断/并行出口必须显式声明。

三层机器输出

DSL → 解析(FlowParser)→ canonical JSON(校验/图谱)→ BPMN 2.0 XML(交换)→ 自研 SVG(渲染)

📌 讲解 · 定位与三原则
  • 定位:它是 IQS-DSL 第 14 个 core kind(flow),语义是 BPMN 2.0 子集,渲染用自研 SVG——零新增第三方依赖,可审计、可机器回读。
  • 原则一 数据与结构分离:部门/阶段/岗位/标签全放进 Dict,图上只写索引——改一处字典,全图文字跟着变,这是体系文件"一处定义、多处引用"的刚需。
  • 原则二 索引即引用D[0] 是稳定引用、越界可校验;渲染时展开为"信息中心"——机器读索引、人读文字,两全。
  • 原则三 默认顺序流:普通节点按声明序自动连,省约 80% 显式连线书写;代价是判断/并行必须显式分支(语法强制)。

语法速查总览(先看这张)

速查

文档骨架

Title: 流程名称 Layout: H Dict: D[部门...] / P[阶段...] Lane from D[...] Layout H Lane from P[...] Layout V AxisX/AxisY/Axis: 标题 Align C Attr active [Role,SOP,Lv,Time] W: 节点行... 分支行 / End

一句话记忆

语法块作用
Dict:数据字典(先定义后使用)
Lane from泳道(H 行 / V 列)
W:节点(Type/Location/属性)
Type[S/E/?/+/SUB/N/DATA]8 类节点
/ End连线与分支闭合
SOP() Role() Lv()六属性
📌 讲解 · 语法地图
  • 这张表是书写顺序Title/Layout → Dict → Lane → Axis → Attr → W 节点 → 分支/连线。按这个顺序从上往下写,天然符合解析器的依赖要求。
  • 记忆锚点:Dict 是"原料"、Lane 是"画布"、W 是"内容"、连线 是"逻辑"。
  • 它也是排错地图:报错时按"字典→泳道→节点→连线"的顺序逐层排查,能覆盖九成问题。
01

基础语法

可运行的最小子集 —— 先写出第一张能跑的流程图

文档骨架(五类顶层指令)

基础 · 1

T Title / Layout

  • Title: 整图标题(可选)
  • Layout: H|V 主推进方向(可选)
  • 缺省 = "流程图" / H

D 依赖顺序(强制)

  • Dict 必须先于 Lane/W/Location 引用
  • 未定义字典 → error
  • 行注释://
Title: 请假审批 Layout: H Dict: D[部门,人事] ... Lane from D[0,1] Layout H W: w1: 提交申请 Type[S] Location(D[0],P[0])
📌 讲解 · 骨架与依赖
  • Title / Layout 都可省:缺省分别是"流程图"和横向 HLayout 只在无泳道时决定排布方向,有泳道时被 Lane 覆盖。
  • 依赖顺序是硬规则:解析器先扫字典再扫引用,Dict 必须出现在 Lane from / W / Location 之前,否则报"未定义字典"——这是新手第一道坎。
  • 注释用 //;结构分隔符用半角逗号 ,;标签内的标点请用中文全角,避免与结构符冲突。

Dict 字典 —— 数据源

基础 · 2
Dict: D[信息中心,综合计划科,办公室] // 部门(固定名 D) Dict: P[申请阶段,审批阶段,归档阶段] // 阶段(固定名 P) Dict: R[申请员,部门经理,财务岗] // 岗位(固定名 R) Dict: worker[提交采购申请,填写申请单] // 自定义字典

固定字典名

D=部门 · P=阶段 · R=岗位;语义固定,不可作自定义名(error)

索引从 0 开始

D[0] = 第一个值;名[i,j,k] 列表;名[*] 全部

两种标签模式

字典引用 worker[0] 或字面量 提交申请,并存可用

📌 讲解 · 字典规则
  • 三个固定字典名D=部门、P=阶段、R=岗位——语义固定,自定义字典不能撞名(校验 error)。
  • 索引从 0 开始D[0] 是第一个值;三种引用 名[i](单)、名[i,j,k](列表,Lane 批量用)、名[*](全部)。
  • 标签不强制走字典worker[0] 与字面量 提交申请 并存——规范场景用字典(可审计),草稿用字面量(快)。
  • 值内不能含半角逗号(用全角 ),否则会被当成数组分隔。

Lane 泳道 —— 三种形态

基础 · 3

二维交叉矩阵

一条 Layout H + 一条 Layout V → 行×列交叉成格(最常用)

单维泳道

仅一条 Lane from → 行或列单向泳道

无泳道

Lane from → 纯流程图,按 Layout 方向排布

Lane from D[0,1,2,5] Layout H // 4 条横向泳道(行),跳过索引 3,4 Lane from P[1,3,4] Layout V // 3 条纵向泳道(列)

每个格子由各轴索引组合唯一确定:(D[0],P[1]) = 部门 0 行 × 阶段 1 列;一个动作节点只归属一个格子,跨泳道流转用连线表达。

📌 讲解 · 泳道三形态
  • 二维矩阵(一条 Layout H + 一条 Layout V):行=部门 × 列=阶段,交叉成格——体系文件审批图的主形态,最常用
  • 单维(仅一条 Lane):只按部门或只按阶段排,适合简单流程。
  • 无泳道(不写 Lane):纯流程图,按 Layout 方向单轨排,适合快速草稿。
  • 行/列顺序 = 索引列表顺序(与字典声明顺序无关),支持跳号如 D[0,2,5];格子由各轴索引组合唯一确定,一个节点只属一格

W 节点行 + 8 类节点

基础 · 4
W: [id:] <标签> [Type[X]] [Location(...)] [属性...] // 缺省 = 任务;缺省 id = 自动编号 w1,w2,...
类型写法视觉默认顺序流
开始 / 结束Type[S] / Type[E]○ 细圆 / ● 粗圆
任务缺省 或 Type[T]圆角矩形
判断Type[?]◇ 菱形❌ 必须分支
并行Type[+]◇+❌ 必须分支
子流程Type[SUB]圆角矩形+(内嵌子图)
文本标注 / 数据对象Type[N] / Type[DATA]折角纸 / 纸带(不占格)
📌 讲解 · W 行与类型
  • W 行四段式:W: + [可选 id:] + 标签 + [Type] + [Location] + [属性];省略 id 自动编号 w1,w2,...(稳定可审计)。
  • 类型缺省 = 任务;Type[S] 开始 / Type[E] 结束必须各 ≥1(error);Type[?] 判断与 Type[+] 并行必须显式分支,不参与默认流。
  • Type[N] 文本标注与 Type[DATA] 数据对象不占业务格,依附主节点显示(详见扩展章)。
  • ⚠️ 数据对象写作 Type[DATA] 而非 Type[D](避免与部门字典 D 混淆)。

Location 坐标

基础 · 5
Location(D[0],P[1]) // 二维:行×列交叉格 Location(D[0]) // 单维:仅行(或列)

坐标对齐

引用与 Lane from 对齐的字典索引

维度自动清洗

单维却写二维坐标 → warn,自动丢弃未定义维度

缺省 = 自动落格

按声明顺序填充,canonical 输出实际坐标可审计

⚠️ 数据对象用 Type[DATA],不是 Type[D](避免与部门字典名 D 混淆)。

📌 讲解 · 落格坐标
  • Location(D[0],P[1]) 二维 / Location(D[0]) 单维;索引必须与 Lane from 使用的字典对齐。
  • 维度自动清洗:单维泳道写了二维坐标 → 解析器自动丢弃未定义维度(warn 不报错),允许按二维习惯书写。
  • 缺省 Location = 自动落格:按声明顺序从首个格子填充,canonical 会记录实际坐标(可审计)——写 DSL 时可先不写坐标跑通,再补坐标精修。

连线:默认流 / 显式边 / 分支块

基础 · 6

分支块(判断/并行出口)

W: q2: 检验结果? Type[?] Location(D[0],P[1]) 合格 (pass) → #w3 不合格 [缺陷≤3] → #q3 否则 → #w3 End

规则速记

  • 普通节点默认顺序流自动连
  • 判断/并行 必须分支块 + End
  • 否则 → 默认出口(带斜杠)
  • 多目标 → #w2, #w4 自动扇出
  • 显式边 w5 → #w6 [标签]
📌 讲解 · 三种连线方式
  • 默认顺序流:普通节点(S/T/E/SUB/N/DATA)按声明序自动连;判断/并行不参与,且其出口目标节点的默认入边被抑制。
  • 分支块(判断/并行专用):每行 标签 → #目标,可带 (出口名)(稳定 id)、[条件](BPMN condition)、多目标 → #w2, #w4(扇出);End 必须闭合。
  • 否则 →默认出口(每节点至多一条),渲染带斜杠;显式边 w5 → #w6 [标签] 用于回边/补边。

六属性规范化集

基础 · 7
含义企业管理落点示例
SOP依据标准绑定 GF/CX/GW 标准编号SOP(XX-CX-04)
Role责任人/岗位节点右下角小字 + 岗位图例栏Role(R[1])
Lv管控程度/风险重大/重要/一般 或 1/2/3Lv(重要)
Time时效/SLA完成时限Time(24h)
KPI成效度量质量目标/指标KPI(≤1‰)
M管理成熟度BPA/BPM/BPI 或 1-4M(BPM)

使用强度阶梯:SOP / Role / Lv 高优先(体系文件每步标)→ Time / KPI 中优先(程序文件)→ M 低优先(改进场景)。

📌 讲解 · 六属性
  • 六属性覆盖体系文件的核心管理维度:SOP(依据)、Role(责任人)、Lv(重要度)、Time(时限)、KPI(指标)、M(成熟度)。
  • 值可以是字面量或字典引用Role(部门经理)Role(R[1]) 等价,规范场景用引用、可审计。
  • 使用强度阶梯:体系文件每步标 SOP/Role/Lv;程序文件加 Time/KPI;改进场景用 M。键大小写不敏感,canonical 统一小驼峰(sop/role/lv/time/kpi/m)。

最小可运行示例:请假审批

基础 · 8
Title: 请假审批 Dict: D[部门,人事] Dict: P[申请,审批,归档] Dict: R[员工,经理] Lane from D[0,1] Layout H Lane from P[0,1,2] Layout V W: w1: 提交申请 Type[S] Location(D[0],P[0]) Role(R[0]) W: w2: 部门审批 Location(D[1],P[1]) Role(R[1]) Time(24h) W: q1: 是否批准? Type[?] Location(D[1],P[1]) 批准 → #w3 驳回 → #w1 End W: w3: 归档 Type[E] Location(D[0],P[2])

这张图里有什么

  • 3 个泳道格(部门 × 申请/审批/归档)
  • 2 个普通节点 + 1 个判断
  • 默认顺序流:w1→w2(普通节点自动连)
  • 分支块:批准 → 结束 / 驳回 → 回 w1
  • 回边(经网关,校验通过)
  • 属性:Role + Time
📌 讲解 · 最小闭环逐元素
  • 数据层:三个固定字典(D 部门 / P 阶段 / R 岗位)——这是体系文件"谁×阶段×岗位"的骨架。
  • 结构层Lane from D[...] H + Lane from P[...] V 形成 2×3 交叉格;w1 在 (D0,P0)、w2 在 (D1,P1)——位置即业务语义。
  • 逻辑层:w1→w2 是默认流;q1 分支"批准→归档 / 驳回→回 w1"构成经网关的回边(满足校验 #13)。
  • 练习:把"请假"换成你自己的场景(如"领用申请""用印审批"),改字典与坐标即可。
02

扩展语法

子流程 · 并行 · 回边 · vh 链 · DOC 泳道 · 轴标题 · 属性边栏

子流程 Type[SUB] —— 程序文件引用内嵌闭环

扩展 · 1
W: q2: 不合格评审 Type[SUB] Location(D[0]) W: s1: 复检 Type[S] W: s2: 可接收? Type[?] 可接收 → #s3 不可接收 → #s4 End W: s3: 让步接收 W: s4: 记录归档 Type[E] End

规则

  • 内嵌一层(体系文件一层足够);End 闭合,深度 ≤ 1
  • 内部节点 id 全局唯一;通常省略 Location 自动排布
  • canonical 中带 parent 字段;框内渲染迷你小图
  • 子流程尺寸 = 交叉格整数倍,与泳道无缝对齐

📌 "按《XX程序》执行" 由子流程在 DSL 内闭环表达。

📌 讲解 · 子流程
  • 场景:流程步骤写"按《XX程序》执行"时,用 Type[SUB] 把被引用的程序内嵌为子图,DSL 内闭环、不跳文件。
  • 规则:内嵌一层(深度 ≤1);End 与分支块一样必须闭合;内部节点 id 全局唯一(自动编号顺延全局序);canonical 中内部节点带 parent 字段归属子流程。
  • 布局:子流程框内渲染迷你小图 + 迷你连线;框尺寸 = 交叉格整数倍k×140 / mm×48),与相邻泳道无缝对齐。

并行 Type[+] 与扇出

扩展 · 2
W: p1: 并行分发 Type[+] Location(D[0],P[1]) 分支A → #w4 分支B → #w5 End // 多目标扇出(一行拆多条边): 不合格 → #q2, #w8

要点

  • 并行节点出口必须显式(分支块 + End)
  • 汇聚是隐式的:多条边指向同一节点即合并
  • 视觉:菱形内画 (区别于判断 ◇)
📌 讲解 · 并行
  • 语义Type[+] 是并行网关——多个分支同时进行(区别于判断的互斥分支);视觉菱形内画
  • 扇出:出口必须显式(分支块 + End);一行多目标 不合格 → #q2, #w8 自动拆为多条并行边。
  • 汇聚是隐式的:多条边指向同一节点即 BPMN 隐式合并,无需额外语法——写"汇合点"时只要让分支都指向同一个目标。

回边 —— 返工 / 循环 / 驳回

扩展 · 3
W: q2: 审批是否通过? Type[?] Location(D[1],P[1]) 通过 → #w6 驳回 → #w2 // 回边:驳回回到填写申请单 End

规则

  • 回边 = 显式边指回上游节点
  • 环路必须含至少一个判断节点(warn #13,Tarjan SCC 检测)
  • 回边渲染为逆向流:引擎后置规划、走外侧走廊
  • 不抑制目标默认入边(形成汇聚)
📌 讲解 · 回边与环路
  • 回边 = 显式边指回上游节点(如"驳回 → 回到填写申请单"),表达返工/循环/驳回等逆向流转。
  • 环路必须含至少一个判断节点(校验 #13,warn)——解析器用 Tarjan SCC 检测,纯任务环会被警告、含网关的环不误报。
  • 渲染机制:回边作为逆向流后置规划,走外侧走廊、不抢占主干直通端口——这就是为什么回边在图上绕在外面。
  • 显式回边不抑制目标默认入边,目标节点形成"默认入边 + 回边"的汇聚。

单维泳道 / 无泳道 —— 矩阵之外的形态

扩展 · 4

单维纵泳道(一条 Lane)

Lane from D[0,1,2] Layout V W: w1: 来料检验 Location(D[0]) W: q1: 检验结果? Type[?] Location(D[0]) 合格 (pass) → #w2 不合格 → #q2 End

写二维坐标会被自动清洗(warn);单维虚拟轴长 = 各泳道最大链长。

无泳道(纯流程图)

W: w1: 开始 Type[S] W: w2: 处理 W: q1: 判断? Type[?] 是 → #w3 否 → #w2 End W: w3: 结束 Type[E]

Lane from → ROOT 占位,按 Layout 方向单轨排布;适合快速草稿与脚本生成。

📌 讲解 · 轻量形态
  • 单维纵泳道:只有一列(如部门),节点沿行排;坐标写 Location(D[0]),若误写二维会被自动清洗(warn)。
  • 单维虚拟轴长度 = 各泳道最大链长(引擎自动扩展),不是全图节点数——不会出现大量空白格。
  • 无泳道:不写 Lane,ROOT 占位 1×1 网格,节点按 Layout 方向单轨排;适合快速草稿、脚本/AI 生成——节点可完全不写 Location。

格内 vh 链排 + A6 对角扩展格

扩展 · 5
W: a: 节点A Location(D[0],P[0]) W: b: 节点B Location(D[0],P[0]) V // 下方(纵向) W: c: 节点C Location(D[0],P[0]) H // 右侧(横向) W: d: 节点D Location(D[0],P[0]) D // 对角右下(A6)
标识相对上一节点效果
V(默认)下方 gy+1纵向堆叠
H右侧 gx+1横向并排
D对角右下 gx+1,gy+1对角扩展格(A6 算子)

首节点恒在格内原点 (0,0),其 vh 作为整串方向种子;缺省 vh 由引擎按格内拓扑序自动推导。

📌 讲解 · 格内方向控制
  • 同一交叉格放多节点时,行尾 vh 标识控制相对方向:V 下方(默认)、H 右侧、D 对角右下(A6 扩展格算子,gx+1 且 gy+1)。
  • 首节点恒在格内原点 (0,0),它的 vh 作为"整串方向种子"向后续缺省节点传播。
  • 缺省 vh(不写)→ 引擎按格内拓扑序自动推导方向(流向相邻尽量顺排)——这就是"写者没标方向也不会全纵向"的机制。
  • 同格多节点会推动整行/整列扩展(行高 = 最大 ny×(节点高+2×half))——格子越大、连线越从容。

N / DATA 修饰类 + DOC 虚拟泳道

扩展 · 6
W: n1: 客户技术规范CTS Type[N] Location(D[1],P[1]) Attach(#w3) Lv(重点) W: d1: 检验报告 Type[DATA] Attach(#w4)

不占业务格;Attach(#id) 依附目标节点,与依附节点行对齐

机制

  • 出现顶层 N/DATA → 网格最右侧追加 DOC 列(文档信息泳道)
  • N/DATA 落格 (依附行, DOC列)
  • N/DATA → 依附节点用虚线连接(依赖/文档语义)
  • 同依附多个 → 纵向避让排开(推动行高)
📌 讲解 · 修饰类与文档泳道
  • Type[N](文本标注)与 Type[DATA](数据对象)不占业务格,表达"依据某标准 / 产生某记录"等依附信息。
  • Attach(#id) 依附目标节点;出现顶层 N/DATA 时引擎在最右追加 DOC 列(文档信息泳道),N/DATA 落格 (依附行, DOC列)——与依附节点行对齐
  • N/DATA → 依附节点用虚线连接(依赖/文档语义,非普通流程实线);同依附多个纵向避让排开。
  • 校验:Attach 目标必须存在、且不能是另一修饰类(error)。

轴标题 · 属性边栏 · 默认出口

扩展 · 7

Axis 轴标题

AxisX: 横轴标题(上方)
AxisY: 纵轴标题(保持水平
Axis: 整图标题(AxisX 通栏 / AxisY 竖带)
Align L/R/C 对齐

Attr active 边栏

文档级指令:从全部节点聚合六属性面板——Role/SOP 计数排序、Lv 评分色卡、Time 时长公式、KPI 清单、M 档位。例:Attr active [Role,SOP,Lv,Time]

否则 → 默认出口

BPMN default flow,渲染带斜杠实线箭头;每节点至多一条;引擎将其作为业务主干候选参与关键路径排序。

📌 讲解 · 三类全局指令
  • AxisAxisX 横轴标题(上方)、AxisY 纵轴标题(保持水平,不旋转——真正旋转 -90° 的是各 Y 泳道行标签)、Axis 整图标题(AxisX 顶部通栏 / AxisY 左侧竖向带);Align L/R/C 对齐。
  • Attr active:文档级、至多一条;激活后聚合六属性面板——Role/SOP 计数排序(次数定字号)、Lv 区间评分 + RAG 色卡、Time 关键路径最小时长 + 公式、KPI 清单、M 档位色卡。
  • 否则 →:BPMN default flow,带斜杠;引擎将其作为业务主干候选(MainlineOrder 的 default 边加权),参与关键路径排序。
03

技巧语法

理解布局机制,规避常见错误 —— 来自工程代码行为与 154 项断言实测

声明序 = 布局第一序 · Location 三层语义

技巧 · 1

声明序决定

  • 默认顺序流 w1→w2→w3
  • 自动编号 w1,w2,...
  • 无 Location 时的自动落格

跨格位置 = 业务语义

显式 Location 决定节点在哪个泳道格(部门×阶段)。引擎不会为连线好看而重排——跨格长边是语义必然。

自由度内优化

引擎只在两处优化:无 Location 节点的落格顺序、同格多节点顺序(格内拓扑序 + 主干序)。

技巧

主干流程节点按流程先后顺序书写,即使分属不同泳道格——默认流直接成立,自动落格成顺滑链。判断/并行节点中断默认流,务必显式分支。

📌 讲解 · 布局机制
  • 声明序决定三件事:默认顺序流(自动连)、自动编号(w1,w2...)、无 Location 时的自动落格。
  • 跨格位置 = 业务语义:显式 Location 决定节点在哪个泳道格(部门×阶段)。引擎不会为连线好看而重排跨格位置——跨格长边(阶段跳转/跨角色推进)是语义必然,不是 bug。
  • 引擎只在自由度内优化:无 Location 节点的落格顺序、同格多节点顺序(格内拓扑序 + 主干序)。
  • 技巧:主干节点按流程先后书写,即使分属不同格——默认流直接成立,自动落格成顺滑链。

vh 参照系 —— 最容易误解的一点

技巧 · 2
W: a: 节点A Location(D[0],P[0]) W: b: 节点B Location(D[0],P[0]) V // V = 相对"上一节点 a"在下方
  • vh相对所在格顺序的上一节点的方位,不是绝对位置
  • 首节点无参照 → 恒在原点 (0,0),其 vh 作方向种子
  • 缺省 vh → 引擎按格内拓扑序自动推导(流向相邻顺排),不再一刀切纵向
  • 同格多节点会推动整行/整列扩展——这就是"扩展格"
  • 技巧:同格 2-3 个连续节点尽量不写 vh 或写 V,交给引擎排
📌 讲解 · vh 的参照物
  • vh 表达的是"相对所在格顺序的上一节点"的方位,不是绝对位置——写 V 意为"排在上一节点下方"。
  • 布局引擎的 computeCellOrder 会对格内多节点做拓扑排序(流向相邻的排一起);重排只改变"相对谁",不改变 vh 值——作者写 H 就永远横向意图。
  • 首节点无参照 → 恒在原点 (0,0),其 vh 作方向种子;缺省 vh 由引擎按流向推导,不会一刀切全纵向。
  • 实战建议:同格 2-3 个连续流转节点,尽量不写 vh 或写 V,交给引擎排;要明确横向/对角错位时才写 H/D

18 条内置校验 + 高频翻车点

技巧 · 3
级别要点
error字典名唯一 / 必须先定义
索引越界 / id 重复
网关必须分支 / End 配对 / 深度 ≤ 1
开始≥1 结束≥1 / 无孤立节点
保留字 D/P/R 冲突 / Attr 键合法
warn分支标签唯一 / 环含判断 / 维度清洗

高频翻车点(按频率)

  • ① 缺开始/结束(先写 Type[S]/Type[E]
  • ② 字典未先定义(Dict 在使用前)
  • ③ 网关无分支(每个 ?/+ 都要分支块 + End)
  • ④ 索引越界(从 0 数字典元素)
  • ⑤ End 缺失/多余(块级配对)

🛠 排错口诀:先补 S/E → 再查字典顺序 → 再查网关分支 → 最后查 End。

📌 讲解 · 校验与排错
  • 校验共 18 条:error 15 条 + warn 3 条。error 必改(缺开始/结束、未定义字典、索引越界、网关无分支、End 不配对、孤立节点、保留字冲突…);warn 是提示(分支标签重复、环无判断、维度清洗)。
  • 高频五坑(按频率):① 缺 S/E ② 字典未先定义 ③ 网关无分支 ④ 索引越界 ⑤ End 缺失/多余。
  • 排查口诀:先补 S/E → 再查字典顺序 → 再查网关分支 → 最后查 End——按此顺序逐层过,覆盖九成报错。
  • 编辑器左下角实时显示 errors/warnings;命令行 npm run test:flow 有 154 项断言护栏。
04

三级示例

简单 → 一般 → 复杂,覆盖 DSL 全部语法点

简单示例:无泳道判断流程(5 节点)

示例 · 1
Dict: worker[开始,处理,校验通过?,修复,结束] W: w1: worker[0] Type[S] W: w2: worker[1] W: q1: worker[2] Type[?] 是 → #w3 否 → #w2 End W: w3: worker[4] Type[E]

语法点

  • 无泳道(ROOT 占位)
  • 自动编号 + 字典引用标签
  • 默认顺序流 w1→w2
  • 分支块:是→结束 / 否→回处理
  • 回边经网关(校验 #13 通过)
📌 讲解 · 最小闭环
  • 语法点:无泳道(ROOT 占位)、自动编号(w1/w2/q1/w3)、字典引用标签、默认顺序流(w1→w2)、分支块(q1 是→结束 / 否→回处理)、经网关的回边
  • 它是"处理→校验→重试"类流程的最小范式:处理节点 + 判断节点 + 回边三段式,可套用到报修、审批、检验等场景。
  • 练习:把 worker 字典换成你的动作词,5 分钟跑通第一张自建图。

一般示例:二维矩阵审批流(8 节点)

示例 · 2
Dict: D[信息中心,综合计划科,办公室] P[申请,审批,执行,归档] Dict: R[申请员,部门经理,财务岗] worker[提交采购申请,填写申请单,金额超过5000?,部门经理审批,直接执行,财务付款,归档] Lane from D[0,1,2] Layout H Lane from P[0,1,2,3] Layout V Axis: 采购申请审批流程 AxisX Attr active [Role,SOP,Lv,Time] W: w1: worker[0] Type[S] Location(D[0],P[0]) W: w2: worker[1] Location(D[0],P[0]) SOP(XX-CX-04) Role(R[0]) Lv(重要) W: q1: worker[2] Type[?] Location(D[0],P[1]) 是 → #w4 否 → #w5 End W: q2: 审批是否通过? Type[?] Location(D[1],P[1]) 通过 → #w6 驳回 → #w2 End W: w7: worker[6] Type[E] Location(D[1],P[3]) w5 → #w6 w6 → #w7

覆盖:二维泳道、轴标题、六属性、双网关、回边、显式边、属性边栏 —— 覆盖 90% 日常场景。

📌 讲解 · 日常主形态
  • 覆盖点:二维泳道(D×P 交叉格)、三级轴标题(AxisX/Y/Axis + Align)、六属性(SOP/Role/Lv/Time/KPI)、双网关(q1 金额判断 / q2 审批判断)、回边(驳回→w2)、显式边(w5→w6、w6→w7 补齐汇聚)、属性边栏(Attr active 四项)。
  • 布局预期:主干 w1→w2→q1→w4→q2→w6→w7 沿泳道格推进;驳回→w2 为逆向流走外侧走廊;w5→w6 跨格推进。
  • 学习价值:这张图覆盖 90% 日常场景——学会它,就能写绝大多数体系文件程序文件流程图。

复杂示例:APQP/PPAP 全流程(14 节点)

示例 · 3
Dict: D[市场部,研发中心,质量保证部,生产制造部] P[立项评估,设计开发,过程试产,量产放行,项目结项] Dict: R[产品经理,系统工程师,质量总监,制造部长] Lane from D[0,1,2,3] Layout H Lane from P[0,1,2,3,4] Layout V Axis: 汽车零部件新产品开发与量产质量控制全流程 AxisX Attr active [Role,SOP,Lv,Time,KPI] W: w1: 客户需求收集 Type[S] Location(D[0],P[0]) Role(R[0]) Lv(重点) Time(5D) W: q1: 立项评审通过? Type[?] Location(D[0],P[0]) 通过 → #w3 驳回 → #w1 End W: q2: CPK与全尺寸检验达标? Type[?] Location(D[2],P[2]) KPI(CPK≥1.67) 达标 → #w6 不达标 → #w3 End W: w8: 量产移交与项目总结 Type[E] Location(D[0],P[4]) Role(R[0]) W: n1: 客户技术规范CTS Type[N] Location(D[1],P[1]) Attach(#w3) Lv(重点)

全要素:4×5 双泳道、三网关回边、N 标注 + Attach(DOC 列)、五项属性边栏 —— 工程真实默认图(示例已实证可解析)。

📌 讲解 · 全要素大图
  • 工程真实默认图(constants.tsx),14 节点 = 11 主节点 + 3 文本标注,覆盖 DSL 全部核心语法点。
  • 语法点全景:4×5 双泳道、8 类节点(S/E/任务/? 三网关)、显式边补齐主干、回边×3(驳回/不达标/整改,均经网关)、N 标注 + Attach(#w3/#w4/#w6)、Role 全覆盖(岗位图例 4 岗)、属性边栏 5 项、三级轴标题。
  • 布局预期:主干沿"市场→研发→生产→质量→量产→结项"蛇形推进;三个回边逆向走外侧走廊;n1/n2/n3 在 DOC 列与依附节点横向对齐、虚线连接。
05

场景映射与验证

什么时候用 · 怎么写最有效 · 如何验证

选择模板的决策树

场景

选泳道形态

  • 需要分"谁/部门/阶段"?
  • └ 部门+阶段都分层 → 二维矩阵(D×P)
  • └ 只按部门或阶段 → 单维泳道
  • └ 不需要 → 无泳道(Layout 方向)

按需加能力

  • 引用程序文件/复合步骤 → Type[SUB]
  • 标注依据/文档/记录 → Type[N]/Type[DATA] + Attach
  • 岗位/依据/重要度可视化 → 六属性 + Attr active
  • 返工/驳回/循环 → 回边(经网关)
  • 常规路径语义 → 否则 →(默认出口)

体系文件

二维 + 六属性 + 回边(高频主场景)

QC 课题

单维 + 子流程 + Attr 全项

跨部门审批

Role 岗位 + Time + 默认出口

数字化培训

无泳道 + 字面量标签

📌 讲解 · 场景选型
  • 第一步问泳道:需要分"谁/部门/阶段"吗?部门+阶段都分层 → 二维矩阵;只按一个维度 → 单维;不关心 → 无泳道。
  • 第二步按需加能力:引用程序文件 → Type[SUB];标注依据/文档 → Type[N]/DATA + Attach;岗位/重要度可视化 → 六属性 + Attr active;返工/驳回 → 回边(经网关);常规路径 → 否则 →
  • 四个高频场景:体系文件(二维+六属性+回边)、QC 课题(单维+子流程+Attr 全项)、跨部门审批(Role+Time+默认出口)、数字化培训(无泳道+字面量)。

验证护栏与工程导航

验证

命令行验证(工程)

cd smart-qc-studio npm run test:flow # 154 项断言 npx tsc --noEmit # 类型 0 errors npm run build # 全链

工程代码导航

文件学语法看哪
FlowParser.ts解析正则 + 校验
flowToSVG.ts落格 / 扩展格 / 格内排序
AlgebraicFlowRouter.ts正交连线 / 避障
CellOrder.ts格内拓扑序
assert_flow_*.ts行为契约(好样例库)
📌 讲解 · 验证与学习资源
  • 验证命令npm run test:flow(154 项断言:parser 60 + svg 61 + bpmn 17 + mainline 8 + cell_order 8)、npx tsc --noEmit(类型 0 错)、npm run build(全链)。
  • 工程代码导航FlowParser.ts(解析正则+校验)、flowToSVG.ts(落格/扩展格/格内排序)、AlgebraicFlowRouter.ts(正交连线/避障)、CellOrder.ts(格内拓扑序)、MainlineOrder.ts(主干序)、assert_flow_*.ts(行为契约=好样例库)。
  • 编辑器中错误/警告实时显示;flowToDsl 会回写 Location + vh,保证往返稳定。

谢谢 · Q&A

IQS-Flow DSL —— 让体系文件流程图"谁 × 做什么 × 怎么流转"一目了然

1 / 1
↑↓ 翻页 · Esc 总览 · F11 全屏