首页 > 其他分享 >开发一个流程图编辑器

开发一个流程图编辑器

时间:2024-07-03 10:46:34浏览次数:12  
标签:const 流程图 编辑器 开发 xflow 节点 属性

最近用react+golang开发的一个后管项目中需要用到流程图编辑器,实现一个审批流配置的功能,找了react生态下的一些开源库,最终决定使用xflow,这个库非常强大,但是还不能完全满足我的需求。

我的需求:
1、布局使用左中右的三列布局,从左到右分别是 可用节点、编辑器画布、属性面板
2、节点(审批节点、抄送节点等)需要可以自定义UI样式
3、节点的属性(如:审批人、超时是否提醒等)、连接线的属性(主要是流转条件)、流程图的属性(是否可以撤回、是否允许评论等)都要可以自定义
4、编辑完流程后,需要保存流程的结构数据,并能根据这个结构再次渲染出原来的流程图

 


因此我在xflow的基础上拓展开发了一个流程编辑器 xflow-extend (已经开源),在满足本项目需求的同时也希望能够帮助到其他需要类似功能的小伙伴

结合我的需求,我在 xflow-extend 开放了几个关键的API

 

1、节点注册API

2、属性设置器注册API (属性设置器是用于节点、连接线和流程图属性设置与获取的组件。例如,简单的属性(如流程名称)只需要一个输入框(Input)即可处理。而复杂属性(如节点的审核人)可能需要包含更多交互逻辑的组件,甚至可能涉及弹窗设置。因此,属性设置器可以是自定义的。)

3、配置流程所需要的属性

4、配置连接线所需要的属性

5、配置连接线的颜色

 

6、获取编辑器数据

7、设置/初始化编辑器数据

 

实现效果如下:

项目已经开源并且发布到npm,简单的使用教程:

### 安装
npm install xflow-extend

### 使用

import XFlowExtend from 'xflow-extend';
import 'xflow-extend/dist/style.css'

const App = () => {
  const flowRef = React.useRef();

  // 获取流程图数据
  const getFlowData = () => {
    const flowData = flowRef.current?.getFlowData();
    localStorage.setItem('flowData', JSON.stringify(flowData));
  };

  // 设置流程图数据
  const setFlowData = () => {
    const flowData = JSON.parse(localStorage.getItem('flowData') || '{}');
    flowRef.current?.setFlowData(flowData);
  };

  return <XFlowExtend ref={flowRef} />;
};

export default App;

 具体的使用教程和源代码可以访问 https://github.com/shitiandmw/xflow-extend

 

标签:const,流程图,编辑器,开发,xflow,节点,属性
From: https://www.cnblogs.com/shitian-net/p/18281071

相关文章

  • VSCode + Qt + QMake 开发编译环境搭建
    鉴于Qt官方IDE太过难用,VSCode+各种插件功能强大,遂采用VSCode来写Qt项目;本博客在Windows平台进行指导操作,Mac、Linux平台配置方式类似,学习其本质就可。前置准备VSCode,最新版本即可本地Qt环境,版本随意,本文主要针对较老版本使用Qmake构建系统的项目环境变量Qt环境变......
  • HiAI Foundation开发平台,加速端侧AI应用的智能革命
    如果您是一名开发者,正在寻找一种高效、灵活且易于使用的端侧AI开发框架,那么HarmonyOSSDKHiAIFoundation服务(HiAIFoundationKit)就是您的理想选择。作为一款AI开发框架,HiAIFoundation不仅提供强大的NPU计算能力和丰富的开发工具,还提供完善的技术支持和社区资源,帮助您快速构建......
  • 从0到1Flink的成长之路(二十)-Flink 高级特性(二)之自动重启策略和恢复 ,固定延迟重启策
    从0到1Flink的成长之路(二十)-Flink高级特性(二)之自动重启策略和恢复,,固定延迟重启策略(开发中使用)自动重启策略和恢复1)、重启策略配置方式配置文件在flink-conf.yml中可以进行配置,示例如下:restart-strategy:fixed-delayrestart-strategy.fixed-delay.attempts:3restart-strat......
  • WebStorm 2024 for Mac JavaScript前端开发工具
    Mac分享吧文章目录效果一、下载软件二、开始安装1、双击运行软件(适合自己的M芯片版或Intel芯片版),将其从左侧拖入右侧文件夹中,等待安装完毕2、应用程序显示软件图标,表示安装成功3、打开访达,点击【文稿】。将安装包内的【ja-netfilter】文件夹拖到文稿中4、填写内容,修改用......
  • PyCharm2024 for mac Python编辑开发
    Mac分享吧文章目录效果一、下载软件二、开始安装1、双击运行软件(适合自己的M芯片版或Intel芯片版),将其从左侧拖入右侧文件夹中,等待安装完毕2、应用程序显示软件图标,表示安装成功3、打开访达,点击【文稿】。将安装包内的【ja-netfilter】文件夹拖到文稿中4、填写内容,修改用......
  • 2024年好用的5款国产低代码开发平台
    最近几年,低代码\无代码\零代码技术和快速开发平台比较热门,全球知名低代码平台厂商有:微软PowerPlatform、西门子Mendix、OutSystems等。我们国内最近几年也有一些信创国产化低代码平台涌现出来,比如:云程、氚云、轻流、简道云、得帆、ClickPaaS等,华为、阿里、百度等一些互联网大厂也......
  • 从零开始带你上手体验Sermant自定义插件开发
    本文分享自华为云社区《Sermant自定义插件开发上手体验》,作者:华为云开源。一、研究缘由由于目前我们所处的行业是汽车行业,项目上进行云服务的迁移时使用到了Sermant中的相关插件,为了加深对Sermant开发和运行机制的了解,我们从零开始体验Sermant自定义插件的开发。下面我们就Se......
  • 恶意软件开发-初级-Sektor 7
    友情提醒免杀的朋友们:不要看见免杀就高潮了。虽然标题没提免杀,但这就是基础(看大纲还不懂?),请问你是如何做到在面对免杀基础(你细品恶意软件开发-初级)的时候却并不知道它就是基础的?后面会加上文章密码(但,农夫的都懂)初级设定就是过那什么垃圾的公共厕所:windowsdefender(请不要再提能......
  • 一个人独立开发出一款发行版app要掌握哪些知识?
    选择并精通至少一种适用于移动应用开发的编程语言。对于Android开发,常见选择有Java或Kotlin;对于iOS开发,则主要是Swift或Objective-C。编程语言是App开发的基础,决定了代码的可读性、可维护性和性能。根据目标平台安装相应的开发环境。Android开发通常使用AndroidStudio,iOS开......
  • 用ADSP-21569做A2B的开发的保姆级教程六:Fireworks源码
    作者的话我在前面已经写了5篇,补充一篇更新:Fireworks源码关于A2B,我写过非常多的文章,都是基于ADI公司的A2B开发板参考设计来写的,在真实世界里,主机厂们用到了ADSP-21565、ADSP-21569,甚至ADSP-21593来做座舱的音响设计,整车的NVH,这些应用全部都涉及到了A2B,也就是所谓的汽车音......