LogicFlow 扩展包 @logicflow/extension 完全指南:安装、插件体系与源码架构解读

发布时间:2026/11/15 12:47:18

LogicFlow 扩展包 @logicflow/extension 完全指南:安装、插件体系与源码架构解读 LogicFlow 扩展包 logicflow/extension 完全指南安装、插件体系与源码架构解读【免费下载链接】LogicFlowA flow chart editing framework focus on business customization. 专注于业务自定义的流程图编辑框架支持实现脑图、ER图、UML、工作流等各种图编辑场景。项目地址: https://gitcode.com/GitHub_Trending/lo/LogicFlow本文围绕 LogicFlow 官方扩展包 packages/extension/README.md 展开系统讲解logicflow/extension的安装方式、最小接入写法、插件能力全景与底层架构设计。读完你将掌握如何在一个已有logicflow/core项目中接入 BPMN、分组、泳道、小地图、快照等能力理解插件的LogicFlow.use注册机制并学会从源码层面定位与扩展官方插件。logicflow/extension是 LogicFlow 的官方扩展包它建立在logicflow/core之上聚合了 BPMN 支持、内置编辑器组件、辅助工具、可复用物料与更高层级的编辑插件。与 core 只负责画布 图元 事件的运行时不同extension 提供的都是可选能力——不安装它基础编辑器依然可以正常工作安装了它你可以按需挑选插件快速搭建出具备真实业务形态的流程图应用如 BPMN 工作流、泳道图、分组脑图等。一、扩展包是什么extension 在 LogicFlow 生态中的定位在 LogicFlow 的 monorepo 结构中logicflow/extension位于 packages/extension其职责边界在 packages/extension/ARCHITECTURE.md 中有明确定义这个包拥有什么BPMN 图元与 BPMN 数据适配器src/bpmn、src/bpmn-adapter、src/bpmn-elements、src/bpmn-elements-adapter内置编辑器 UI菜单menu、小地图mini-map、右键菜单context-menu、拖拽面板dnd-panel、选择辅助selection-select、高亮highlight等可选工具Label 文本、快照导出snapshot、流程路径flow-path、自动布局auto-layout、渐进连线proximity-connect等可复用物料与分组编辑能力泳道pool与动态分组dynamic-group。这个包不拥有什么基础编辑器的状态模型与注册原语属于 core工作流执行语义属于logicflow/engine框架适配层React/Vue 渲染由 node-registry 包负责。一句话概括extension 是叠加在 core 公开 API 之上的扩展层而不是第二个 core。所有扩展功能都应通过LogicFlow.use、lf.register等官方钩子组合进编辑器而不是侵入 core 的私有内部实现。二、安装显式安装 core 与 extension由于扩展包建立在logicflow/core之上使用方需要显式安装与其兼容的 core二者缺一不可。官方 README 给出了三种包管理器的安装命令npm install logicflow/core logicflow/extensionyarn add logicflow/core logicflow/extensionpnpm add logicflow/core logicflow/extension几点版本约定与构建产物说明依据 packages/extension/package.jsonlogicflow/core被声明为peerDependenciesworkspace:*发布后由使用方提供扩展包本身不重复打包 core包同时输出多种产物main指向lib/index.jsCommonJS、module指向es/index.jsESM、unpkg/jsdelivr指向dist/index.min.jsUMDtypes指向lib/index.d.ts打包脚本由rssrepo 级脚本统一编排build:esm用tsc --module esnext产出es/build:cjs用tsc --module commonjs产出lib/build:umd用 rollup 产出dist/。需要特别提醒的是使用组件类插件如 DndPanel、Control、MiniMap、Menu时需要引入样式文件。示例项目中普遍采用import logicflow/extension/es/index.css的写法例如 examples/feature-examples/src/pages/extensions/control/index.tsx 与 examples/feature-examples/src/pages/extensions/dnd-panel/index.tsx 中均如此引入。样式源文件位于 packages/extension/src/index.less 与 packages/extension/src/style/index.less构建时会被抽离为独立 CSS。三、最小接入插件注册与 LogicFlow.useREADME 中给出了最短可运行示例——接入 BPMN 数据适配器import LogicFlow from logicflow/core; import { BpmnAdapter } from logicflow/extension; LogicFlow.use(BpmnAdapter);这里使用了LogicFlow.use静态方法完成插件注册。注册之后lf实例就具备了 BPMN 数据的导入导出能力。如果要让实例真正画得出 BPMN 图元开始事件、结束事件、排他网关、用户任务、服务任务、顺序流还需要注册 BPMN 元素插件BpmnElement。从源码 packages/extension/src/bpmn/index.ts 可以看到BpmnElement的注册行为const BpmnElement: ExtensionDefinition { pluginName: bpmnElement, install(lf) { lf.setTheme(theme) lf.register(StartEvent) lf.register(EndEvent) lf.register(ExclusiveGateway) lf.register(UserTask) lf.register(ServiceTask) // 支持自定义bpmn元素的边 if (!lf.options.customBpmnEdge) { lf.register(SequenceFlow) lf.setDefaultEdgeType(bpmn:sequenceFlow) } }, }这段实现揭示了几点关键设计插件即安装函数 元信息pluginName是插件的唯一标识install(lf)在use时被调用可以访问到lf实例上的setTheme、register、setDefaultEdgeType等公开 APIcustomBpmnEdge开关如果业务方希望自己定义边类型可通过该配置跳过内置 SequenceFlow 注册与默认边类型设置BpmnAdapter与BpmnElement的分工前者负责数据层LogicFlow GraphData ⇄ BPMN XML/JSON后者负责图元层BPMN 元素的注册与主题。数据适配器的双向转换逻辑位于 packages/extension/src/bpmn-adapter/index.ts其内部约定值得注意BPMN XML 属性在 JSON 中以-前缀表示如-id、-nameXML 同名子节点多次出现时解析为数组导入/导出对数组与单对象均做兼容BPMN 画布坐标以元素左上角为基准LogicFlow 以元素中心为基准转换时需做坐标基准换算文本内容导出时做 XML 转义、导入时反转义保证、、等特殊字符不丢失。四、能力全景从 src/index.ts 看扩展包导出了什么扩展包的公共出口是 packages/extension/src/index.ts它把六大类能力统一导出。下面按模块职责逐一说明每个导出子模块都有对应源码目录便于按需查阅4.1 BPMN 支持模块源码目录职责bpmnpackages/extension/src/bpmnBPMN 插件注册与内置 BPMN 图元StartEvent、EndEvent、ExclusiveGateway、UserTask、ServiceTask、SequenceFlowbpmn-adapterpackages/extension/src/bpmn-adapterLogicFlow 图数据 ⇄ BPMN 数据XML/JSON双向转换额外导出xml2json、json2xml工具bpmn-elementspackages/extension/src/bpmn-elementsBPMN 元素的声明式定义presets另有 README 说明bpmn-elements-adapterpackages/extension/src/bpmn-elements-adapter与 bpmn-elements 配套的适配器turbo-adapterpackages/extension/src/turbo-adapterTurbo 数据格式适配4.2 编辑交互组件components组件源码目录作用Controlpackages/extension/src/components/control画布缩放、适应、撤销、重做工具栏Menupackages/extension/src/components/menu节点/边右键菜单ContextMenupackages/extension/src/components/context-menu通用上下文菜单DndPanelpackages/extension/src/components/dnd-panel拖拽面板拖出节点到画布MiniMappackages/extension/src/components/mini-map小地图SelectionSelectpackages/extension/src/components/selection-select框选Highlightpackages/extension/src/components/highlight节点/边高亮以 Control 为例packages/extension/src/components/control/index.ts它默认提供缩小 / 放大 / 适应 / 上一步 / 下一步五个按钮分别调用lf.zoom(false)、lf.zoom(true)、lf.resetZoom()、lf.undo()、lf.redo()并支持自定义ControlItem配置每个 item 可设置key、iconClass、title、text与onClick回调——这就是编辑器 UI 组件也是可配置插件的体现。4.3 辅助工具tools工具源码目录作用Labelpackages/extension/src/tools/label富文本 Label支持多文本与文本朝向配置Snapshotpackages/extension/src/tools/snapshot画布快照导出图片支持安全边距/安全系数配置FlowPathpackages/extension/src/tools/flow-path高亮某条流程路径上的所有元素AutoLayoutpackages/extension/src/tools/auto-layout自动布局集成底层能力在logicflow/layoutProximityConnectpackages/extension/src/tools/proximity-connect渐进连线节点拖近后自动吸附连线4.4 物料与分组materials / 高级编辑模块源码目录作用CurvedEdgepackages/extension/src/materials/curved-edge圆角折线边NodeSelectionpackages/extension/src/materials/node-selection节点选择高亮外框跟随节点移动/缩放自动更新Pool泳道packages/extension/src/pool泳道/泳池结构pool、laneDynamicGrouppackages/extension/src/dynamic-group新版分组dynamic-groupInsertNodeInPolylinepackages/extension/src/insert-node-in-polyline折线上动态插入节点RectLabelNodepackages/extension/src/rect-label-node矩形标签节点Group/NodeResizepackages/extension/src/materials/group、packages/extension/src/NodeResize兼容旧版的分组与节点缩放NodeResize在 2.0 已标记deprecated见 packages/extension/src/index.ts五、插件开发模式稳定运行时三步骤无论是官方插件还是你自定义的插件extension 中的大多数能力都遵循同一套稳定运行时模式见 packages/extension/ARCHITECTURE.md从logicflow/core导入公开类型或运行时钩子通过 core 的扩展点注册元素、工具或组件lf.register、graphModel.addNodeMoveRules、lf.on事件监听等将该能力作为可选插件或辅助导出暴露出来。这条约束同时意味着如果某个能力无法在不修改 core 私有内部的前提下实现正确的做法是先增强 core 的扩展点而不是在 extension 里打脆弱的补丁。另外官方还要求内置组件与工具不得成为隐藏的图状态来源graphModel等 core 模型始终是唯一数据源。以 DynamicGroup 为例packages/extension/src/dynamic-group/index.ts它的init()方法完整演示了这一模式通过lf.register(dynamicGroup)注册dynamic-group节点类型view 为DynamicGroupNode、model 为DynamicGroupNodeModel通过graphModel.addNodeMoveRules添加移动规则移动分组时组内节点联动、isRestrict限制子节点拖出范围通过graphModel.addNodeResizeRules添加缩放规则分组外框不得小于直接子节点占地面积通过lf.on(EventType.NODE_ADD)、NODE_DND_ADD、NODE_DROP、SELECTION_DRAG、NODE_DELETE、EDGE_DELETE等事件维护nodeGroupMap节点 ↔ 分组映射、折叠虚拟边双向索引与激活态高亮通过重写lf.addElements支持分组整体复制粘贴含组内节点与内部边的递归复制在graphModel上挂载graphModel.dynamicGroup this供外部通过lf.graphModel.dynamicGroup访问插件实例。插件还暴露了getGroupByNodeId(nodeId)等查询 API以及以下可配置项DynamicGroupOptions配置项类型默认值说明isCollapsedboolean-分组初始折叠状态disallowEdgeConnectToGroupbooleanfalse为true时禁止手动将边连到/从分组节点折叠虚拟边不受影响节点properties.allowEdgeConnect可覆盖cascadeDeleteChildrenbooleantrue删除分组时是否级联删除成员为false时仅解除成员关系、子节点保留在画布sensorOutlineobject-拖拽节点进入分组时的感应外框样式stroke默认#feb663strokeWidth默认2这些配置项在 packages/extension/CHANGELOG.md 的 2.3.0 版本中均有正式记录。六、分组架构DynamicGroup、Pool 与旧版 Group 的关系在接入分组/泳道功能前需要先厘清 extension 中并存的三套相关栈这是 packages/extension/ARCHITECTURE.md 特别强调的不要假设它们共享同一个插件或同一个修复栈代码插件graphModel钩子节点类型DynamicGroup当前推荐packages/extension/src/dynamic-groupDynamicGroupdynamicGroupdynamic-groupPool泳道当前packages/extension/src/poolPoolElements也挂dynamicGrouppool、laneGroup已废弃packages/extension/src/materials/groupGroupgroupgroup、BPMNbpmn:subProcess、旧版 bpmn-elements 的 Pool/Lane关键结论DynamicGroup ↔ Pool 的关系PoolModel/LaneModel继承DynamicGroupNodeModelPoolView/LaneView继承DynamicGroupNode泳道复用分组语义children、isGroup、移动/缩放规则。PoolElements基本是DynamicGroup插件的分支额外提供 lane 拖入与getLaneByNodeId。Lane 禁用折叠Pool 固定为pool → lane → tasks结构而非任意嵌套互斥使用同一画布上要么用DynamicGroup要么用PoolElements。两者都会写graphModel.dynamicGroup同时加载会互相覆盖后加载的插件生效与 BPMN SubProcess 无关bpmn:subProcess仍继承旧版 Group修复 DynamicGroup 不会自动修复 subprocess自定义分组推荐姿势继承dynamicGroup.view/dynamicGroup.model并启用DynamicGroup插件官方教程见 sites/docs/docs/tutorial/extension/dynamic-group.zh.md与自动布局的关系自动布局在logicflow/layout包中实现它读取isGroupchildren界定内部布局范围成员的归属children、映射表仍由 DynamicGroup / PoolElements 负责因此布局调用renderRawData时必须保留properties.children。默认resizeGroup: false保持分组外框不变并在溢出时告警grow-only/fit可选开启分组尺寸自适应。七、本地开发与验证如果你想基于该扩展包做二次开发或调试官方建议的验证入口是见 packages/extension/ARCHITECTURE.md 的 Verification Entrycd packages/extension pnpm run dev cd examples/feature-examples pnpm start当功能与框架或文档强相关时可以选用更聚焦的示例项目。仓库中与 extension 相关的示例分布在 examples/feature-examples/src/pages/extensionsBPMN、control、dnd-panel、dynamic-group、group、menu、mini-map、snapshot、selection-select、proximity-connect、insert-node-in-polyline、rules、highlight、control 等页面以及 examples/engine-browser-examples/src/pages/extension 下的 bpmn / dynamic-group / label 示例可对照源码边跑边看效果。八、版本演进速览结合 packages/extension/CHANGELOG.md可以快速了解扩展包的关键演进脉络这有助于你判断哪些能力是新特性、哪些是历史包袱2.3.0DynamicGroup 新增cascadeDeleteChildren、disallowEdgeConnectToGroup选项分组缩小限制改为所有分组默认行为不再依赖isRestrict折叠虚拟边锚点问题修复PoolElements 多选高亮改为 Set 对齐 DynamicGroup2.2.0正式发布新增泳道插件PoolElements2.1.x 前后小地图、渐进连线、快照导出安全边距/安全系数、框选等插件持续增强与修复2.0.0随 LogicFlow 2.0 重构 monorepo使用 pnpm 管理Group升级为dynamic-group插件NodeResize标记废弃1.x沉淀了 BPMN 适配、小地图、快照、Label、分组复制粘贴等基础能力。从这套演进可以清楚看到DynamicGroup 与 Pool 是当前分组/泳道的现役实现旧版 Group 与 NodeResize 仅出于兼容性保留导出。接入新项目时应优先采用 DynamicGroup / PoolElements。九、总结logicflow/extension的设计哲学是可选、分层、可组合它永远站在logicflow/core的公开扩展点上把 BPMN、组件、工具、物料、分组等业务高频能力以插件形式交付。接入时牢记三件事即可快速上手显式安装logicflow/core与logicflow/extensionpeer 依赖关系按需注册LogicFlow.use(BpmnElement)、LogicFlow.use(DynamicGroup)等组件类插件记得引入logicflow/extension/es/index.css厘清边界BPMN 数据用 adapter、图元用 bpmn 元素插件、分组选 DynamicGroup、泳道选 PoolElements、自动布局在logicflow/layout——各司其职互不越界。进一步阅读官方扩展教程入口 sites/docs/docs/tutorial/extension/intro.zh.md 及 sites/docs/docs/tutorial/extension 目录下的各插件分篇源码则可以直接从 packages/extension/src/index.ts 开始按模块追踪。【免费下载链接】LogicFlowA flow chart editing framework focus on business customization. 专注于业务自定义的流程图编辑框架支持实现脑图、ER图、UML、工作流等各种图编辑场景。项目地址: https://gitcode.com/GitHub_Trending/lo/LogicFlow创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/31 21:00:47

