☰
BPMN 2.0符号术语对照:从流程图到XML的规范落地
2026/10/14 13:16:43 网站建设 项目流程

简介:这是一份面向流程建模从业者与BPMN2.0学习者的中文术语对照PDF,由北京交通大学软件学院、华胜天成、摩卡软件、炎黄盈动等机构联合制定,系统梳理事件、泳池与泳道、数据、编排、逻辑门、活动、标记等七类核心图元及术语释义。文档为单个PDF文件,容量约936KB,体积小巧便于随时查阅;目前已有140人浏览学习。内容上,事件图元覆盖常规、消息、时间、升级、条件等类型;逻辑门图元详解排他、事件、并行、相容、复杂等网关的触发与合并语义;数据图元给出输入/输出数据、数据存储、消息流等定义;活动图元还涉及任务、事务、事件子过程、调用活动,并补充连接对象与会话图元。借助这份术语集,可快速识别BPMN2.0标准符号,统一团队沟通口径,适用于流程建模、业务分析及企业流程标准化培训场景。

1. 拿到 BPMN 2.0 符号术语表,先别急着背图例

业务方指着流程图里的菱形问“这个加号是啥意思”,你说“并行网关”,他点头。下一个项目换了个业务方,同样一个菱形加号,他叫“分叉”,你叫“并发网关”,开发照着实现的时候又写成“Parallel Gateway”。图能画出来,话却对不上,落到代码里的字段更是五花八门——这是所有做流程建模的人迟早撞上的墙。BPMN2.0 符号与术语的中文对照文档(BPMN2_0_Symbols-Terms_CHN.pdf)解决的就是这件事:把图形符号、标准英文术语和规范中文译名钉在同一张表上,让业务、产品、开发三方在评审和交付时说的都是同一种语言。

这份文档适合三类人:被流程评审折磨的流程工程师、需要把业务图转成可执行模型的后端开发、以及刚开始搭流程规范想少走弯路的架构师。它不教你怎么画图好看,也不讲 BPMN 的理论史,它给的是“这个符号叫什么、定成什么名字、写进文档用什么词”的基准答案。下面我按符号体系、术语落地、工程对接、常见翻车点这条线,把这套东西拆开讲。

2. 从图形到术语:BPMN 2.0 符号体系的分类与中英对照基准

2.1 先分清四大类:流对象、连接对象、泳道、工件

BPMN 2.0 的符号看着多,实际归类后只有四个家族。流对象是核心,包括事件、活动、网关三类;连接对象负责把流对象串起来,包括顺序流、消息流、关联;泳道是池和道,用来划职责边界;工件则是数据对象、注释、组这类辅助元素。CHN 术语表做的第一件事就是把英文原名和中文译名一一对死,避免同一个符号在不同文档里出现“任务/工作/活动”三种叫法。

以最常见的几个做例子,对照关系大概是:

英文术语CHN 译名图形标记典型使用位置
Event事件圆圈流程开始、结束、中间状态
Start Event开始事件细线圆圈每个流程有且至少一个
End Event结束事件粗线圆圈流程终止节点
Task任务圆角矩形原子工作单元
User Task用户任务圆角矩形带小人需要人工处理的活动
Exclusive Gateway排他网关普通菱形条件分支,多选一
Parallel Gateway并行网关菱形内部加号并发分叉与汇合
Sequence Flow顺序流实线箭头活动之间流转
Message Flow消息流虚线箭头带空心圆跨池通信
Data Object数据对象右上角折角矩形数据输入输出

提示:这份表不是建模规范本身,但它是建模规范最该引用的底表。我见过不少团队拿 Visio 里自带的 BPMN 形状直接画图,符号形状对得上,导出的 XML 里节点名却是自定义的英文缩写,和标准术语表完全对不上,这就是后面提到的一系列坑的源头。

2.2 事件是个大家族:边界事件、中间事件、补偿事件别混用

事件是 BPMN 2.0 里最容易画错的一类符号,因为同一个圆圈,边框粗细、内部图标不同,语义就完全变了。CHN 术语表里把事件按“位置”分成三类:开始事件、中间事件、结束事件;按“触发方式”又分成消息、定时、错误、补偿、终止等若干种。

实操里最容易翻车的是中间边界事件。它挂在活动边上,表示“活动执行过程中如果发生某个条件,就中断当前活动走另一条分支”。这个符号在术语表里叫“边界事件”,图标是活动边框上的小圆圈。很多人会把它画成活动内部的一条中间事件,语义就从“中断并转移”变成了“执行中等待”,流程行为完全不同。另一个高频混淆是补偿事件,它表示“回滚已完成的步骤”,画法是内部有两个左向箭头,这个符号只在需要事务回滚语义时用,普通流程中强行加只会让实现的人无从下手。

