用途
bpmn-xml-generator 用于把自然语言描述的流程转换为符合 BPMN 2.0 规范的 XML 文件。当用户想要创建 BPMN 工作流、把流程描述转换为标准化 BPMN 文件时适用。
主要能力
生成的 XML 包含:
- 带全部 BPMN 元素的完整流程定义
- 符合 BPMN 2.0 的命名空间声明
- 用于可视化渲染的图形交换(Diagram Interchange,DI)数据
- 兼容 Camunda、Flowable、bpmn.io 等工具的优化布局
使用方式:交互式提问框架
初始流程描述往往不足以生成最优 BPMN,该技能通过结构化的澄清流程收集完整需求后再生成 XML。
每个澄清问题使用固定格式,包含问题编号、主题分类、具体问题,以及选项:
- A) [推荐]:给出具体答案,并用 2-3 句说明为何这是最佳选择
- B) / C):备选答案
- D):用户提供自己的答案
- E):对剩余所有问题采用推荐答案(自动接受模式)
自动接受模式
当用户选择 E 时,内部设置 AUTO_ACCEPT_MODE = true,其后所有问题自动采用推荐答案,并记录每个自动接受的决策。生成 XML 前会展示自动接受决策的汇总表。
提问阶段
按以下顺序处理问题:
- 流程范围(问题 1-3):流程名称与标识符、流程触发器(开始事件类型)、完成状态(结束事件类型)
- 参与者(问题 4-5):单一流程还是协作(多池)、池内的泳道/角色
- 活动(问题 6-11):主要活动/任务识别、每个活动的任务类型、任务描述/文档(对 PowerPoint 生成至关重要)、任务顺序与依赖、子流程候选
- 流程控制(问题 11-15):需要网关的决策点、网关类型、默认流、循环检测
- 事件与异常(问题 16-19):中间事件、任务上的边界事件、错误处理方式、补偿需求
- 数据与集成(问题 20-22):所需数据对象、外部系统集成、消息流
- 优化审查(问题 23):对拟定结构的最终审查与调整机会
自适应提问
跳过不适用的提问:简单单池流程跳过参与者问题;未提及数据依赖则跳过数据问题;流程简单则跳过错误处理。始终询问关键问题:开始事件、主要任务、结束事件。
BPMN 元素映射
任务类型选择
根据描述关键词映射任务类型:
- 「user reviews」「person approves」「manually enters」「human performs」→ 用户任务
<bpmn:userTask> - 「system calls API」「automated process」「service executes」「integration」→ 服务任务
<bpmn:serviceTask> - 「send email」「send notification」「notify user」「alert」→ 发送任务
<bpmn:sendTask> - 「wait for response」「receive message」「await confirmation」→ 接收任务
<bpmn:receiveTask> - 「run script」「execute code」「calculate」「transform data」→ 脚本任务
<bpmn:scriptTask> - 「apply business rule」「decision table」「evaluate rules」→ 业务规则任务
<bpmn:businessRuleTask> - 「call external process」「invoke subprocess」→ 调用活动
<bpmn:callActivity> - 无特定类型的通用活动 →
<bpmn:task>
任务文档(关键)
每个任务必须包含 <bpmn:documentation> 元素并提供详细描述,用于 PowerPoint 演示生成(第 3 级项目符号)、流程文档与培训材料、审计与合规文档。文档应包含:目的、动作、执行者/系统、输入、输出、完成标准。技能会从上下文推断并扩展每个任务的文档细节。
网关选择
- 「if/then/else」「either A or B」「based on condition」「depending on」→ 排他网关(XOR)
<bpmn:exclusiveGateway> - 「do all of」「simultaneously」「in parallel」「at the same time」→ 并行网关(AND)
<bpmn:parallelGateway> - 「one or more of」「any combination」「at least one」→ 包容网关(OR)
<bpmn:inclusiveGateway> - 「wait for first event」「whichever happens first」「race condition」→ 事件网关
<bpmn:eventBasedGateway> - 其他类型不适配的复杂合并逻辑 → 复杂网关
<bpmn:complexGateway>
事件选择
开始事件:无(手工/未定义)、消息、定时器、条件、信号。
结束事件:无、消息、错误、升级、终止。
中间事件:消息(捕获/抛出)、定时器(捕获)、条件(捕获)、信号(两者皆可)。
边界事件:任务上的定时器(可非中断)、错误(始终中断)、消息(可非中断);子流程上的升级(可非中断)。
层级用阶段注释(对 PowerPoint 关键)
始终在生成的 BPMN XML 中包含阶段注释,以支持 PowerPoint 自动阶段检测(BPMN-to-PPTX 技能据此建立三级层级:一级为阶段箭头、二级为阶段内任务组、三级为带项目符号细节的单个任务)。阶段注释格式为在每个阶段首个元素前插入 <!-- Phase 1: Intake and Validation --> 之类注释。
阶段命名参考:初始受理、验证、处理、决策/审查、履行、异常处理。
阶段边界划分依据:逻辑分组、自然断点、执行者变更、状态转换;每个阶段目标 3-6 个任务以保证可读性。
XML 生成规则
必需结构包含 XML 声明和 <bpmn:definitions> 根元素,声明 bpmn、bpmndi、dc、di、xsi 命名空间。
ID 生成规则:Definitions、Process、StartEvent、EndEvent、Activity、Gateway、Flow、Shapes([elementId]_di)、Edges([flowId]_di)。名称派生 ID 使用 camelCase,去除空格与特殊字符。
顺序流规则:除开始事件外每个元素至少一个入流;除结束事件外每个元素至少一个出流;拆分的网关应最终合并;条件流必须有条件表达式;网关的默认流通过 default 属性标记。
XML 内元素顺序:开始事件、任务与活动、网关、中间事件、结束事件、顺序流、数据对象。
图形交换生成
元素尺寸:事件 36×36、任务 100×80、网关 50×50、折叠子流程 100×80、展开子流程 350+×200+、水平池总宽×250+、泳道为池宽×125。
布局算法常量:START_X = 180、START_Y = 120、H_SPACING = 150、V_SPACING = 100、EVENT_CENTER_OFFSET = 18、TASK_CENTER_OFFSET_Y = 40、GATEWAY_CENTER_OFFSET = 25。算法步骤包括沿主流程水平排布、网关拆分时垂直分布路径、网关合并时按最右入流元素加 H_SPACING 定位并取入流 y 平均值、结束事件右对齐。
坐标中心点计算:事件中心 (x+18, y+18)、任务中心 (x+50, y+40)、网关中心 (x+25, y+25)。
验证清单
输出 XML 前检查:结构完整性(一个开始事件、至少一个结束事件、所有元素通过顺序流连接、无孤立元素、ID 唯一);流有效性(开始事件无入流、结束事件无出流、其他元素兼具出入流、并行拆分与并行汇合匹配、无无退出条件的无限循环);BPMN 2.0 合规(命名空间齐全、必需属性存在、条件流有条件表达式、默认流正确标记、事件定义正确嵌套);图形交换(每个元素有对应 BPMNShape、每条顺序流有 BPMNEdge、形状边界合法、边至少 2 个路径点、无负坐标、元素不重叠)。
输出格式
收集需求后输出:1. 决策摘要(流程配置摘要);2. 流程描述(生成的流程结构与流摘要);3. BPMN XML 文件(写入当前目录 [process-name].bpmn);4. 验证确认。
适用场景与限制
适用于需要从自然语言描述生成标准化 BPMN 2.0 流程定义的场景,尤其是需要后续生成 PowerPoint 演示、流程文档、培训或审计材料的情况。具体支持的平台与运行环境以实际技能载体为准;收费、价格等信息暂未提供。