@luckzz/vue-logicflow-designer 0.0.0-stage → 0.0.1
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 +415 -3
- package/dist/engine-core-DEblhuLi.js +7686 -0
- package/dist/engine-core.es.js +23 -0
- package/dist/index.es.js +31 -0
- package/dist/logicflow-designer.css +1 -0
- package/dist/logicflow-designer2.css +1 -0
- package/dist/logicflow-designer3.css +1 -0
- package/dist/space-air-plugin.es.js +280 -0
- package/dist/workspace-studio.es.js +4423 -0
- package/package.json +81 -4
package/README.md
CHANGED
|
@@ -1,3 +1,415 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
# LiteFlow Designer
|
|
2
|
+
|
|
3
|
+
> 基于 **Vue 3 + LogicFlow + ElementPlus** 的独立流程编排拖拽设计器组件,对标 [LiteFlow](https://liteflow.cc/) 规则引擎,支持可视化编排、XML / DSL / EL 格式转换、流程模拟执行,可作为 Vue3 组件库独立打包被其他项目引用。
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 目录
|
|
8
|
+
|
|
9
|
+
- [快速开始](#快速开始)
|
|
10
|
+
- [功能特性](#功能特性)
|
|
11
|
+
- [节点类型参考](#节点类型参考)
|
|
12
|
+
- [技术栈](#技术栈)
|
|
13
|
+
- [对外接口](#对外接口)
|
|
14
|
+
- [外部引用集成](#外部引用集成)
|
|
15
|
+
- [项目结构](#项目结构)
|
|
16
|
+
- [架构说明](#架构说明)
|
|
17
|
+
- [开发指南](#开发指南)
|
|
18
|
+
- [构建打包](#构建打包)
|
|
19
|
+
- [开发阶段](#开发阶段)
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## 快速开始
|
|
24
|
+
|
|
25
|
+
### 环境要求
|
|
26
|
+
|
|
27
|
+
- **Node.js** >= 18
|
|
28
|
+
- **npm** >= 9
|
|
29
|
+
|
|
30
|
+
### 安装依赖并启动
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
npm install
|
|
34
|
+
npm run dev
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
浏览器自动打开 `http://localhost:3000`,进入流程设计器预览页。
|
|
38
|
+
|
|
39
|
+
> 开发模式下 [`views/Designer.vue`](src/views/Designer.vue) 引用 [`DesignerPanel.vue`](src/components/designer/DesignerPanel.vue),可在此页面调试所有功能。
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## 功能特性
|
|
44
|
+
|
|
45
|
+
### 画布操作
|
|
46
|
+
|
|
47
|
+
| 功能 | 说明 |
|
|
48
|
+
|------|------|
|
|
49
|
+
| ✅ 自动布局 | dagre LR 层次布局,节点增删后自动触发 |
|
|
50
|
+
| ✅ 缩放滑块 | 画布右侧纵向滑块,范围 25% ~ 200% |
|
|
51
|
+
| ✅ 滚轮缩放 / 平移 | 画布拖拽平移 + 鼠标滚轮缩放 |
|
|
52
|
+
| ✅ 网格 / 对齐线 | 背景网格 + 拖拽对齐辅助线 |
|
|
53
|
+
| ✅ 撤销 / 重做 | Ctrl+Z / Ctrl+Y |
|
|
54
|
+
| ✅ 小地图 | 画布工具栏一键开关 |
|
|
55
|
+
| ✅ 自适应画布 | 工具栏 fit 按钮 / 窗口尺寸变化自适应 |
|
|
56
|
+
|
|
57
|
+
### 节点操作
|
|
58
|
+
|
|
59
|
+
| 功能 | 说明 |
|
|
60
|
+
|------|------|
|
|
61
|
+
| ✅ 连线添加节点 | 边线中点 `+` 按钮追加,**唯一添加方式** |
|
|
62
|
+
| ✅ 选中 / 删除 | 点选高亮,Delete 键删除,自动重连上下游 |
|
|
63
|
+
| ✅ 复制粘贴 | Ctrl+C / Ctrl+V |
|
|
64
|
+
| ✅ 左侧面板 | SidePanel 展示脚本节点与流程链,InsertNodeDialog 按分类展示可插入节点 |
|
|
65
|
+
| ❌ 禁止拖拽 | 节点不可拖拽移动 |
|
|
66
|
+
| ❌ 禁止删除 | START / END 节点不可删除 |
|
|
67
|
+
|
|
68
|
+
### 边线与分支
|
|
69
|
+
|
|
70
|
+
| 功能 | 说明 |
|
|
71
|
+
|------|------|
|
|
72
|
+
| ✅ polyline 折线 | 直角折线连线,中点带 `+` 添加按钮 |
|
|
73
|
+
| ✅ 边线选中 | 高亮显示 + 条件表达式显示 |
|
|
74
|
+
| ✅ 自动聚合 | WHEN/SWITCH/IF/FOR/WHILE/ITERATOR 创建时自动生成 AND 聚合节点 |
|
|
75
|
+
| ✅ IF 分支 | 支持 true / false 双分支,属性面板可管理 |
|
|
76
|
+
| ✅ PRE / FINALLY | 前置/后置容器,仅允许在 THEN 容器内创建 |
|
|
77
|
+
| ✅ 递归清理 | 分支删除时递归清理到 AND 节点并重连 |
|
|
78
|
+
| ❌ 禁止删除边线 | 边线仅随节点删除而连带删除 |
|
|
79
|
+
| ❌ AND 节点受限 | AND 不可手动创建/删除 |
|
|
80
|
+
|
|
81
|
+
### 数据导入导出
|
|
82
|
+
|
|
83
|
+
| 格式 | 说明 |
|
|
84
|
+
|------|------|
|
|
85
|
+
| ✅ XML | 顶层数据模型(脚本 + 流程链),TopToolbar 导入/查看 |
|
|
86
|
+
| ✅ DSL | 画布工具栏导入/查看 LiteFlow 规则 DSL |
|
|
87
|
+
| ✅ EL | 画布工具栏导入 LiteFlow EL 表达式(链式风格) |
|
|
88
|
+
| ✅ JSON | FlowData 内部格式,@save / @change 事件传出 |
|
|
89
|
+
|
|
90
|
+
### 流程模拟
|
|
91
|
+
|
|
92
|
+
| 功能 | 说明 |
|
|
93
|
+
|------|------|
|
|
94
|
+
| ✅ 模拟面板 | 画布工具栏「播放」按钮打开 SimulatePanel |
|
|
95
|
+
| ✅ 执行模式 | 单步执行 / 自动执行(可调速度) |
|
|
96
|
+
| ✅ 路径高亮 | 执行路径实时高亮显示 |
|
|
97
|
+
| ✅ 模拟日志 | 实时模拟日志输出 |
|
|
98
|
+
|
|
99
|
+
### 对外能力
|
|
100
|
+
|
|
101
|
+
| 能力 | 说明 |
|
|
102
|
+
|------|------|
|
|
103
|
+
| ✅ `@save` 事件 | 保存时传出当前流程 XML 数据 |
|
|
104
|
+
| ✅ `@change` 事件 | 流程变更时实时传出最新 XML |
|
|
105
|
+
| ✅ `getSnapshot()` | 获取画布截图(base64 PNG) |
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## 节点类型参考
|
|
110
|
+
|
|
111
|
+
### 流程控制 (control)
|
|
112
|
+
|
|
113
|
+
| 类型 | 名称 | 形状 | 颜色 | 说明 |
|
|
114
|
+
|------|------|------|------|------|
|
|
115
|
+
| `THEN` | 串行 | ▬ 矩形 | `#1890FF` | 顺序执行后续节点 |
|
|
116
|
+
| `PRE` | 前置 | ▬ 矩形 | `#1890FF` | 流程开始前串行执行 |
|
|
117
|
+
| `FINALLY` | 后置 | ▬ 矩形 | `#1890FF` | 流程结束后串行执行(不受异常影响) |
|
|
118
|
+
| `WHEN` | 并行 | ◇ 菱形 | `#1890FF` | 并行执行多个分支,需聚合 |
|
|
119
|
+
| `SWITCH` | 选择 | ◇ 菱形 | `#2F54EB` | 条件分支选择,需聚合 |
|
|
120
|
+
| `IF` | 条件 | ◇ 菱形 | `#2F54EB` | 条件判断,支持 true/false 分支 |
|
|
121
|
+
| `FOR` | 循环 | ⬡ 六边形 | `#531DAB` | 固定次数循环,需聚合 |
|
|
122
|
+
| `WHILE` | 条件循环 | ⬡ 六边形 | `#531DAB` | 条件循环,需聚合 |
|
|
123
|
+
| `ITERATOR` | 迭代器 | ⬡ 六边形 | `#531DAB` | 遍历集合,需聚合 |
|
|
124
|
+
|
|
125
|
+
### 业务组件 (component)
|
|
126
|
+
|
|
127
|
+
| 类型 | 名称 | 形状 | 颜色 | 说明 |
|
|
128
|
+
|------|------|------|------|------|
|
|
129
|
+
| `CMP` | 组件 | ▬ 矩形 | `#52C41A` | 普通业务组件 |
|
|
130
|
+
| `SCRIPT` | 脚本 | ▬ 矩形 | `#52C41A` | Groovy / JavaScript 脚本节点 |
|
|
131
|
+
| `SUB_FLOW` | 子流程 | ▬ 矩形 | `#52C41A` | 子流程引用节点 |
|
|
132
|
+
|
|
133
|
+
### 特殊节点 (special)
|
|
134
|
+
|
|
135
|
+
| 类型 | 名称 | 形状 | 颜色 | 说明 |
|
|
136
|
+
|------|------|------|------|------|
|
|
137
|
+
| `START` | 开始 | ● 圆形 | `#722ED1` | 流程起点(唯一,不可删除) |
|
|
138
|
+
| `END` | 结束 | ● 圆形 | `#FF4D4F` | 流程终点(唯一,不可删除) |
|
|
139
|
+
| `AND` | 聚合 | ● 圆形 | `#FAAD14` | 自动生成,不可手动操作 |
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## 技术栈
|
|
144
|
+
|
|
145
|
+
| 技术 | 版本 | 用途 |
|
|
146
|
+
|------|------|------|
|
|
147
|
+
| Vue 3 | ^3.5 | 前端框架 (Composition API) |
|
|
148
|
+
| Vite | ^6.0 | 构建工具 + 组件库打包 |
|
|
149
|
+
| ElementPlus | ^2.9 | UI 组件库 |
|
|
150
|
+
| @logicflow/core | ^2.0 | 流程图画布核心引擎(内置 Preact) |
|
|
151
|
+
| @logicflow/extension | ^2.0 | 扩展(Snapshot / MiniMap 等) |
|
|
152
|
+
| dagre | ^0.8 | 自动布局算法(LR 层次布局,LogicFlow 内置) |
|
|
153
|
+
| CodeMirror 6 | ^6.0 | 脚本编辑器 |
|
|
154
|
+
| highlight.js | ^11.11 | DSL/XML 语法高亮 |
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## 对外接口
|
|
159
|
+
|
|
160
|
+
### Props
|
|
161
|
+
|
|
162
|
+
| Prop | 类型 | 必填 | 默认值 | 说明 |
|
|
163
|
+
|------|------|------|--------|------|
|
|
164
|
+
| `data` | `string \| object` | 否 | `null` | 流程 XML 字符串或 FlowModel 对象 |
|
|
165
|
+
| `readonly` | `boolean` | 否 | `false` | 只读模式 |
|
|
166
|
+
| `defaultLanguage` | `string` | 否 | `'java'` | 脚本默认语言 |
|
|
167
|
+
|
|
168
|
+
### Events
|
|
169
|
+
|
|
170
|
+
| Event | 参数 | 说明 |
|
|
171
|
+
|-------|------|------|
|
|
172
|
+
| `@save` | `(xml: string)` | 用户点击保存时触发,传出当前 XML |
|
|
173
|
+
| `@change` | `(xml: string)` | 流程数据变更时触发,传出最新 XML |
|
|
174
|
+
|
|
175
|
+
### Expose
|
|
176
|
+
|
|
177
|
+
| 方法 | 返回值 | 说明 |
|
|
178
|
+
|------|--------|------|
|
|
179
|
+
| `getSnapshot()` | `Promise<string>` | 获取当前画布截图(base64 PNG) |
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## 外部引用集成
|
|
184
|
+
|
|
185
|
+
### 安装
|
|
186
|
+
|
|
187
|
+
```bash
|
|
188
|
+
npm install liteflow-designer
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### 按需引入(推荐)
|
|
192
|
+
|
|
193
|
+
```vue
|
|
194
|
+
<template>
|
|
195
|
+
<DesignerPanel
|
|
196
|
+
ref="designerRef"
|
|
197
|
+
:data="flowXml"
|
|
198
|
+
:readonly="false"
|
|
199
|
+
@save="handleSave"
|
|
200
|
+
@change="handleChange"
|
|
201
|
+
/>
|
|
202
|
+
</template>
|
|
203
|
+
|
|
204
|
+
<script setup>
|
|
205
|
+
import { ref } from 'vue'
|
|
206
|
+
import { DesignerPanel } from 'liteflow-designer'
|
|
207
|
+
import 'liteflow-designer/dist/style.css'
|
|
208
|
+
|
|
209
|
+
const designerRef = ref(null)
|
|
210
|
+
const flowXml = ref('<flow>...</flow>')
|
|
211
|
+
|
|
212
|
+
function handleSave(xml) {
|
|
213
|
+
console.log('保存流程:', xml)
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
function handleChange(xml) {
|
|
217
|
+
console.log('变更:', xml)
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
async function exportImage() {
|
|
221
|
+
const base64 = await designerRef.value.getSnapshot()
|
|
222
|
+
}
|
|
223
|
+
</script>
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
### 全局注册
|
|
227
|
+
|
|
228
|
+
```js
|
|
229
|
+
import { createApp } from 'vue'
|
|
230
|
+
import LiteFlowDesigner from 'liteflow-designer'
|
|
231
|
+
import 'liteflow-designer/dist/style.css'
|
|
232
|
+
|
|
233
|
+
const app = createApp(App)
|
|
234
|
+
app.use(LiteFlowDesigner) // 注册为 <lite-flow-designer />
|
|
235
|
+
app.mount('#app')
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
### FlowModel / XML 数据模型
|
|
239
|
+
|
|
240
|
+
```js
|
|
241
|
+
import { FlowModel, xmlToFlowModel, flowModelToXML } from 'liteflow-designer'
|
|
242
|
+
|
|
243
|
+
const model = xmlToFlowModel('<flow>...</flow>')
|
|
244
|
+
const xml = flowModelToXML(model)
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
## 项目结构
|
|
250
|
+
|
|
251
|
+
```
|
|
252
|
+
liteflow/
|
|
253
|
+
├── index.html
|
|
254
|
+
├── package.json
|
|
255
|
+
├── vite.config.js
|
|
256
|
+
├── README.md
|
|
257
|
+
├── ARCHITECTURE.md # 详细架构设计文档
|
|
258
|
+
│
|
|
259
|
+
├── src/
|
|
260
|
+
│ ├── main.js # 开发预览入口
|
|
261
|
+
│ ├── index.js # 组件库对外导出
|
|
262
|
+
│ ├── App.vue
|
|
263
|
+
│ │
|
|
264
|
+
│ ├── views/
|
|
265
|
+
│ │ └── Designer.vue # 本地开发预览页
|
|
266
|
+
│ │
|
|
267
|
+
│ ├── components/designer/ # 设计器组件包 ⭐
|
|
268
|
+
│ │ ├── DesignerPanel.vue # 对外顶层容器
|
|
269
|
+
│ │ ├── TopToolbar.vue # 顶部 XML 工具栏
|
|
270
|
+
│ │ ├── SidePanel.vue # 左侧脚本/链列表面板
|
|
271
|
+
│ │ ├── FlowCanvas.vue # 中央画布
|
|
272
|
+
│ │ ├── CanvasToolbar.vue # 画布悬浮工具栏(DSL/缩放/模拟)
|
|
273
|
+
│ │ ├── PropsPanel.vue # 右侧属性面板
|
|
274
|
+
│ │ ├── SimulatePanel.vue # 流程模拟浮动面板
|
|
275
|
+
│ │ ├── InsertNodeDialog.vue # 插入/追加节点弹窗
|
|
276
|
+
│ │ ├── ScriptDialog.vue # 脚本编辑弹窗
|
|
277
|
+
│ │ ├── ScriptEditor.vue # CodeMirror 编辑器
|
|
278
|
+
│ │ ├── ChainDialog.vue # 流程链编辑弹窗
|
|
279
|
+
│ │ ├── nodes/ # LogicFlow 自定义 Preact 节点/边
|
|
280
|
+
│ │ │ ├── EdgePlusButton.jsx
|
|
281
|
+
│ │ │ └── LiteFlow*Node.jsx
|
|
282
|
+
│ │ ├── props/ # 节点类型属性编辑子组件
|
|
283
|
+
│ │ └── sub-keywords/ # 子关键字表单控件
|
|
284
|
+
│ │
|
|
285
|
+
│ ├── composables/
|
|
286
|
+
│ │ ├── useFlowDesigner.js # 画布核心逻辑
|
|
287
|
+
│ │ └── useFlowManager.js # XML/链/脚本管理
|
|
288
|
+
│ │
|
|
289
|
+
│ ├── config/
|
|
290
|
+
│ │ ├── NodeEnum.js # 节点类型枚举
|
|
291
|
+
│ │ ├── KeywordEnum.js # 子关键字枚举
|
|
292
|
+
│ │ ├── EdgeEnum.js # 边类型枚举
|
|
293
|
+
│ │ └── nodes.js # 节点视觉配置
|
|
294
|
+
│ │
|
|
295
|
+
│ ├── core/
|
|
296
|
+
│ │ ├── FlowData.js # 单链图数据 + DSL/EL 转换
|
|
297
|
+
│ │ ├── FlowModel.js # XML 顶层数据模型
|
|
298
|
+
│ │ ├── DSLParser.js / ELParser.js / XMLParser.js
|
|
299
|
+
│ │ ├── Simulator.js # 流程模拟引擎
|
|
300
|
+
│ │ ├── ELNode.js # AST 转换管道(graph↔tree↔text)
|
|
301
|
+
│ │ ├── FlowParserBase.js # 解析共用工具
|
|
302
|
+
│ │ ├── utils/ # 画布辅助工具
|
|
303
|
+
│ │ │ ├── containerUtils.js # THEN/PRE/FINALLY 容器约束
|
|
304
|
+
│ │ │ └── ifBranchUtils.js # IF 分支边管理
|
|
305
|
+
│ │ └── ast/ # AST 节点类 + 子关键字注册表
|
|
306
|
+
│ │
|
|
307
|
+
│ ├── router/
|
|
308
|
+
│ ├── styles/
|
|
309
|
+
│ │ └── global.css
|
|
310
|
+
│ └── views/
|
|
311
|
+
│
|
|
312
|
+
└── dist/ # 构建产物
|
|
313
|
+
├── liteflow-designer.es.js
|
|
314
|
+
├── liteflow-designer.umd.js
|
|
315
|
+
└── style.css
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
---
|
|
319
|
+
|
|
320
|
+
## 架构说明
|
|
321
|
+
|
|
322
|
+
详细分层设计、数据流、AST 管道说明见 [ARCHITECTURE.md](./ARCHITECTURE.md)。
|
|
323
|
+
|
|
324
|
+
**核心要点:**
|
|
325
|
+
|
|
326
|
+
- **双模式**:开发预览应用 + 可发布组件库
|
|
327
|
+
- **双数据模型**:对外 XML(FlowModel),链内 JSON 图(FlowData)
|
|
328
|
+
- **连线驱动**:仅通过边线 `+` 追加节点
|
|
329
|
+
- **Preact ↔ Vue**:LogicFlow 自定义组件用 JSX,经 eventCenter 通信
|
|
330
|
+
|
|
331
|
+
---
|
|
332
|
+
|
|
333
|
+
## 开发指南
|
|
334
|
+
|
|
335
|
+
### 核心设计理念
|
|
336
|
+
|
|
337
|
+
| 理念 | 说明 |
|
|
338
|
+
|------|------|
|
|
339
|
+
| **连线驱动** | 所有节点通过边线上的 `+` 按钮追加,禁止自由拖拽 |
|
|
340
|
+
| **分支即聚合** | 分支节点创建时自动生成 AND 聚合节点,删除时递归清理 |
|
|
341
|
+
| **内部封装** | FlowData 完全内部化,外部只需关心 XML / `@save` / `@change` |
|
|
342
|
+
| **独立打包** | 整体可作为 Vue3 组件库被其他项目引用 |
|
|
343
|
+
|
|
344
|
+
### 开发约定
|
|
345
|
+
|
|
346
|
+
- **Preact ↔ Vue 通信**:LogicFlow 自定义节点/边用 Preact 编写(`.jsx`),通过 `eventCenter` 与 Vue 侧通信
|
|
347
|
+
- **节点类型策略**:通过 `properties.nodeType` 区分业务类型,自定义视图在 `nodes/` 目录
|
|
348
|
+
- **自动布局**:dagre(`rankdir: 'LR'`)计算坐标,防抖 300ms 自动触发
|
|
349
|
+
- **状态注入**:`provideDesigner()` / `injectDesigner()` 向子组件注入画布状态
|
|
350
|
+
|
|
351
|
+
### 添加新节点类型
|
|
352
|
+
|
|
353
|
+
1. 在 [`src/config/NodeEnum.js`](src/config/NodeEnum.js) 添加类型常量
|
|
354
|
+
2. 在 [`src/config/nodes.js`](src/config/nodes.js) 添加视觉配置
|
|
355
|
+
3. 如需分支行为,更新 `BRANCH_NODE_TYPES` 等集合
|
|
356
|
+
4. 在 [`src/components/designer/props/`](src/components/designer/props/) 添加属性编辑组件
|
|
357
|
+
5. 在 [`src/core/ast/`](src/core/ast/) 添加 AST 节点类并 `ELNode.register()`
|
|
358
|
+
|
|
359
|
+
### 手动测试
|
|
360
|
+
|
|
361
|
+
1. **开发预览**:`npm run dev`,操作所有功能
|
|
362
|
+
2. **构建验证**:`npm run build:lib`,在外部项目引用打包产物
|
|
363
|
+
|
|
364
|
+
> 后续建议引入 **Vitest** + **@vue/test-utils** 进行组件单元测试。
|
|
365
|
+
|
|
366
|
+
---
|
|
367
|
+
|
|
368
|
+
## 构建打包
|
|
369
|
+
|
|
370
|
+
### 组件库打包
|
|
371
|
+
|
|
372
|
+
```bash
|
|
373
|
+
npm run build:lib
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
| 文件 | 格式 | 说明 |
|
|
377
|
+
|------|------|------|
|
|
378
|
+
| `liteflow-designer.es.js` | ES Module | 支持 `import` 按需引入 |
|
|
379
|
+
| `liteflow-designer.umd.js` | UMD | 支持 `<script>` 标签或 CommonJS |
|
|
380
|
+
| `style.css` | CSS | 组件样式 |
|
|
381
|
+
|
|
382
|
+
### External 依赖
|
|
383
|
+
|
|
384
|
+
以下依赖设为 **external**,不打包进组件库,由使用方提供:
|
|
385
|
+
|
|
386
|
+
`vue` · `element-plus` · `@logicflow/core` · `@logicflow/extension` · `preact` · `@codemirror/*`
|
|
387
|
+
|
|
388
|
+
### 普通构建
|
|
389
|
+
|
|
390
|
+
```bash
|
|
391
|
+
npm run build
|
|
392
|
+
npm run preview
|
|
393
|
+
```
|
|
394
|
+
|
|
395
|
+
---
|
|
396
|
+
|
|
397
|
+
## 开发阶段
|
|
398
|
+
|
|
399
|
+
| 阶段 | 内容 | 状态 |
|
|
400
|
+
|------|------|------|
|
|
401
|
+
| Phase 1 | 项目骨架:DesignerPanel 布局、FlowCanvas 封装、禁止拖拽 | ✅ |
|
|
402
|
+
| Phase 2 | 边线 + 按钮:EdgePlusButton、InsertNodeDialog | ✅ |
|
|
403
|
+
| Phase 3 | 节点删除重连、分支递归删除 + AND 管理 | ✅ |
|
|
404
|
+
| Phase 4 | 自动布局:dagre LR 层次布局 | ✅ |
|
|
405
|
+
| Phase 5 | FlowData + DSL/EL + XML 数据模型 | ✅ |
|
|
406
|
+
| Phase 6 | 工具栏 + 属性面板 + 缩放 + getSnapshot | ✅ |
|
|
407
|
+
| Phase 7 | 流程模拟:Simulator + SimulatePanel | ✅ |
|
|
408
|
+
| Phase 8 | 组件打包:library mode | ✅ |
|
|
409
|
+
| Phase 9 | PRE/FINALLY 容器 + IF 双分支 | ✅ |
|
|
410
|
+
|
|
411
|
+
---
|
|
412
|
+
|
|
413
|
+
## License
|
|
414
|
+
|
|
415
|
+
[Apache-2.0](LICENSE)
|