23年的时候就开始研究工作流,记得还在技术社区写了首个 React-Flow 的中文文档:

图片

后面结合很多粉丝和客户的反馈,慢慢迭代,发现它可以做很多事情。

图片

当然这两年大厂也开源了很多工作流的方案,所以我也打算正式把flowmix/flow 可视化工作流,开源一版, 供大家研究参考。

图片

开源地址:https://github.com/MrXujiang/flowmix-flow

下面和大家简单介绍一下这款工作流引擎。

    flowmix/flow 致力于提供一套开箱即用流程可视化搭建底座, 来支撑各种复杂工作流场景的设计. 

    图片

    同时汲取了市面上主流工作流引擎的设计经验, 并对性能做了极致的优化,  目前 flowmix/flow 的搭建性能和所见即所得的UI更新流畅度非常丝滑. 大家可以基于这套方案,结合AI技术轻松实现 AI Agent 工作流设计平台.

    图片

    接下来我就和大家介绍一下 flowmix/flow 的核心功能和使用场景. 

    ps:大家可以基于我的开源方案,使用AI Coding,实现各种复杂的工作流产品~

    技术架构

    图片

    下面和大家分享一下这个项目使用的技术栈,供大家参考:

    • Umi 4.x - 企业级前端应用框架

      • 基于 React 18

      • 内置路由、构建、部署等完整解决方案

      • 支持约定式路由和配置式路由

    • React 18 - 前端 UI 框架

      • 使用函数式组件 + Hooks

      • Suspense 懒加载优化

    • TypeScript 5.x - 类型安全的 JavaScript 超集

      • 提供完整的类型检查

      • 提升代码可维护性和开发体验

    UI 组件库

    • Ant Design 5.x

       - 企业级 UI 组件库

      • 提供 Button、Drawer、Popover、Tooltip 等组件

      • 内置主题定制能力

      • @ant-design/icons 图标库

    流程图核心

    • @xyflow/react 12.x - React 流程图库

      • 提供节点、边、画布等核心能力

      • 支持拖拽、缩放、平移

      • 高性能渲染引擎

    • @dagrejs/dagre 1.x - 有向图自动布局算法

      • 支持流程图自动排版

      • 优化节点位置计算

    拖拽交互

    • react-dnd 16.x - React 拖拽库

      • HTML5 拖拽 API 封装

      • 支持拖拽排序、拖拽创建

    • react-dnd-html5-backend 16.x - HTML5 拖拽后端

    • react-draggable 4.x - 元素拖拽组件

      • 支持元素自由拖拽和位置调整

    状态管理

    • Zustand 4.x

       - 轻量级状态管理库

      • 简洁的 API 设计

      • 支持时间旅行(撤销/重做)

      • 无需 Provider 包裹

    可视化与图表

    • @visactor/vchart 1.x

       - 可视化图表库

      • 支持多种图表类型

      • 高性能渲染

    工具库

    • nanoid 5.x - 唯一 ID 生成器

      • 小巧、安全、快速

      • 用于节点和边的 ID 生成

    • axios 1.x - HTTP 客户端

      • 用于 API 请求

      • 支持请求/响应拦截

    • classnames 2.x - CSS 类名管理

      • 条件类名组合

    • immutability-helper 3.x - 不可变数据操作

      • 简化复杂数据结构更新

    • react-use 17.x - React Hooks 工具集

      • 提供常用 Hooks

    • react-sticky-box 2.x - 粘性定位组件

    • refline.js 0.11.x - 参考线组件

      • 提供辅助对齐功能

    导出功能

    • dom-to-image 2.x - DOM 转图片

      • 支持导出流程图为图片

    • file-saver 2.x - 文件下载

      • 支持保存文件到本地

    核心功能介绍

    最近更新了几个非常有价值的功能, 这里和大家一一分享一下.

    1. 支持节点动画配置

    图片

    目前整套设计架构支持了多种类型的属性编辑, 比如样式数据动画等, 动画目前支持了海量的动画素材, 可以轻松给节点配置不同的动画效果, 并设置动画的时长, 次数等.

    2. 支持参考线吸附

    图片

    目前流程设计器的每个节点都支持参考线吸附, 大家可以更精准的设计工作流, 后续还会做更多设计辅助的优化, 让拖拽体验达到业内Top.

    3. 节点自动创建和自动连线

    图片

    目前我已经实现了单机节点, 可以在节点后面自动创建节点, 同时对整个工作流进行自动连线. 后期会实现点击“+”号, 支持选择不同的节点进行创建.

    4. 边的自动创建和节点自动化布局

    图片

    我们可以看到,在边上点击也会出现“+”号, 并且可以在两个节点之间创建新节点, 其他节点位置会自动计算, 并布局. 这块也是我写的一个布局算法实现的, 后续还会优化它, 支持更复杂的布局场景.

    5. 可操作的图层管理面板

    图片

    当画布中的元素很多时, 我们需要快速定位到具体的节点, 这个时候图层管理就非常重要了. 所以我也实现了图层管理面板, 并且支持节点反选图层. 图层面板可以多选组件, 选中的组件会在画布中出现选中状态. 后续会对图层面板实现更多的功能.

    开源地址:https://github.com/MrXujiang/flowmix-flow


    场景案例分享

    我最初设计 flowmix/flow 目的是让它实现自动化 AI Agent 生成, 后面越研究越发现它可以做的事情还很多, 所以为了让大家更快的感受 flowmix 的能力, 我先做了一个流程编辑器, 也就是 flowmix/flow, 我基于它设计了几个典型编辑场景, 这里给大家分享一下.

    1. 产品/技术架构图

    图片

    2. 组织结构图

    图片

    3. 思维导图

    图片

    4. 多画布设计

    图片

    5. 任务管理 + 流程看板

    图片

    当然还有很多场景大家可以一起探索, 目前产品免费使用, 欢迎大家体验反馈~

    高性能设计, 支撑上千复杂节点编辑, 异步分片渲染

    flowmix/flow 的节点内容不是一次性渲染到画布上, 而是一次只渲染可见区域的内容, 保证了大量节点也能轻松加载, 同时对于搭建系统的状态管理, 为了支撑大数据量的渲染和状态更新, 我对 antd form 组件的更新性能做了进一步优化, 并且采用zustand 作为状态管理库.(号称react状态管理性能之王)

    图片

    支持自定义节点连接线

    流程图的连接线是一个很重要的环节, 这里我对连接线也提供了一定的搭建配置能力, 如下图所示:

    图片

    后续还会按照我的规划持续优化和迭代它, 来实现真正的业务自动化方案.

    我们最近上线的一款AI协同文档

    也许关注我的朋友已经看过我之前做的另一款产品——JitWord
    , 它是另一款搭建类产品, 类似于WPS Word和Notion, 可以使用它轻松构建企业下一代知识库产品.

    图片

    如果大家感兴趣, 也可以在线体验一下. 开源sdk地址:

    https://github.com/MrXujiang/jitword-sdk

    Logo

    有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

    更多推荐