从Seurat转向scanpy:Python单细胞转录组分析完整流程指南

做单细胞数据分析的人,多半绕不开 Seurat。我前面两篇教程把 R 语言里 Seurat 的完整流程写过一遍,从数据读入、质控、标准化到聚类和 marker 基因鉴定,一套跑下来确实顺手。但这几年我自己的项目里出现了一个很现实的情况:样本量…

2026/11/15 12:44:47

信阳商城县办电工证报名费多少钱,良心建议别走弯路

信阳商城县办电工证报名费多少钱,良心建议别走弯路 你是不是正愁不知道信阳商城县哪里能靠谱办理电工证?中介太多,价格参差不齐,一不小心就花了冤枉钱?别急,这篇文章就是为你准备的,给个 良心建议 ,教你少走弯路,一步到位。…

2026/11/15 12:44:47

南京大厂电工证培训怕考不过白交培训费?官方报名入口全攻略

南京大厂电工证培训怕考不过白交培训费?官方报名入口全攻略 怕考不过白交培训费?南京大厂电工证培训正成为越来越多求职者的“必修课”,但培训费不低,加上考试难度,很多人担心“花了钱却拿不到证”。别急,本文帮你理清报名流程、通过率、官方报名入口,…

2026/11/15 12:44:47

大连电工证多钱怎么查 电工证考试内容全知道