2.3 网关选型:排他、并行、包含、复杂,四种菱形四种语义

网关是流程分支与合并的控制点。CHN 术语表对这四类网关的译名做了区分:Exclusive Gateway 译“排他网关”,Parallel Gateway 译“并行网关”,Inclusive Gateway 译“包含网关”,Complex Gateway 译“复杂网关”。图形上的差别集中在菱形内部:排他是普通菱形、并行是加号、包含是空心圆、复杂是星形。

选型的判断标准就一条:出口分支的激活规则。排他网关是“多选一”,可以带默认流;并行网关是“全选”,所有出口无条件激活;包含网关是“满足条件的都激活”,适合“可同时走多条但不强制全走”的场景。这里有个最容易踩的坑:并行网关的分支汇合时,必须等所有进入的序列流都到达才能继续,但包含网关的汇合规则要复杂得多——它要等所有“可能被激活”的路径都到齐,而“可能被激活”这件事在运行时才能确定,实现时非常容易死锁。

3. 从符号到语义:BPMN 2.0 的 XML 序列化与术语聚合的工程价值

3.1 图只是皮,XML 才是骨头

BPMN 2.0 的标准并不只是给人看的图形约定,它还规定了完整的 XML 序列化格式。也就是说,你画出来的每个符号,最终都要映射成一段 XML 元素,才能被流程引擎执行、被模型校验工具检查、被版本管理工具做 diff。CHN 术语表在这里的工程价值,是把“图上的名字”和“XML 里的标签”做了一次语义聚合——同一个概念,不管建模工具叫 UserTask 还是 ManualTask,在术语表里都归到“用户任务”这个统一叫法下。

一个最小可执行流程的 XML 大概长这样:

<?xml version="1.0" encoding="UTF-8"?> <bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" targetNamespace="http://example.com/process"> <bpmn:process id="purchase_approval" name="采购审批" isExecutable="true"> <bpmn:startEvent id="start" name="开始"/> <bpmn:userTask id="apply" name="提交申请"/> <bpmn:exclusiveGateway id="gate_1" name="金额判断" default="flow_normal"/> <bpmn:sequenceFlow id="flow_1" sourceRef="start" targetRef="apply"/> <bpmn:sequenceFlow id="flow_2" sourceRef="apply" targetRef="gate_1"/> <bpmn:sequenceFlow id="flow_normal" sourceRef="gate_1" targetRef="end_approve"/> <bpmn:endEvent id="end_approve" name="审批通过"/> </bpmn:process> </bpmn:definitions>

这里的userTask对应图上的“用户任务”圆角矩形,exclusiveGateway对应菱形,sequenceFlow对应实线箭头。id 是引擎流转时的唯一标识,name 是显示给人看的文本。注意isExecutable="true"这个属性,它标识这个流程模型是可被引擎执行的,而不是纯文档模型——纯文档模型不需要这个标记。

3.2 为什么说术语表是“聚合”的锚点

各建模工具导出的 BPMN 文件,同样的语义可能有不同写法:有的工具把“人工审批”导出为userTask,有的导出为task加camunda:assignee扩展属性;有的把“会签”实现为多条用户任务,有的用一个带循环特性的multiInstanceLoopCharacteristics子元素表达。这些差异在图形上几乎看不出来,但在代码审查和流程引擎部署阶段会直接变成 Bug。

术语表起的作用就是聚合锚点:不管工具里叫什么、导出成什么标签,落到团队文档里统一用 CHN 术语表里的标准词。我一般会在建模规范里加一条硬性规则——凡是进代码库的 BPMN 文件,节点name必须用术语表中的中文名,英文名只准出现在id里。这样后续做流程检索、日志分析、用户报障时,所有信息都能对到同一套命名体系上,不用每次翻图猜“这个 applied 节点到底是哪个审批”。

3.3 落地术语表的最小步骤:建表、锁名、校验

具体做法分三步。第一步,把 CHN 术语表的内容转成一览表,Excel 或 wiki 表格都行,字段至少包含:英文术语、中文译名、所属分类、对应 XML 标签、图形描述、使用约束。第二步,把这张表变成建模工具的命名规范,比如在建模规范文档里直接引用术语表编号,不允许自定义节点名。第三步,在 CI 里加一道自动校验脚本,扫描所有 BPMN 文件,如果name属性出现术语表之外的新词,就报 warning 或 blocking。

