@szjy/workflow 0.1.29 → 0.1.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +279 -14
 - package/dist/index.mjs +4234 -4222
 - package/dist/index.umd.js +73 -73
 - package/dist/packages/components/Workflow/biz-logic/leave/constant.d.ts +1 -0
 - package/package.json +1 -1
 
    
        package/README.md
    CHANGED
    
    | 
         @@ -2,34 +2,299 @@ 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            [](https://github.com/szjy-work/workflow/actions/workflows/release.yml)
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
      
 5 
     | 
    
         
            +
            ## 项目概述
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
      
 7 
     | 
    
         
            +
            @szjy/workflow 是基于 Vue 3、TypeScript 和 BPMN.js 开发的工作流设计器组件库,提供了完整的工作流程设计、表单权限配置和电子签章管理能力。该组件库适用于需要实现业务流程设计与管理的企业应用系统,特别是在建筑信息化领域。
         
     | 
| 
       7 
8 
     | 
    
         | 
| 
       8 
     | 
    
         
            -
            ##  
     | 
| 
      
 9 
     | 
    
         
            +
            ## 目录结构
         
     | 
| 
       9 
10 
     | 
    
         | 
| 
       10 
     | 
    
         
            -
            先安装:
         
     | 
| 
       11 
     | 
    
         
            -
            ```shell
         
     | 
| 
       12 
     | 
    
         
            -
            npm i @szjy/workflow
         
     | 
| 
       13 
11 
     | 
    
         
             
            ```
         
     | 
| 
      
 12 
     | 
    
         
            +
            workflow/
         
     | 
| 
      
 13 
     | 
    
         
            +
            ├── examples/                # 示例代码
         
     | 
| 
      
 14 
     | 
    
         
            +
            │   ├── App.vue             # 示例应用
         
     | 
| 
      
 15 
     | 
    
         
            +
            │   └── ui/                 # 示例UI组件
         
     | 
| 
      
 16 
     | 
    
         
            +
            ├── packages/
         
     | 
| 
      
 17 
     | 
    
         
            +
            │   ├── components/         # 核心组件
         
     | 
| 
      
 18 
     | 
    
         
            +
            │   │   ├── Hello/          # Hello组件(示例)
         
     | 
| 
      
 19 
     | 
    
         
            +
            │   │   └── Workflow/       # 工作流组件
         
     | 
| 
      
 20 
     | 
    
         
            +
            │   │       ├── activiti/   # Activiti引擎配置
         
     | 
| 
      
 21 
     | 
    
         
            +
            │   │       ├── biz-logic/  # 业务逻辑实现
         
     | 
| 
      
 22 
     | 
    
         
            +
            │   │       ├── components/ # 子组件
         
     | 
| 
      
 23 
     | 
    
         
            +
            │   │       ├── palette/    # 自定义画板
         
     | 
| 
      
 24 
     | 
    
         
            +
            │   │       ├── store/      # 状态管理
         
     | 
| 
      
 25 
     | 
    
         
            +
            │   │       └── utils/      # 工具函数
         
     | 
| 
      
 26 
     | 
    
         
            +
            │   └── i18n/               # 国际化资源
         
     | 
| 
      
 27 
     | 
    
         
            +
            │       ├── en_US/          # 英文
         
     | 
| 
      
 28 
     | 
    
         
            +
            │       └── zh_CN/          # 中文
         
     | 
| 
      
 29 
     | 
    
         
            +
            ├── public/                 # 静态资源
         
     | 
| 
      
 30 
     | 
    
         
            +
            └── index.ts                # 入口文件
         
     | 
| 
      
 31 
     | 
    
         
            +
            ```
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
            ## 环境要求
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
            - Node.js >= 16
         
     | 
| 
      
 36 
     | 
    
         
            +
            - Vue 3
         
     | 
| 
      
 37 
     | 
    
         
            +
            - TypeScript >= 4.8
         
     | 
| 
      
 38 
     | 
    
         
            +
            - Vite >= 5.0.0
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
            ## 安装
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
            ```bash
         
     | 
| 
      
 43 
     | 
    
         
            +
            # npm
         
     | 
| 
      
 44 
     | 
    
         
            +
            npm install @szjy/workflow
         
     | 
| 
       14 
45 
     | 
    
         | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
      
 46 
     | 
    
         
            +
            # yarn
         
     | 
| 
      
 47 
     | 
    
         
            +
            yarn add @szjy/workflow
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
            # pnpm
         
     | 
| 
      
 50 
     | 
    
         
            +
            pnpm add @szjy/workflow
         
     | 
| 
       18 
51 
     | 
    
         
             
            ```
         
     | 
| 
       19 
52 
     | 
    
         | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
      
 53 
     | 
    
         
            +
            ## 快速开始
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
            ### 全局注册
         
     | 
| 
       21 
56 
     | 
    
         | 
| 
       22 
57 
     | 
    
         
             
            ```typescript
         
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
            import ' 
     | 
| 
      
 58 
     | 
    
         
            +
            // main.ts
         
     | 
| 
      
 59 
     | 
    
         
            +
            import { createApp } from 'vue'
         
     | 
| 
      
 60 
     | 
    
         
            +
            import App from './App.vue'
         
     | 
| 
      
 61 
     | 
    
         
            +
            import SWorkflow from '@szjy/workflow'
         
     | 
| 
      
 62 
     | 
    
         
            +
            import '@szjy/workflow/dist/style.css'
         
     | 
| 
       25 
63 
     | 
    
         | 
| 
      
 64 
     | 
    
         
            +
            const app = createApp(App)
         
     | 
| 
       26 
65 
     | 
    
         
             
            app.use(SWorkflow).mount('#app')
         
     | 
| 
       27 
66 
     | 
    
         
             
            ```
         
     | 
| 
       28 
67 
     | 
    
         | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
      
 68 
     | 
    
         
            +
            ### 组件使用
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
            ```vue
         
     | 
| 
      
 71 
     | 
    
         
            +
            <template>
         
     | 
| 
      
 72 
     | 
    
         
            +
              <sz-workflow ref="workflowRef" @init="onInitWorkflow">
         
     | 
| 
      
 73 
     | 
    
         
            +
                <!-- 自定义工具栏插槽 -->
         
     | 
| 
      
 74 
     | 
    
         
            +
                <template #TOOLBAR_SUFFIX>
         
     | 
| 
      
 75 
     | 
    
         
            +
                  <button>导入模板</button>
         
     | 
| 
      
 76 
     | 
    
         
            +
                </template>
         
     | 
| 
      
 77 
     | 
    
         
            +
                
         
     | 
| 
      
 78 
     | 
    
         
            +
                <!-- 自定义用户选择器插槽 -->
         
     | 
| 
      
 79 
     | 
    
         
            +
                <template #USER_CHOOSER_SUFFIX="userProps">
         
     | 
| 
      
 80 
     | 
    
         
            +
                  <user-chooser :user-id="userProps.userId" :on-change="userProps.onChange"></user-chooser>
         
     | 
| 
      
 81 
     | 
    
         
            +
                </template>
         
     | 
| 
      
 82 
     | 
    
         
            +
              </sz-workflow>
         
     | 
| 
      
 83 
     | 
    
         
            +
            </template>
         
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
      
 85 
     | 
    
         
            +
            <script setup lang="ts">
         
     | 
| 
      
 86 
     | 
    
         
            +
            import { ref } from 'vue'
         
     | 
| 
      
 87 
     | 
    
         
            +
             
     | 
| 
      
 88 
     | 
    
         
            +
            const workflowRef = ref()
         
     | 
| 
      
 89 
     | 
    
         
            +
             
     | 
| 
      
 90 
     | 
    
         
            +
            // 初始化回调
         
     | 
| 
      
 91 
     | 
    
         
            +
            const onInitWorkflow = (modeler) => {
         
     | 
| 
      
 92 
     | 
    
         
            +
              console.log('工作流编辑器初始化完成', modeler)
         
     | 
| 
      
 93 
     | 
    
         
            +
            }
         
     | 
| 
      
 94 
     | 
    
         
            +
             
     | 
| 
      
 95 
     | 
    
         
            +
            // 获取工作流XML
         
     | 
| 
      
 96 
     | 
    
         
            +
            const getXml = async () => {
         
     | 
| 
      
 97 
     | 
    
         
            +
              const xml = await workflowRef.value?.getWorkflowXml()
         
     | 
| 
      
 98 
     | 
    
         
            +
              console.log(xml)
         
     | 
| 
      
 99 
     | 
    
         
            +
            }
         
     | 
| 
      
 100 
     | 
    
         
            +
             
     | 
| 
      
 101 
     | 
    
         
            +
            // 导入工作流XML
         
     | 
| 
      
 102 
     | 
    
         
            +
            const importXml = (xml) => {
         
     | 
| 
      
 103 
     | 
    
         
            +
              workflowRef.value?.initXmlToStore(xml)
         
     | 
| 
      
 104 
     | 
    
         
            +
            }
         
     | 
| 
      
 105 
     | 
    
         
            +
            </script>
         
     | 
| 
      
 106 
     | 
    
         
            +
            ```
         
     | 
| 
      
 107 
     | 
    
         
            +
             
     | 
| 
      
 108 
     | 
    
         
            +
            ## 核心功能
         
     | 
| 
      
 109 
     | 
    
         
            +
             
     | 
| 
      
 110 
     | 
    
         
            +
            ### 工作流设计器
         
     | 
| 
      
 111 
     | 
    
         
            +
             
     | 
| 
      
 112 
     | 
    
         
            +
            提供基于BPMN.js的可视化流程设计器,支持拖拽式流程设计。
         
     | 
| 
      
 113 
     | 
    
         
            +
             
     | 
| 
      
 114 
     | 
    
         
            +
            ### 表单权限配置
         
     | 
| 
      
 115 
     | 
    
         
            +
             
     | 
| 
      
 116 
     | 
    
         
            +
            支持为工作流各节点配置表单字段的权限(编辑、只读、隐藏)。
         
     | 
| 
      
 117 
     | 
    
         
            +
             
     | 
| 
      
 118 
     | 
    
         
            +
            ### 电子签章管理
         
     | 
| 
      
 119 
     | 
    
         
            +
             
     | 
| 
      
 120 
     | 
    
         
            +
            支持配置电子签章的位置、样式和触发条件。
         
     | 
| 
      
 121 
     | 
    
         
            +
             
     | 
| 
      
 122 
     | 
    
         
            +
            ### 国际化支持
         
     | 
| 
      
 123 
     | 
    
         
            +
             
     | 
| 
      
 124 
     | 
    
         
            +
            内置中文和英文语言包,支持多语言配置。
         
     | 
| 
      
 125 
     | 
    
         
            +
             
     | 
| 
      
 126 
     | 
    
         
            +
            ## API文档
         
     | 
| 
      
 127 
     | 
    
         
            +
             
     | 
| 
      
 128 
     | 
    
         
            +
            ### 属性
         
     | 
| 
      
 129 
     | 
    
         
            +
             
     | 
| 
      
 130 
     | 
    
         
            +
            | 属性名 | 类型 | 默认值 | 说明 |
         
     | 
| 
      
 131 
     | 
    
         
            +
            |-------|------|-------|------|
         
     | 
| 
      
 132 
     | 
    
         
            +
            | mode  | string | 'normal' | 工作流模式,可选值:'normal'(编辑模式)、'preview'(预览模式) |
         
     | 
| 
      
 133 
     | 
    
         
            +
            | height | string | '' | 工作流设计器高度,为空时自动计算 |
         
     | 
| 
      
 134 
     | 
    
         
            +
             
     | 
| 
      
 135 
     | 
    
         
            +
            ### 事件
         
     | 
| 
      
 136 
     | 
    
         
            +
             
     | 
| 
      
 137 
     | 
    
         
            +
            | 事件名 | 参数 | 说明 |
         
     | 
| 
      
 138 
     | 
    
         
            +
            |-------|------|------|
         
     | 
| 
      
 139 
     | 
    
         
            +
            | init | modeler | 工作流编辑器初始化完成时触发 |
         
     | 
| 
      
 140 
     | 
    
         
            +
             
     | 
| 
      
 141 
     | 
    
         
            +
            ### 方法
         
     | 
| 
      
 142 
     | 
    
         
            +
             
     | 
| 
      
 143 
     | 
    
         
            +
            | 方法名 | 参数 | 返回值 | 说明 |
         
     | 
| 
      
 144 
     | 
    
         
            +
            |-------|------|-------|------|
         
     | 
| 
      
 145 
     | 
    
         
            +
            | getWorkflowXml | - | Promise\<string\> | 获取当前工作流的XML定义 |
         
     | 
| 
      
 146 
     | 
    
         
            +
            | initXmlToStore | xml: string | Promise\<void\> | 导入工作流XML定义 |
         
     | 
| 
      
 147 
     | 
    
         
            +
            | updateProcessId | processId: string | void | 更新流程ID |
         
     | 
| 
      
 148 
     | 
    
         
            +
            | getPermissionJSON | - | PermissionJSONLike | 获取表单权限配置 |
         
     | 
| 
      
 149 
     | 
    
         
            +
            | setPermissionByFields | permissonJSON: PermissionJSONLike, fields: FieldItemType[] | void | 设置表单权限配置 |
         
     | 
| 
      
 150 
     | 
    
         
            +
            | updatePermFields | fields: FieldItemType[] | void | 更新表单字段列表 |
         
     | 
| 
      
 151 
     | 
    
         
            +
            | getEsignJSON | - | EsignJSONLike | 获取电子签章配置 |
         
     | 
| 
      
 152 
     | 
    
         
            +
            | setEsignConfig | esignJSON: EsignJSONLike | void | 设置电子签章配置 |
         
     | 
| 
      
 153 
     | 
    
         
            +
             
     | 
| 
      
 154 
     | 
    
         
            +
            ### 插槽
         
     | 
| 
      
 155 
     | 
    
         
            +
             
     | 
| 
      
 156 
     | 
    
         
            +
            | 插槽名 | 参数 | 说明 |
         
     | 
| 
      
 157 
     | 
    
         
            +
            |-------|------|------|
         
     | 
| 
      
 158 
     | 
    
         
            +
            | TOOLBAR_PREFIX | - | 工具栏前置内容 |
         
     | 
| 
      
 159 
     | 
    
         
            +
            | TOOLBAR_SUFFIX | - | 工具栏后置内容 |
         
     | 
| 
      
 160 
     | 
    
         
            +
            | USER_CHOOSER_SUFFIX | { userId, onChange } | 用户选择器自定义渲染 |
         
     | 
| 
      
 161 
     | 
    
         
            +
            | FORMID_CHOOSER_SUFFIX | { formFieldId, onChange } | 表单字段选择器自定义渲染 |
         
     | 
| 
      
 162 
     | 
    
         
            +
             
     | 
| 
      
 163 
     | 
    
         
            +
            ## 工作流架构
         
     | 
| 
      
 164 
     | 
    
         
            +
             
     | 
| 
      
 165 
     | 
    
         
            +
            ```mermaid
         
     | 
| 
      
 166 
     | 
    
         
            +
            flowchart TD
         
     | 
| 
      
 167 
     | 
    
         
            +
              A[工作流组件] --> B[BPMN编辑器]
         
     | 
| 
      
 168 
     | 
    
         
            +
              A --> C[属性面板]
         
     | 
| 
      
 169 
     | 
    
         
            +
              A --> D[工具栏]
         
     | 
| 
      
 170 
     | 
    
         
            +
              
         
     | 
| 
      
 171 
     | 
    
         
            +
              B --> E[Activiti引擎]
         
     | 
| 
      
 172 
     | 
    
         
            +
              B --> F[自定义画板]
         
     | 
| 
      
 173 
     | 
    
         
            +
              
         
     | 
| 
      
 174 
     | 
    
         
            +
              C --> G[节点属性]
         
     | 
| 
      
 175 
     | 
    
         
            +
              C --> H[表单权限]
         
     | 
| 
      
 176 
     | 
    
         
            +
              C --> I[电子签章]
         
     | 
| 
      
 177 
     | 
    
         
            +
              
         
     | 
| 
      
 178 
     | 
    
         
            +
              G --> J[基础属性]
         
     | 
| 
      
 179 
     | 
    
         
            +
              G --> K[监听器]
         
     | 
| 
      
 180 
     | 
    
         
            +
              
         
     | 
| 
      
 181 
     | 
    
         
            +
              H --> L[字段权限]
         
     | 
| 
      
 182 
     | 
    
         
            +
              H --> M[条件配置]
         
     | 
| 
      
 183 
     | 
    
         
            +
              
         
     | 
| 
      
 184 
     | 
    
         
            +
              D --> N[保存/导出]
         
     | 
| 
      
 185 
     | 
    
         
            +
              D --> O[放大/缩小]
         
     | 
| 
      
 186 
     | 
    
         
            +
              D --> P[对齐工具]
         
     | 
| 
      
 187 
     | 
    
         
            +
            ```
         
     | 
| 
      
 188 
     | 
    
         
            +
             
     | 
| 
      
 189 
     | 
    
         
            +
            ## 使用示例
         
     | 
| 
      
 190 
     | 
    
         
            +
             
     | 
| 
      
 191 
     | 
    
         
            +
            ### 基础工作流设计
         
     | 
| 
      
 192 
     | 
    
         
            +
             
     | 
| 
      
 193 
     | 
    
         
            +
            ```vue
         
     | 
| 
      
 194 
     | 
    
         
            +
            <template>
         
     | 
| 
      
 195 
     | 
    
         
            +
              <sz-workflow ref="workflowRef"></sz-workflow>
         
     | 
| 
      
 196 
     | 
    
         
            +
              <button @click="saveWorkflow">保存流程</button>
         
     | 
| 
      
 197 
     | 
    
         
            +
            </template>
         
     | 
| 
       30 
198 
     | 
    
         | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
      
 199 
     | 
    
         
            +
            <script setup>
         
     | 
| 
      
 200 
     | 
    
         
            +
            import { ref } from 'vue'
         
     | 
| 
      
 201 
     | 
    
         
            +
             
     | 
| 
      
 202 
     | 
    
         
            +
            const workflowRef = ref()
         
     | 
| 
      
 203 
     | 
    
         
            +
             
     | 
| 
      
 204 
     | 
    
         
            +
            const saveWorkflow = async () => {
         
     | 
| 
      
 205 
     | 
    
         
            +
              const xml = await workflowRef.value?.getWorkflowXml()
         
     | 
| 
      
 206 
     | 
    
         
            +
              console.log('流程定义XML:', xml)
         
     | 
| 
      
 207 
     | 
    
         
            +
              // 保存到服务器的代码
         
     | 
| 
      
 208 
     | 
    
         
            +
            }
         
     | 
| 
      
 209 
     | 
    
         
            +
            </script>
         
     | 
| 
       33 
210 
     | 
    
         
             
            ```
         
     | 
| 
       34 
211 
     | 
    
         | 
| 
      
 212 
     | 
    
         
            +
            ### 表单权限配置
         
     | 
| 
      
 213 
     | 
    
         
            +
             
     | 
| 
      
 214 
     | 
    
         
            +
            ```typescript
         
     | 
| 
      
 215 
     | 
    
         
            +
            // 字段列表
         
     | 
| 
      
 216 
     | 
    
         
            +
            const fields = [
         
     | 
| 
      
 217 
     | 
    
         
            +
              { id: 'field1', name: '姓名' },
         
     | 
| 
      
 218 
     | 
    
         
            +
              { id: 'field2', name: '部门' },
         
     | 
| 
      
 219 
     | 
    
         
            +
              { id: 'field3', name: '职位' }
         
     | 
| 
      
 220 
     | 
    
         
            +
            ]
         
     | 
| 
      
 221 
     | 
    
         
            +
             
     | 
| 
      
 222 
     | 
    
         
            +
            // 权限配置
         
     | 
| 
      
 223 
     | 
    
         
            +
            const permissions = {
         
     | 
| 
      
 224 
     | 
    
         
            +
              createFieldPermission: {
         
     | 
| 
      
 225 
     | 
    
         
            +
                assigneeFieldPermissionMap: [
         
     | 
| 
      
 226 
     | 
    
         
            +
                  { key: 'field1', fieldId: 'field1', fieldName: '姓名', permission: 'EDITABLE' },
         
     | 
| 
      
 227 
     | 
    
         
            +
                  { key: 'field2', fieldId: 'field2', fieldName: '部门', permission: 'EDITABLE' },
         
     | 
| 
      
 228 
     | 
    
         
            +
                  { key: 'field3', fieldId: 'field3', fieldName: '职位', permission: 'EDITABLE' }
         
     | 
| 
      
 229 
     | 
    
         
            +
                ],
         
     | 
| 
      
 230 
     | 
    
         
            +
                othersFieldPermissionMap: [
         
     | 
| 
      
 231 
     | 
    
         
            +
                  { key: 'field1', fieldId: 'field1', fieldName: '姓名', permission: 'ALL_READ_ONLY' },
         
     | 
| 
      
 232 
     | 
    
         
            +
                  { key: 'field2', fieldId: 'field2', fieldName: '部门', permission: 'ALL_READ_ONLY' },
         
     | 
| 
      
 233 
     | 
    
         
            +
                  { key: 'field3', fieldId: 'field3', fieldName: '职位', permission: 'HIDDEN' }
         
     | 
| 
      
 234 
     | 
    
         
            +
                ]
         
     | 
| 
      
 235 
     | 
    
         
            +
              },
         
     | 
| 
      
 236 
     | 
    
         
            +
              taskToFieldPermissionMap: {
         
     | 
| 
      
 237 
     | 
    
         
            +
                'Activity_1': {
         
     | 
| 
      
 238 
     | 
    
         
            +
                  assigneeFieldPermissionMap: [
         
     | 
| 
      
 239 
     | 
    
         
            +
                    { key: 'field1', fieldId: 'field1', fieldName: '姓名', permission: 'EDITABLE' }
         
     | 
| 
      
 240 
     | 
    
         
            +
                  ],
         
     | 
| 
      
 241 
     | 
    
         
            +
                  othersFieldPermissionMap: [
         
     | 
| 
      
 242 
     | 
    
         
            +
                    { key: 'field1', fieldId: 'field1', fieldName: '姓名', permission: 'ALL_READ_ONLY' }
         
     | 
| 
      
 243 
     | 
    
         
            +
                  ]
         
     | 
| 
      
 244 
     | 
    
         
            +
                }
         
     | 
| 
      
 245 
     | 
    
         
            +
              }
         
     | 
| 
      
 246 
     | 
    
         
            +
            }
         
     | 
| 
      
 247 
     | 
    
         
            +
             
     | 
| 
      
 248 
     | 
    
         
            +
            // 设置权限
         
     | 
| 
      
 249 
     | 
    
         
            +
            workflowRef.value?.setPermissionByFields(permissions, fields)
         
     | 
| 
      
 250 
     | 
    
         
            +
            ```
         
     | 
| 
      
 251 
     | 
    
         
            +
             
     | 
| 
      
 252 
     | 
    
         
            +
            ## 项目开发
         
     | 
| 
      
 253 
     | 
    
         
            +
             
     | 
| 
      
 254 
     | 
    
         
            +
            ### 本地开发
         
     | 
| 
      
 255 
     | 
    
         
            +
             
     | 
| 
      
 256 
     | 
    
         
            +
            ```bash
         
     | 
| 
      
 257 
     | 
    
         
            +
            # 安装依赖
         
     | 
| 
      
 258 
     | 
    
         
            +
            pnpm install
         
     | 
| 
      
 259 
     | 
    
         
            +
             
     | 
| 
      
 260 
     | 
    
         
            +
            # 启动开发服务器
         
     | 
| 
      
 261 
     | 
    
         
            +
            pnpm dev
         
     | 
| 
      
 262 
     | 
    
         
            +
             
     | 
| 
      
 263 
     | 
    
         
            +
            # 构建
         
     | 
| 
      
 264 
     | 
    
         
            +
            pnpm build
         
     | 
| 
      
 265 
     | 
    
         
            +
             
     | 
| 
      
 266 
     | 
    
         
            +
            # 发布
         
     | 
| 
      
 267 
     | 
    
         
            +
            pnpm release
         
     | 
| 
      
 268 
     | 
    
         
            +
            ```
         
     | 
| 
      
 269 
     | 
    
         
            +
             
     | 
| 
      
 270 
     | 
    
         
            +
            ### 代码规范
         
     | 
| 
      
 271 
     | 
    
         
            +
             
     | 
| 
      
 272 
     | 
    
         
            +
            项目使用 TypeScript 强类型检查,请确保所有代码通过类型检查。
         
     | 
| 
      
 273 
     | 
    
         
            +
             
     | 
| 
      
 274 
     | 
    
         
            +
            ### 提交流程
         
     | 
| 
      
 275 
     | 
    
         
            +
             
     | 
| 
      
 276 
     | 
    
         
            +
            使用 commit-and-tag-version 进行版本管理,提交前请确保代码已通过测试。
         
     | 
| 
      
 277 
     | 
    
         
            +
             
     | 
| 
      
 278 
     | 
    
         
            +
            ## 常见问题
         
     | 
| 
      
 279 
     | 
    
         
            +
             
     | 
| 
      
 280 
     | 
    
         
            +
            ### Q: 为什么工作流编辑器无法保存?
         
     | 
| 
      
 281 
     | 
    
         
            +
             
     | 
| 
      
 282 
     | 
    
         
            +
            A: 请检查是否调用了 `getWorkflowXml()` 方法获取XML内容,该方法返回Promise,需要使用 `await` 或 `.then()` 处理。
         
     | 
| 
      
 283 
     | 
    
         
            +
             
     | 
| 
      
 284 
     | 
    
         
            +
            ### Q: 如何自定义节点图标?
         
     | 
| 
      
 285 
     | 
    
         
            +
             
     | 
| 
      
 286 
     | 
    
         
            +
            A: 可以通过扩展 BPMN.js 的 PaletteProvider 来添加自定义节点。具体可参考 `packages/components/Workflow/palette/` 下的实现。
         
     | 
| 
      
 287 
     | 
    
         
            +
             
     | 
| 
      
 288 
     | 
    
         
            +
            ### Q: 如何处理表单权限与后端的交互?
         
     | 
| 
      
 289 
     | 
    
         
            +
             
     | 
| 
      
 290 
     | 
    
         
            +
            A: 可通过 `getPermissionJSON()` 获取权限配置JSON,然后发送至后端保存。加载时通过 `setPermissionByFields()` 方法恢复配置。
         
     | 
| 
      
 291 
     | 
    
         
            +
             
     | 
| 
      
 292 
     | 
    
         
            +
            ## 参考文档
         
     | 
| 
      
 293 
     | 
    
         
            +
             
     | 
| 
      
 294 
     | 
    
         
            +
            1. [BPMN.js 官方文档](https://bpmn.io/toolkit/bpmn-js/)
         
     | 
| 
      
 295 
     | 
    
         
            +
            2. [Vue 3 组件开发指南](https://v3.vuejs.org/guide/component-basics.html)
         
     | 
| 
      
 296 
     | 
    
         
            +
            3. [Activiti 工作流引擎文档](https://www.activiti.org/documentation)
         
     | 
| 
      
 297 
     | 
    
         
            +
            4. [Vue 3 组合式 API 参考](https://v3.vuejs.org/api/composition-api.html)
         
     | 
| 
      
 298 
     | 
    
         
            +
            5. [Vite 构建工具文档](https://vitejs.dev/guide/)
         
     | 
| 
      
 299 
     | 
    
         
            +
             
     | 
| 
       35 
300 
     | 
    
         |