大连电工证多钱怎么查 电工证考试内容全知道 工地太忙根本没时间复习考试,你是不是也遇到这种情况?尤其是像你这样在开封的中小施工企业负责人,天天在项目上跑来跑去,连吃饭都得赶时间,哪还有空去准备电工证考试?别急,这篇文章就是为你准备的。我们来…

2026/11/15 12:44:47

电工上岗急需r1证低压电工证?千万别踩坑!新手必看避坑指南

电工上岗急需r1证低压电工证?千万别踩坑!新手必看避坑指南 你是不是刚入行,手上没证,连工地门都进不去?别急,r1证低压电工证是电工行业必须持有的上岗证,但千万别踩坑,流程复杂、报名门槛高、培训机构鱼龙混杂,稍有不慎就白忙一场。本文从商丘劳…

2026/11/15 12:44:47

特种工管理系统怎么用?郑州报考避坑指南全在这儿

特种工管理系统怎么用?郑州报考避坑指南全在这儿 证书过期了不知道怎么复审延期,这种情况在特种作业行业并不少见。很多工人手上拿着证,却不清楚怎么维护,一不留神就失效,影响工作和收入。尤其是在郑州这种建筑工地多、特种作业需求大的地方,…

2026/11/15 12:39:46

赤壁办电工证在哪里办 最新含金量解读