这一步很多人忽略的是“校验的粒度”。脚本不只要检查节点有没有名字,还要检查名字用的词是否在术语表集合内。这个集合不是固定的,新增业务场景时可以先加术语后加图,但顺序不能反——先画图再补术语,时间一长术语表就会变成一纸空文。

4. 把 CHN 术语表用进日常建模:从术语库建设到图审清单

4.1 先建术语库,再定建模规范,顺序不能反

见过不少团队的做法是:先下载一份 BPMN 符号参考图,贴在 wiki 上,然后让大家照着画。结果三个月后,同一张图在不同人手里导出完全不同的样子。正确的顺序是先建术语库,再基于术语库定一条“最小建模规范”,最后才是让团队成员用这个规范去画图。

术语库怎么建?我建议把 CHN 术语表里的条目拆成四列落地:

术语项英文原名中文标准名使用时注意
任务Task任务不用“工作”“活动”替代
子流程Sub-Process子流程必须内嵌展开图或单独建模
结束事件End Event结束事件每个流程至少一个,终止类除外
顺序流Sequence Flow顺序流不在池之间画顺序流
消息流Message Flow消息流只画在池与池之间

这一步的意义是“先锁词再锁图”。词不统一时,画图的手一抖,或者建模工具自动生成英文名时没人纠正,后面所有文档、接口、报表全部跟着歪掉。

4.2 建模规范里建议包含的 6 条基本约束

基于术语表通常能推导出几条硬性约束,直接写进团队规范比每次图审时口头强调靠谱得多:

  1. 每个流程有且仅有一个开始事件,结束事件可以多个,但每个分支必须能到达至少一个结束事件。
  2. 网关必须有名字,网关出口必须配置条件表达式,排他网关必须指定默认出口。
  3. 顺序流不允许跨越池,跨池通信统一使用消息流。
  4. 存在补偿语义的节点,前后必须配齐补偿中端事件和补偿边界事件。
  5. 事件子流程必须有触发条件,不允许事件子流程“裸跑”。
  6. 所有节点 name 使用中文标准术语,id 使用英文命名法(如userTask_apply)。

这些约束看起来基础,实际执行时几乎每条都在救人。例如第 2 条,排他网关不配默认出口,一旦所有条件都不满足,运行时直接抛No outgoing sequence flow异常,流程卡死。第 4 条,补偿事件只画一边,回滚逻辑就无法触发。

4.3 图审清单:照单打勾比凭感觉评审省一半时间

图审阶段建议直接拿术语表当检查清单,逐项打勾,而不是对着图凭感觉找问题。我的常规清单长这样:

检查项对应术语表条目通过标准
开始事件数量Start Event全流程正好一个
用户任务命名User Task名称对得上业务动作,无歧义
网关类型Gateway 分类并行/排他/包含选型正确
默认出口Default Flow每个排他网关都有默认出口
顺序流跨池Sequence Flow无跨池实线箭头
边界事件挂载Boundary Event挂载在活动边框上,而非内部
事件子流程Event Sub-Process有明确触发事件

这张清单建议每季度跟着业务变化过一遍,有新场景就补新条目,术语表的“活”体现在这里——它不是一次性输出物,而是跟着流程建模规范同步演进的基准文件。

5. 术语表落地避坑指南:5 个最常见的翻车点与排查方法

5.1 翻车点一:同一业务动作,图上名字五花八门

现象:评审图时三个开发对同一个节点有三种叫法,代码实现时各自建了三个表的字段。原因:没有锁词,图节点名任由画图人自由发挥。解决:在规范里写死后,图审时直接用术语表比对所有节点 name。脚本检测最靠谱——把术语表做成合法词集合,扫描所有 BPMN 文件,出现集合外的新词时强制要求先在术语表里登记再上图。

5.2 翻车点二:并行网关汇合时流程永久卡住

现象:流程跑到一半卡死,没有异常日志,流程引擎后台显示活动实例停在并行网关。原因:出口走了两条分支,但汇合网关画成排他网关,或者并行网关缺少部分流入的序列流。解决:并行网关的汇合必须等待所有入度顺序流到达。排查时看 XML 里汇合网关的incoming标签个数,和分支处outgoing个数对齐。不一致的,要么补流,要么换网关类型。这个环节没法靠肉眼保证,建议在 CI 脚本里加一个规则:并行网关的出度与入度必须相等。

5.3 翻车点三:包含网关的汇合死锁,条件永远在变

