
sequential-workflow-designer
零依赖拖拽画布,快速搭出可运行的工作流编辑器
sequential-workflow-designer 是一个用 TypeScript 编写的可定制无代码工作流设计器组件,用于在应用中嵌入流程图式的流程编排与自动化编辑能力。它解决的是开发者从零实现拖拽式流程画布成本高的问题:提供开箱即用的节点、连线、分支、循环等结构,支持顺序、条件与嵌套流程,并允许替换主题、图标、自定义节点渲染与校验逻辑。核心能力包括零外部依赖、纯前端渲染、可序列化为 JSON 的工作流模型、只读/编辑模式切换、键盘与缩放交互,以及与任意框架集成。它不绑定后端,适合作为低代码平台、AI Agent 编排、自动化任务配置等产品的流程编辑内核,开发者只需接入自己的执行引擎即可完成从画布到运行时的闭环。
项目数据
使用教程
环境要求
- 一个可运行 TypeScript 的前端 Web 工程
- 现代浏览器或移动设备(设计器兼容两者)
- 项目中能引入 JS/TS 与 CSS 文件
- 可选:Angular、React 或 Svelte 工程(官方提供对应示例)
安装与启动步骤
-
1准备前端工程
该设计器是纯 TypeScript 编写的纯前端组件,需放进一个可运行 TS 的 Web 应用中,无需任何后端服务。
-
2安装依赖包
README 安装章节只说明把 JS/TS 和 CSS 文件加入项目,包名取自 Usage 示例的 import 语句。
npm install sequential-workflow-designer -
3准备画布容器
在页面中放置一个容器元素,示例使用 id 为 placeholder 的节点作为设计器挂载点。
const placeholder = document.getElementById('placeholder'); -
4定义工作流模型
按 README 结构准备 definition:properties 放根属性,sequence 数组放步骤列表,整体可序列化为 JSON。
const definition = { properties: { myProperty: 'my-value' }, sequence: [] }; -
5编写配置对象
configuration 中所有字段均为可选;theme 默认 light,isReadonly 默认 false,undoStackSize 默认 0 即禁用撤销。
const configuration = { theme: 'light', isReadonly: false, undoStackSize: 10 }; -
6创建设计器实例
导入 Designer 并调用 Designer.create 把定义与配置挂载到容器上,页面即出现流程画布。
import { Designer } from 'sequential-workflow-designer'; const designer = Designer.create(placeholder, definition, configuration); -
7监听定义变更
订阅 onDefinitionChanged 事件,在用户拖拽、新增或删除步骤时拿到最新定义并自行保存。
designer.onDefinitionChanged.subscribe(event => { // ... });
关键配置
| 配置项 | 必填 | 说明 | 示例 |
|---|---|---|---|
theme | 否 | 切换外观主题,支持 light、dark、soft | light |
isReadonly | 否 | 只读模式开关,设为 true 后不可编辑流程 | false |
undoStackSize | 否 | 撤销栈大小,0 为禁用,1 及以上启用撤销 | 10 |
toolbox | 否 | 左侧步骤工具箱,设为 false 可隐藏 | false |
editors | 否 | 根节点与步骤的属性编辑器面板 | false |
controlBar | 否 | 底部控制栏,设为 false 可隐藏 | true |
如何确认成功
页面出现流程图设计器画布,拖拽或增删步骤时 onDefinitionChanged 回调被触发,即表示接入成功。
常见问题
Q:这个设计器需要绑定后端或工作流引擎吗?
A:不需要。它不与任何工作流引擎关联,完全通用,只负责编辑并以 JSON 存储流程定义,执行逻辑需要你接入自己的引擎。
Q:如何隐藏工具箱或属性编辑器等默认 UI?
A:把 configuration 中对应项设为 false 即可,例如 toolbox: false、editors: false、controlBar: false、contextMenu: false。
Q:支持哪些前端框架?
A:仓库提供 Angular、React 和 Svelte 的集成示例,同时兼容现代浏览器与移动设备。
Q:怎么自定义主题和节点图标?
A:theme 可切换 light、dark、soft;步骤图标通过 iconUrlProvider 回调按组件类型和步骤类型返回图标地址。
Q:工作流定义怎么保存?
A:定义是 JSON 结构,监听 designer.onDefinitionChanged 后自行提交到你的存储或后端即可。
注意事项
- README 未给出具体的 CSS 文件路径和包管理器命令,安装细节请以官方文档 nocode-js.com 为准。
- 设计器零外部依赖、使用 SVG 渲染,不会引入额外的运行时依赖。
- 流程定义以 JSON 存储,可自由对接任意后端与执行引擎。
- 更多用法可参考仓库 examples 目录与在线示例页面。
核心亮点
- 零外部依赖,打包体积可控,不污染宿主项目的依赖树
- 工作流模型可序列化为 JSON,便于持久化与对接自研执行引擎
- 支持自定义节点、主题、图标与校验,能贴合品牌与业务语义
不足之处
- 仅提供设计器 UI,不含流程执行引擎,运行时需自行实现
- 复杂嵌套流程与大规模节点下的画布性能表现有待验证
适用场景
- 低代码平台中让业务人员拖拽配置审批或数据处理流程
- AI Agent 编排界面,用可视化节点串联模型调用与工具步骤
- 自动化运维/营销工具里配置触发条件与任务执行链路
替代项目
react-flow、bpmn-js
项目介绍
同类项目推荐
n8n
开源
拖拽搭建自动化流程,轻松接入 AI 与 400+ 应用,搞定重复工作。
Fair-code workflow automation platform with native AI capabilities. Combine visual b···
robotcode
开源
让 Robot Framework 拥有现代 IDE 体验,调试、补全、运行一气呵成。
Open Source Toolkit for Robot Framework, providing Language Server Protocol support,···
puppeteer
开源
用 JavaScript 轻松操控无头浏览器,搞定自动化测试与网页抓取。
JavaScript API for Chrome and Firefox
customermates
开源
比 Pipedrive 直观 10 倍的现代开源 CRM,轻松管理客户与自动化流程。
Building a modern alternative to Pipedrive that is 10x more intuitive.