# BPMN 流程设计器 基于 `bpmn-js` 的 BPMN 2.0 流程设计器和查看器,支持 Flowable 扩展属性。 ## 组件概览 | 组件 | 说明 | |------|------| | `BpmnModeler.vue` | 基础 BPMN 模型设计器 | | `FlowModeler.vue` | 增强版 Flowable 模型设计器 | | `ProcessDiagramViewer.vue` | 流程图查看器(只读) | | `InteractiveProcessDiagram.vue` | 交互式流程图查看器 | | `NodePropertiesPanel.vue` | 节点属性编辑面板 | | `UserSelectModal.vue` | 用户选择弹窗 | ## BpmnModeler — 基础模型设计器 ```vue ``` ### Props | 属性 | 类型 | 默认值 | 说明 | |------|------|--------|------| | `xml` | String | - | BPMN XML 内容 | | `readOnly` | Boolean | false | 只读模式 | ### Events | 事件 | 参数 | 说明 | |------|------|------| | `save` | `(xml: string)` | 保存时触发 | | `change` | - | 模型变更 | | `ready` | - | 模型加载完成 | ### 暴露方法 | 方法 | 返回值 | 说明 | |------|--------|------| | `getXML()` | `Promise` | 获取 BPMN XML | | `getSVG()` | `Promise` | 获取 SVG 图片 | | `importXML(xml)` | `Promise` | 导入 BPMN XML | ### 工具栏 支持撤销/重做、缩放(放大/缩小/适应)、导出 BPMN/SVG。 --- ## FlowModeler — 增强版模型设计器 在 `BpmnModeler` 基础上增加 Flowable 扩展属性支持。 ### 特性 - Flowable moddle 扩展(`flowable-moddle.json`) - 增强的工具栏(导入/导出、XML 预览) - 缩放百分比显示 - 节点属性弹窗(委托给 `NodePropertiesPanel`) ### 暴露方法 | 方法 | 说明 | |------|------| | `getXML()` | 获取 BPMN XML | | `setXML(xml)` | 设置 BPMN XML | | `modeler()` | 获取底层 bpmn-js Modeler 实例 | --- ## ProcessDiagramViewer — 流程图查看器 显示流程实例的运行状态图。 ```vue ``` ### Props | 属性 | 类型 | 必填 | 说明 | |------|------|------|------| | `processInstanceId` | String | 是 | 流程实例 ID | ### Events | 事件 | 参数 | 说明 | |------|------|------| | `node-click` | `(nodeData)` | 节点点击 | | `loaded` | - | 加载完成 | ### 功能 - 从 API 获取 BPMN XML 并渲染 - 节点状态标记(已完成/进行中/待处理) - 处理人徽章 - 悬浮提示(处理人、时间、持续时间、审批意见) --- ## NodePropertiesPanel — 节点属性面板 BPMN 元素的属性编辑器,支持以下节点类型: | 节点类型 | 可配置属性 | |----------|-----------| | User Task | 分配人类型、候选人/组(支持用户/角色选择器)、表单配置、优先级、截止日期、多实例/会签、任务/执行监听器 | | Service Task | 实现类、表达式 | | Sequence Flow | 条件表达式 | | Start/End Event | 事件配置 | --- ## UserSelectModal — 用户选择弹窗 可复用的用户选择器,支持搜索、分页和单选/多选。 ```vue ``` ### Props | 属性 | 类型 | 默认值 | 说明 | |------|------|--------|------| | `show` | Boolean | false | 控制显示(v-model) | | `title` | String | - | 弹窗标题 | | `multiple` | Boolean | false | 是否多选 | | `selectedUsers` | Array | `[]` | 已选用户列表 | ### Events | 事件 | 参数 | 说明 | |------|------|------| | `update:show` | `(value: boolean)` | 显示状态变更 | | `confirm` | `(users: Array)` | 确认选择 | ### 功能 - 关键词搜索 - 部门树过滤 - 分页数据表格 - 单选/多选支持 ## 依赖 - `bpmn-js` - `flowable-moddle.json` - `naive-ui` - `@/api/flow` - `@/utils/http`