bpmn.md 4.1 KB

BPMN 流程设计器

基于 bpmn-js 的 BPMN 2.0 流程设计器和查看器,支持 Flowable 扩展属性。

组件概览

组件 说明
BpmnModeler.vue 基础 BPMN 模型设计器
FlowModeler.vue 增强版 Flowable 模型设计器
ProcessDiagramViewer.vue 流程图查看器(只读)
InteractiveProcessDiagram.vue 交互式流程图查看器
NodePropertiesPanel.vue 节点属性编辑面板
UserSelectModal.vue 用户选择弹窗

BpmnModeler — 基础模型设计器

<template>
  <BpmnModeler
    :xml="bpmnXml"
    :read-only="false"
    @save="onSave"
    @change="onChange"
    @ready="onReady"
  />
</template>

<script setup>
import BpmnModeler from '@/components/bpmn/BpmnModeler.vue'

function onSave(xml) {
  console.log('BPMN XML:', xml)
}
</script>

Props

属性 类型 默认值 说明
xml String - BPMN XML 内容
readOnly Boolean false 只读模式

Events

事件 参数 说明
save (xml: string) 保存时触发
change - 模型变更
ready - 模型加载完成

暴露方法

方法 返回值 说明
getXML() Promise<string> 获取 BPMN XML
getSVG() Promise<string> 获取 SVG 图片
importXML(xml) Promise<void> 导入 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 — 流程图查看器

显示流程实例的运行状态图。

<template>
  <ProcessDiagramViewer
    process-instance-id="process-123"
    @node-click="onNodeClick"
  />
</template>

Props

属性 类型 必填 说明
processInstanceId String 流程实例 ID

Events

事件 参数 说明
node-click (nodeData) 节点点击
loaded - 加载完成

功能

  • 从 API 获取 BPMN XML 并渲染
  • 节点状态标记(已完成/进行中/待处理)
  • 处理人徽章
  • 悬浮提示(处理人、时间、持续时间、审批意见)

NodePropertiesPanel — 节点属性面板

BPMN 元素的属性编辑器,支持以下节点类型:

节点类型 可配置属性
User Task 分配人类型、候选人/组(支持用户/角色选择器)、表单配置、优先级、截止日期、多实例/会签、任务/执行监听器
Service Task 实现类、表达式
Sequence Flow 条件表达式
Start/End Event 事件配置

UserSelectModal — 用户选择弹窗

可复用的用户选择器,支持搜索、分页和单选/多选。

<template>
  <UserSelectModal
    v-model:show="show"
    title="选择处理人"
    :multiple="true"
    :selected-users="selectedUsers"
    @confirm="onConfirm"
  />
</template>

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