赤壁办电工证在哪里办 最新含金量解读 你还在为找不到电工证发愁?找工作处处碰壁?特种作业证是很多行业的“门槛”,尤其是电工证,含金量高、需求量大,但很多求职者却因为不知道赤壁办电工证在哪里办,错过了机会。今天就来详细讲讲赤壁电工证怎么考,为…

2026/11/15 0:02:49

电工证考试口诉怎么准备值不值得考

电工证考试口诉怎么准备值不值得考 实操考试心里没底怕挂科,这是大多数准备考电工证的人心里最真实的感受。尤其是面对【电工证考试口诉】环节,很多人不知道该怎么准备,甚至担心自己说不好就被淘汰。其实,只要掌握方法, 值不值得考…

2026/11/15 0:02:49

桑植县考电工证千万别踩坑!报名全流程教你避坑

桑植县考电工证千万别踩坑!报名全流程教你避坑 你是不是也遇到过这种情况:想考个电工证,但不知道从哪儿下手,怕被中介坑,怕花冤枉钱,更怕考了证还不能用?别急,这正是你该看这篇文章的原因。在桑植县考电工证,确实有很多人被坑过,但只要你知道流程、…

2026/11/15 0:02:49

电工证考试口诉怎么准备值不值得考

电工证考试口诉怎么准备值不值得考 实操考试心里没底怕挂科,这是大多数准备考电工证的人心里最真实的感受。尤其是面对【电工证考试口诉】环节,很多人不知道该怎么准备,甚至担心自己说不好就被淘汰。其实,只要掌握方法, 值不值得考…

2026/11/15 0:02:49

桑植县考电工证千万别踩坑!报名全流程教你避坑

桑植县考电工证千万别踩坑!报名全流程教你避坑 你是不是也遇到过这种情况:想考个电工证,但不知道从哪儿下手,怕被中介坑,怕花冤枉钱,更怕考了证还不能用?别急,这正是你该看这篇文章的原因。在桑植县考电工证,确实有很多人被坑过,但只要你知道流程、…

2026/11/15 4:46:37

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/15 2:06:31

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