# OP工作流专家

## 概述

**OP工作流专家**是TWork平台的专业SOP文档转BPMN工作流生成专家,支持读取SOP文档自动生成符合云平台导入标准的工作流MD文档(含完整BPMN 2.0 XML配置)。

## 核心能力

- ✅ **SOP文档智能解析**: 自动提取步骤总览、角色分配、入参出参文档、分支逻辑
- ✅ **BPMN 2.0工作流生成**: 生成完整的BPMN XML,包含节点、连接线、网关、子流程、扩展属性
- ✅ **节点唯一性设计**: 使用流程标识前缀(如ltc_)彻底规避跨流程节点冲突
- ✅ **角色权限映射**: 将SOP执行者映射为flowable:candidateGroups角色
- ✅ **文档编码**: 生成__inputAttachments和__outputAttachments扩展属性
- ✅ **质量验证**: XML语法验证、节点唯一性验证、引用完整性验证

## 文件结构

```
op-workflow-expert/
├── avatar.json           # 专家配置文件
├── system-prompt.md      # 系统提示词(详细工作流程)
└── welcome-data.md       # 欢迎面板数据(使用说明)
```

## 快速开始

### 方式1: 直接粘贴SOP文档

```
SOP转工作流

请帮我将以下SOP文档转换为BPMN工作流配置:

[SOP文档内容]
```

### 方式2: 指定SOP文档文件

```
生成BPMN /path/to/HY-G-LTC-SOP-001 线索管理SOP.md
```

### 方式3: 使用触发词

```
工作流配置 HY-G-LTC-SOP-001
```

## 输出内容

### 文件1: {SOP编号}-工作流配置.md

包含:
- 流程基本信息(流程名称、标识符、版本、分类)
- 流程节点清单(节点ID、名称、类型、角色)
- 完整BPMN 2.0 XML代码块

**示例**: `HY-G-LTC-SOP-001-工作流配置.md`

### 文件2: {SOP编号}-节点唯一性验证报告.md

包含:
- 流程元素ID清单
- 图形元素ID清单
- 引用完整性验证
- XML语法验证
- 冲突规避策略说明

**示例**: `HY-G-LTC-SOP-001-节点唯一性验证报告.md`

### 文件3: {SOP编号}-流程导入说明.md

包含:
- 角色ID映射说明
- 模板文件上传清单
- 流程变量说明
- 分支网关流转条件
- 测试用例
- 导入检查清单

**示例**: `HY-G-LTC-SOP-001-流程导入说明.md`

## 节点ID命名规范

### 流程标识前缀提取

从SOP编号提取业务标识:

| SOP编号 | 业务标识 | 节点前缀 |
|---------|---------|---------|
| HY-G-LTC-SOP-001 | LTC | `ltc_` |
| HY-G-OPP-SOP-002 | OPP | `opp_` |
| HY-G-CUST-SOP-003 | CUST | `cust_` |

### 完整命名规则

| 节点类型 | 命名格式 | 示例 |
|---------|---------|------|
| 主流程任务 | `ltc_step{N}_{语义}` | `ltc_step1_receive` |
| 主流程网关 | `ltc_gw_{语义}` | `ltc_gw_verify` |
| 主流程开始 | `ltc_start` | `ltc_start` |
| 主流程结束 | `ltc_end_{语义}` | `ltc_end_success` |
| 子流程节点 | `ltc_sub_{类型}_{语义}` | `ltc_sub_start` |
| 主流程连接线 | `ltc_flow_{NNN}` | `ltc_flow_001` |
| 子流程连接线 | `ltc_sub_flow_{NNN}` | `ltc_sub_flow_001` |

## 验证清单

生成的工作流配置必须通过以下验证:

- [x] XML语法验证通过(xmllint --noout)
- [x] 节点ID无重复(使用grep | sort | uniq -d验证)
- [x] 所有节点使用流程标识前缀(如ltc_)
- [x] 所有incoming/outgoing引用正确
- [x] 所有sourceRef/targetRef引用正确
- [x] 所有bpmnElement引用一致
- [x] 角色分配与SOP执行者匹配
- [x] 扩展属性包含所有入参/出参文档
- [x] 分支条件表达式正确
- [x] 子流程内部节点使用sub_前缀

## 导入前准备

在将生成的工作流配置导入云平台前,请确认:

- [ ] 角色代码已替换为系统实际角色ID (AR-01 → 实际ID)
- [ ] 所有模板文件已上传到系统
- [ ] 流程变量与系统数据模型一致
- [ ] 已执行节点唯一性验证
- [ ] 已测试所有分支路径
- [ ] 已配置流程监听器和通知规则

## 示例参考

完整的示例文件位于:

```
/Users/liulichen/idea_team/需求管理平台-2026/doc/
├── HY-G-LTC-SOP-001.bpmn20.xml                    # BPMN XML配置
├── HY-G-LTC-SOP-001_v5.2.md                       # 工作流MD文档
├── HY-G-LTC-SOP-001-节点唯一性验证报告.md         # 验证报告
├── HY-G-LTC-SOP-001-流程导入说明.md               # 导入说明
└── flow_001_v3.md                                 # BPMN模板参考
```

## 技术架构

### 输入

- SOP文档(Markdown格式)
- 步骤总览(6.1章节)
- 角色职责定义
- 文档模板清单

### 处理流程

1. SOP文档解析 → 提取结构化数据
2. BPMN节点设计 → 应用命名规范
3. 角色映射 → 生成flowable:candidateGroups
4. 文档编码 → 生成扩展属性
5. 分支逻辑处理 → 生成ExclusiveGateway
6. 子流程处理 → 生成SubProcess
7. 流程变量定义 → 生成flowable:variable
8. BPMNDI布局 → 生成图形坐标
9. 质量验证 → 执行5项验证
10. 文档生成 → 输出3个MD文件

### 输出

- BPMN 2.0 XML配置
- 节点唯一性验证报告
- 流程导入说明文档

## 注意事项

1. **节点ID全局唯一**: 使用流程标识前缀,确保跨流程不冲突
2. **入参出参可能多个**: 必须全部编码到扩展属性中
3. **分支逻辑完整**: 每个ExclusiveGateway的所有分支必须有明确条件
4. **子流程独立**: 子流程内部节点与主流程节点完全隔离
5. **XML特殊字符转义**: `<` 转义为 `&lt;`, `>` 转义为 `&gt;`
6. **角色代码需替换**: 导入前需将AR-01等替换为系统实际角色ID
7. **模板文件需上传**: 所有templateId对应的模板文件必须提前上传

## 版本历史

- **v1.0.0** (2026-06-28): 初始版本
  - 支持SOP文档解析
  - 支持BPMN 2.0工作流生成
  - 支持节点唯一性验证
  - 支持角色映射和文档编码

## 许可证

本专家为TWork平台内置官方专家,遵循TWork许可协议。

---

**OP工作流专家** - 让SOP到BPMN的转换自动化、标准化、可验证! 🚀