现象:包含网关出口按条件激活了两条分支,但汇合处只等到了其中一条,流程卡死。原因:包含网关的汇合规则是“等待所有可能被激活的分支”,而“可能被激活”取决于运行时条件,无法静态判断。解决:优先避免包含网关的汇合结构,改成两条并行网关加条件分流;如果业务上必须用,引擎层要支持先评估激活路径再等待的机制,这一点在选型时要确认清楚,而不是画完图才发现引擎不支持。

5.4 翻车点四:边界事件画进活动内部,语义直接反转

现象:流程在活动执行中应该被定时打断,实际却变成了“活动执行前先等定时器”。原因:把边界事件画成活动内部的中间事件,XML 结构从<boundaryEvent>变成了<intermediateCatchEvent>。解决:回到术语表查“边界事件”的图形要求——它必须挂在活动边框上,XML 里是活动元素的子节点关系而不是活动内部的独立节点。排查时直接看 XML,boundaryEvent的attachedToRef属性是否为对应活动的 id。

5.5 翻车点五:消息流和顺序流混画

现象:两个泳道之间画了实线箭头,模型校验报错,或流程部署后消息一直没发出。原因:把顺序流画到了池边界之外,违反“顺序流不跨池”的规则。解决:跨池通信只能使用消息流。排查时看序列流箭头的 sourceRef 和 targetRef 是否指向同一个池内的节点,不在同一个 pool 内的一律改成 messageFlow。这个错误在图形上不容易被业务看出来,对开发来说却是致命的——顺序流语义是控制流,消息流语义是异步消息发送,完全两码事。

提示:以上五条总结成一句话——术语表的真正价值不是让人背下所有名词,而是让“这个符号在 XML 里长什么样、有没有边界条件、能跟什么结构组合”这些实现细节在建模阶段就被约束住。

6. 用最小脚本校验 BPMN 文件与术语表的一致性

最后给一个可以立刻用起来的小技巧:写一个 Python 脚本,扫描仓库里的所有.bpmn文件,检查节点 name 是否在术语表内、并行网关出入度是否对称、排他网关是否有默认出口。这比任何人工图审都稳定,也能在 CI 里自动跑。

import glob import xml.etree.ElementTree as ET NS = { "bpmn": "http://www.omg.org/spec/BPMN/20100524/MODEL", } def load_terms(path): # 术语表格式:每行一个标准中文名,用于校验 name 属性 return set(line.strip() for line in open(path, encoding="utf-8") if line.strip()) def check_bpmn(file_path, terms): tree = ET.parse(file_path) root = tree.getroot() errors = [] for node in root.iter(): tag = node.tag.split("}")[-1] name = node.get("name", "") if tag in {"userTask", "task", "serviceTask", "callActivity"}: if name not in terms: errors.append(f"{file_path}: 节点名字 '{name}' 不在术语表内") if tag == "exclusiveGateway": outgoing = node.findall("bpmn:outgoing", NS) defaults = node.get("default", "") if outgoing and not defaults: errors.append(f"{file_path}: 排他网关 '{name}' 缺少默认出口") return errors if __name__ == "__main__": terms = load_terms("terms.txt") for bpmn_file in glob.glob("processes/**/*.bpmn", recursive=True): errs = check_bpmn(bpmn_file, terms) for err in errs: print(err)

这段脚本做了三件事:加载术语表为集合,遍历 BPMN 文件里的所有元素,对活动节点做名词检查、对排他网关做默认出口检查。node.tag.split("}")[-1]是取 XML 标签的本地名,因为 BPMN 标准命名空间前缀在解析时可能不同。默认出口的判断用的是node.get("default", ""),这是规范定义在网关元素上的属性,指向一条出口流的 id。

这套脚本最大的价值是可以加进 CI 流水线。我在实际项目里给它加过一条更严的规则:所有网关节点都必须有 name,所有结束事件都要求能通过反向遍历到达——这个反向遍历要解析incoming/outgoing关系,代码会复杂一些,但能把“流程有没有死路”在合并代码前就拦住。我个人的习惯是每周跑一次全量扫描,跑完顺手把新增的业务场景补充进术语表,再更新一次基准集合。

BPMN 2.0 符号与术语这套东西,看着是一份文档,实际是一套协作基准。图和词对不上,后面每道工序都在还债;图和词一开始就锁死,建模、开发、测试、运维全链路都能顺着同一套命名往下走。希望这份从符号到校验的完整路径能帮到你,哪怕只是少一次评审会上因叫法不一致引发的争论,也值了。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询