# flow **Repository Path**: lowcode-china/flow ## Basic Information - **Project Name**: flow - **Description**: 原生js实现的工作流引擎,支持拖拽节点,设置节点和边,控制节点和边的样式等。 - **Primary Language**: JavaScript - **License**: MIT - **Default Branch**: master - **Homepage**: https://mindlink.turntip.cn - **GVP Project**: No ## Statistics - **Stars**: 16 - **Forks**: 6 - **Created**: 2025-05-21 - **Last Updated**: 2025-11-19 ## Categories & Tags **Categories**: workflow **Tags**: flow, flow-engine, JavaScript ## README # 🚀 AI-Flow - 可视化工作流设计器
![Version](https://img.shields.io/badge/version-1.0.0-blue.svg) ![License](https://img.shields.io/badge/license-MIT-green.svg) ![JavaScript](https://img.shields.io/badge/JavaScript-ES6+-yellow.svg) ![jsPlumb](https://img.shields.io/badge/jsPlumb-Community-orange.svg) **基于原生JavaScript的可视化工作流设计器,集成AI智能助手,让工作流设计更简单、更智能** [在线演示](#-在线演示) • [快速开始](#-快速开始) • [功能特性](#-功能特性) • [技术架构](#-技术架构) • [更新日志](#-更新日志)
--- ## 📸 项目演示 ![可视化工作流设计器](./demo.gif) > **提示**:点击上方GIF查看完整演示效果,或访问在线演示体验完整功能 --- ## ✨ 项目亮点 ### 🎯 核心优势 - **🤖 AI智能辅助** - 自然语言生成工作流,智能优化建议,上下文感知节点推荐 - **🎨 可视化编辑** - 拖拽式节点创建,所见即所得的设计体验 - **⚡ 轻量级架构** - 纯原生JavaScript实现,无框架依赖,性能优异 - **🔧 高度可扩展** - 模块化设计,易于二次开发和功能扩展 - **🎬 流畅动画** - 丰富的交互动画和过渡效果,提升用户体验 - **📊 完整功能** - 支持预览、导出、缩放、缩略图等专业功能 ### 🏆 技术特色 - ✅ **零依赖核心** - 仅使用jsPlumb进行连接绘制,核心逻辑完全自主实现 - ✅ **AI算法集成** - 关键词匹配、规则引擎、智能分析等多维度AI能力 - ✅ **响应式设计** - 适配不同屏幕尺寸,提供优秀的跨设备体验 - ✅ **性能优化** - DOM操作优化、事件委托、硬件加速等多项性能优化 --- ## 🎯 功能特性 ### 📦 节点系统 支持**12种**不同类型的工作流节点,覆盖常见业务场景: | 节点类型 | 图标 | 用途 | 颜色主题 | |---------|------|------|---------| | 🚀 **开始** | → | 工作流起始节点 | 蓝色 | | ⌨️ **输入** | 💬 | 接收用户或系统输入 | 天蓝色 | | ⚙️ **文本处理** | 🔄 | 数据格式转换和处理 | 绿色 | | 💻 **代码** | `` | 自定义代码执行 | 橙色 | | ❓ **条件** | ❓ | 条件分支判断 | 红色 | | 🔁 **循环** | 🔁 | 循环处理逻辑 | 紫色 | | 💾 **数据库** | 💾 | 数据库操作 | 深蓝色 | | 🌐 **API** | 🌐 | HTTP API调用 | 青色 | | 📤 **输出** | 📤 | 结果输出 | 灰色 | | ⏰ **定时器** | ⏰ | 定时触发任务 | 粉色 | | 🔔 **通知** | 🔔 | 消息通知发送 | 黄色 | | 📦 **函数** | 📦 | 函数调用 | 紫色 | ### 🤖 AI智能助手 #### 1. **智能生成工作流** - 📝 自然语言描述需求,AI自动生成完整工作流 - 🎯 支持多种场景模板(登录流程、数据处理、定时任务等) - 🎬 生成过程可视化,带动画效果 #### 2. **智能优化分析** - 🔍 自动检测工作流问题(孤立节点、缺少开始节点等) - 📊 性能评分和优化建议 - 💡 架构改进建议(错误处理、重试机制等) #### 3. **上下文节点推荐** - 🎯 基于当前选中节点,智能推荐下一个节点 - 📋 推荐理由说明,帮助理解节点关系 - ⚡ 一键添加推荐节点并自动连接 #### 4. **AI对话助手** - 💬 自然语言交互,解答工作流设计问题 - 🎓 提供最佳实践和专业建议 - 🔧 支持命令执行和操作指导 ### 🎨 可视化编辑 - **拖拽创建** - 从左侧面板拖拽节点到画布即可创建 - **连接绘制** - 点击节点端点自动绘制连接线 - **属性编辑** - 右侧面板实时编辑节点和连接属性 - **样式定制** - 支持4种节点样式(默认、现代、扁平、圆角) - **连接线样式** - 支持贝塞尔曲线、直线、流程图等多种样式 ### 📊 预览与导出 - **可视化预览** - 完整的工作流预览,支持交互操作 - **JSON导出** - 导出标准JSON格式,便于保存和分享 - **工作流信息** - 显示节点数量、连接数量等统计信息 - **节点列表** - 清晰的节点列表展示 ### 🔧 画布操作 - **缩放控制** - 支持放大、缩小、重置,快捷键Ctrl+滚轮 - **缩略图导航** - 右下角缩略图,快速定位和导航 - **网格背景** - 可自定义网格大小和颜色 - **背景设置** - 支持网格和纯色两种背景模式 --- ## 🏗️ 技术架构 ### 整体架构 ``` ┌─────────────────────────────────────────────────────┐ │ 前端展示层 │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ 节点面板 │ │ 画布区域 │ │ 属性面板 │ │ │ └──────────┘ └──────────┘ └──────────┘ │ └─────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────┐ │ 业务逻辑层 │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ 节点管理 │ │ 连接管理 │ │ 状态管理 │ │ │ └──────────┘ └──────────┘ └──────────┘ │ └─────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────┐ │ AI智能模块 │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ 流程生成 │ │ 智能优化 │ │ 节点推荐 │ │ │ └──────────┘ └──────────┘ └──────────┘ │ └─────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────┐ │ 底层支撑层 │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ jsPlumb │ │ DOM操作 │ │ 事件系统 │ │ │ └──────────┘ └──────────┘ └──────────┘ │ └─────────────────────────────────────────────────────┘ ``` ### 技术栈 | 技术 | 版本/说明 | 用途 | |------|----------|------| | **JavaScript** | ES6+ | 核心业务逻辑实现 | | **HTML5** | - | 页面结构和语义化 | | **CSS3** | - | 样式、动画和响应式布局 | | **jsPlumb** | Community Edition | 节点连接和拖拽功能 | ### 核心模块 #### 1. **节点管理模块** - 节点创建、更新、删除、选择 - 节点数据持久化 - 节点样式管理 #### 2. **连接管理模块** - 基于jsPlumb的连接绘制 - 连接线样式自定义 - 连接验证和约束 #### 3. **画布管理模块** - 缩放和平移控制 - 背景设置(网格/纯色) - 缩略图实时更新 #### 4. **AI智能模块** - **工作流生成器** - 自然语言解析和流程生成 - **智能优化引擎** - 结构分析和性能优化 - **节点推荐系统** - 上下文感知推荐 - **AI对话助手** - 自然语言交互 #### 5. **属性面板模块** - 节点属性编辑 - 连接线属性编辑 - 高级配置(超时、重试、优先级等) ### 设计模式 - **模块化设计** - 功能模块清晰分离,易于维护 - **事件驱动** - 基于DOM事件和自定义事件通信 - **单例模式** - jsPlumb实例统一管理 - **工厂模式** - 节点创建统一入口 - **观察者模式** - 节点选择和更新通知 ### 数据结构 #### 节点数据结构 ```javascript { id: "node-1", type: "code", position: { x: 100, y: 100 }, data: { name: "代码处理", code: "console.log('Hello')", description: "处理数据", timeout: 5000, retryCount: 0, retryDelay: 1000, enabled: true, priority: "medium", tags: ["processing"], style: "default" } } ``` #### 工作流数据结构 ```javascript { metadata: { name: "我的工作流", description: "描述", version: "1.0.0", permission: "private", createdAt: "2024-01-01T00:00:00Z" }, nodes: [...], connections: [...], backgroundSettings: { type: "grid", color: "#ffffff", gridSize: 20, gridColor: "#e0e0e0" } } ``` --- ## 🚀 快速开始 ### 环境要求 - 现代浏览器(Chrome 80+, Firefox 75+, Safari 13+, Edge 80+) - 支持ES6+语法 - 支持CSS Grid和Flexbox ### 安装方式 #### 方式一:直接使用(推荐) 1. **克隆项目** ```bash git clone cd flow ``` 2. **打开项目** ```bash # 直接打开index.html open index.html # 或使用本地服务器(推荐) python -m http.server 8000 # 然后访问 http://localhost:8000 ``` #### 方式二:集成到现有项目 1. **复制文件** ```bash # 复制以下文件到你的项目 - index.html - script.js - styles.css - draw.js (jsPlumb库) ``` 2. **引入依赖** ```html ``` ### 使用示例 #### 基础使用 ```javascript // 创建节点 const node = window.workflowAPI.createNode('code', 100, 100); // 更新节点数据 window.workflowAPI.updateNodeData(node.id, { name: '我的代码节点', code: 'console.log("Hello World");' }); // 获取所有节点 const nodes = window.workflowAPI.getNodes(); // 导出工作流 const workflow = { nodes: window.workflowAPI.getNodes(), connections: window.workflowAPI.getConnections() }; ``` #### AI功能使用 ```javascript // 生成工作流 const workflow = await generateWorkflowFromPrompt('创建一个用户登录流程'); // 优化工作流 const analysis = await analyzeAndOptimizeWorkflow(nodes, connections); // 获取节点推荐 const suggestions = getNodeSuggestions('start'); ``` --- ## 📖 使用指南 ### 创建节点 1. **拖拽创建**:从左侧节点面板拖拽节点类型到画布 2. **点击编辑**:点击节点打开右侧属性面板 3. **配置属性**:在属性面板中编辑节点名称、代码、描述等 ### 连接节点 1. **自动连接**:点击源节点的右侧端点,拖拽到目标节点的左侧端点 2. **编辑连接**:点击连接线,在属性面板中编辑标签、颜色、样式 3. **删除连接**:选中连接线后按Delete键 ### 使用AI助手 1. **打开AI面板**:点击右下角悬浮的AI助手按钮 2. **生成工作流**:在"生成流程"标签页输入需求描述 3. **智能优化**:在"智能优化"标签页分析当前工作流 4. **节点推荐**:选中节点后,在"节点推荐"标签页查看推荐 5. **AI对话**:在"AI对话"标签页与助手交互 ### 导出工作流 1. **预览工作流**:点击工具栏的"预览"按钮 2. **查看JSON**:在预览面板切换到"JSON结构"标签 3. **导出JSON**:点击"导出JSON"按钮下载工作流文件 --- ## 🔧 扩展开发 ### 添加新节点类型 ```javascript // 1. 添加节点图标 nodeTypeIcons['newType'] = `...`; // 2. 添加节点颜色 nodeTypeColors['newType'] = '#your-color'; nodeTypeTextColors['newType'] = '#your-text-color'; // 3. 添加节点名称 function getNodeName(type) { const nameMap = { newType: '新节点类型' }; return nameMap[type] || '节点'; } ``` ### 接入真实AI服务 ```javascript async function generateWorkflowFromPrompt(prompt) { // 替换为真实API调用 const response = await fetch('/api/ai/generate', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ prompt }) }); const workflow = await response.json(); return workflow; } ``` ### 自定义节点样式 ```javascript const nodeStyles = { custom: { name: '自定义样式', className: 'node-style-custom' } }; ``` 更多扩展开发指南,请参考 [技术文档](./doc.md) --- ## 🌐 在线演示 - **在线体验**:[点击访问在线演示](#)(待部署) - **演示视频**:查看项目根目录的 `demo.gif` --- ## 📊 项目统计 - **代码行数**:~2500+ 行 - **节点类型**:12种 - **AI功能**:4大模块 - **动画效果**:10+ 种 - **浏览器支持**:Chrome、Firefox、Safari、Edge --- ## 🤝 贡献指南 欢迎贡献代码、提出建议或报告问题! ### 贡献方式 1. **Fork** 本仓库 2. **创建** 特性分支 (`git checkout -b feature/AmazingFeature`) 3. **提交** 更改 (`git commit -m 'Add some AmazingFeature'`) 4. **推送** 到分支 (`git push origin feature/AmazingFeature`) 5. **开启** Pull Request ### 代码规范 - 使用ES6+语法 - 遵循现有代码风格 - 添加必要的注释 - 确保浏览器兼容性 --- ## 📝 更新日志 ### v1.0.0 (2025-11) #### ✨ 新功能 - 🎨 支持12种节点类型(开始、输入、文本处理、代码、条件、循环、数据库、API、输出、定时器、通知、函数) - 🤖 集成AI智能助手(生成工作流、智能优化、节点推荐、AI对话) - 🎬 添加生成动画效果(节点创建动画、连接线动画、进度提示) - 📊 支持工作流预览和JSON导出 - 🔧 支持画布缩放、缩略图导航 - 🎨 支持4种节点样式(默认、现代、扁平、圆角) - 📝 支持连接线样式自定义(贝塞尔曲线、直线、流程图等) #### 🐛 修复 - 修复节点拖拽时的文本选择问题 - 修复连接线选中状态显示 - 优化缩略图更新性能 #### 📚 文档 - 完善README文档 - 添加技术文档(doc.md) --- ## 🔗 相关项目 我们团队还开发了以下优秀的在线办公解决方案: 1. **[flowmix/docx 多模态文档编辑器](https://flowmix.turntip.cn)** - 支持多模态内容的文档编辑器 2. **[灵语AI文档](https://mindlink.turntip.cn)** - AI驱动的智能文档平台 3. **[JitWord 在线协同文档编辑器](https://jitword.com)** - 实时协同的在线Word编辑器 4. **[pxcharts 多维表格编辑器](http://pxcharts.com)** - 强大的多维表格编辑工具 5. **[H5-Dooring智能零代码平台](https://github.com/MrXujiang/h5-Dooring)** - 零代码H5页面搭建平台 --- ## 📄 许可证 本项目采用 [MIT License](./LICENSE) 许可证。 --- ## 👥 作者与支持 - **作者**:趣谈AI团队 - **微信**:cxzk_168 - **公众号**:趣谈AI(获取更多技术干货和项目进展) ### 关注我们 关注【趣谈AI】公众号,获取: - 📚 更多技术干货 - 🚀 项目最新进展 - 💡 开源实践分享 - 🎯 行业最佳实践 --- ## ⭐ Star History 如果这个项目对你有帮助,欢迎给个 Star ⭐️ [![Star History Chart](https://api.star-history.com/svg?repos=your-username/ai-flow&type=Date)](https://star-history.com/#your-username/ai-flow&Date) --- ## 🎯 未来规划 ### 短期目标 - [ ] 接入真实AI大模型(GPT-4/Claude) - [ ] 支持工作流导入功能 - [ ] 增加更多节点类型 - [ ] 支持节点分组功能 - [ ] 添加撤销/重做功能 ### 长期目标 - [ ] 工作流执行引擎 - [ ] 多人协作编辑 - [ ] 版本控制系统 - [ ] 工作流模板市场 - [ ] 移动端适配 - [ ] 插件系统 ---
**Made with ❤️ by 趣谈AI团队** [⬆ 回到顶部](#-ai-flow---可视化工作流设计器)