bpmn-process-designer: Base on Vue 2.x and ElementUI,基于 Bpmn.js、Vue 2.x 和 ElementUI 的流程编辑器(前端部分),支持监听器,扩展属性,表单等配置,可自由扩展 dingding-mid-business-java: 仿钉钉飞书企业微信样式设计器,基于Flowable,Camunda

RuoYi-Flowable-Plus: 本项目基于 RuoYi-Vue-Plus 进行二次开发扩展Flowable工作流功能,支持在线表单设计和丰富的工作流程设计能力。如果觉得这个项目不错,麻烦点个star🌟。

 从0搭一个React项目

c从0开始搭建一个React项目,你可以手动设置项目结构并引入所需的依赖,或者使用现有的脚手架工具来快速生成项目骨架。脚手架工具(如Create React App)能够极大地简化React项目的初始化过程,因为它会自动设置开发环境、提供实时重新加载(live reloading)、代码拆分(code splitting)等功能。下面我将分别介绍这两种方法。

方法一:使用Create React App(推荐)

Create React App是由Facebook官方提供的一个脚手架工具,用于设置单页应用(SPA)的React环境。

  1. 安装Node.js和npm
    确保你的电脑上安装了Node.js和npm。Node.js通常会附带npm一起安装。

  2. 全局安装Create React App(如果你希望全局安装的话,但这不是必需的):

    npm install -g create-react-app
  3. 注意:从Create React App 3.x开始,你可以直接使用npx命令而无需全局安装。

  4. 创建新的React应用
    使用npx(npm package executor)来避免全局安装Create React App:

  1. 这将启动开发服务器,并在浏览器中自动打开你的应用。

方法二:手动搭建React项目

如果你希望从头开始了解如何设置React项目的所有细节,可以手动搭建项目。但请注意,这通常不推荐给初学者,因为它涉及更多的配置和潜在的错误。

  1. 初始化一个新的npm项目

mkdir my-app  
cd my-app  
npm init -y
  1. 安装React和ReactDOM
npm install react react-dom
  1. 设置Webpack(或其他模块打包器)
    你需要配置Webpack来打包你的JavaScript和CSS文件,并处理其他静态资源。这通常包括安装Webpack、Webpack CLI、加载器(如babel-loader用于JSX转换)等。

  2. 设置Babel
    为了将JSX转换为普通的JavaScript,你需要配置Babel。这通常涉及安装@babel/core@babel/preset-env@babel/preset-reactbabel-loader

  3. 添加样式预处理器(可选)
    如果你计划使用Sass、Less等样式预处理器,你还需要安装相应的加载器。

  4. 创建项目结构和代码
    设置你的项目目录结构,如src文件夹用于存放源代码,public文件夹用于存放静态资源(如HTML文件)。

  5. 编写你的React应用
    src目录下创建React组件,并在public/index.html中通过ReactDOM.render渲染根组件。

  6. 配置并运行Webpack开发服务器
    设置Webpack的配置文件(通常是webpack.config.js),并可能安装webpack-dev-server来提供一个简单的web服务器和实时重新加载功能。

  7. 编写和运行测试(可选)
    配置Jest或其他测试框架来编写和运行你的React组件的单元测试。

  8. 构建生产版本
    使用Webpack的配置来优化和压缩你的代码,以便在生产环境中部署。

虽然手动搭建React项目能够让你深入了解其底层原理,但使用Create React App可以节省大量时间,让你更专注于应用的功能开发。

BPMN.JS详解

BPMN.JS及其常见API[算得上很全啦]_bpmn-js库中updatemoddleproperties和updateproperties方法-CSDN博客

bpmn.js详情

bpmn.js 是一个基于BPMN 2.0(Business Process Modeling Notation 2.0,业务流程建模与表示法2.0)的前端工作流展示和绘制工具。它由开源工作流引擎camunda内部的BPMN.IO组织开发,旨在通过JavaScript在浏览器中创建、嵌入和扩展BPMN图。bpmn.js可以独立使用,也可以集成到Web应用程序中。

主要功能
  • 查看器(Viewer):用于在Web应用程序中嵌入和展示BPMN 2.0图表。
  • 建模器(Modeler):提供在Web应用程序中创建和编辑BPMN 2.0图表的功能。
依赖库

bpmn.js主要依赖于两个库:

  • diagram-js:用于在Web应用程序中绘制图形和连线,提供与图形元素交互的方法,以及帮助用户构建强大的BPMN查看器等辅助工具。
  • bpmn-moddle:封装了BPMN 2.0模型,并提供了读写BPMN 2.0 XML文档的工具。它允许读取和写入符合BPMN 2.0规范的XML文档,并访问图表上绘制的形状和连接背后的BPMN相关信息。
入门实例

以下是一个简单的bpmn.js入门实例,展示了如何使用Viewer来展示一个BPMN 2.0图表:

引入bpmn.js

你可以通过CDN或npm来引入bpmn.js。以下是通过CDN引入的示例:

<script src="https://unpkg.com/bpmn-js/dist/bpmn-viewer.min.js"></script>

HTML结构

在HTML中,你需要一个容器来承载BPMN图表:

<div id="canvas"></div>

JavaScript代码

使用bpmn.js的Viewer来加载并展示BPMN 2.0图表:

var viewer = new BpmnJS({  
  container: '#canvas'  
});  

var bpmnXML = '<?xml version="1.0" encoding="UTF-8"?>\n' +  
  '<bpmn2:definitions ...>...</bpmn2:definitions>'; // 这里应填写完整的BPMN 2.0 XML  

viewer.importXML(bpmnXML, function(err) {  
  if (err) {  
    console.error('Could not render BPMN 2.0 diagram', err);  
  } else {  
    console.log('Rendered BPMN 2.0 diagram');  
  }  
});

注意:bpmnXML变量应包含完整的BPMN 2.0 XML字符串。

规范详解

BPMN 2.0是一套由OMG(Object Management Group,对象管理组织)发布的业务流程建模与表示法标准。它旨在提供一种标准化的图形表示法,以促进非技术业务用户与开发人员之间的通信。BPMN 2.0定义了各种图形元素(如任务、网关、事件等)和它们之间的连接,以表示业务流程的结构和行为。

bpmn.js遵循BPMN 2.0规范,允许在Web应用程序中创建、编辑和展示符合BPMN 2.0标准的图表。通过bpmn.js,开发人员可以轻松地将业务流程模型嵌入到Web应用程序中,从而实现业务流程的可视化和自动化。

React+Bpmn.JS

bpmn.js 本身是一个独立的 JavaScript 库,用于在浏览器中渲染和交互 BPMN 2.0 图表。然而,当你想在 React 应用中使用 bpmn.js 时,你需要考虑如何将这个库集成到你的 React 组件中。

由于 bpmn.js 不是专门为 React 设计的,你需要手动处理一些集成问题,比如生命周期管理、DOM 元素的引用等。但幸运的是,有一些方法和社区项目可以帮助你更容易地在 React 中使用 bpmn.js

集成方法

1. 直接在 React 组件中使用

你可以直接在 React 组件的 componentDidMount 生命周期方法中初始化 bpmn.js 的 Viewer 或 Modeler,并在 componentWillUnmount 中进行清理。同时,你需要确保在 React 的虚拟 DOM 中有一个元素可以作为 bpmn.js 的容器。

import React, { Component } from 'react';  
import BpmnViewer from 'bpmn-js/lib/Viewer';  
  
class BpmnDiagram extends Component {  
  componentDidMount() {  
    this.viewer = new BpmnViewer({  
      container: this.containerRef.current  
    });  
  
    this.viewer.importXML(this.props.bpmnXml, (err) => {  
      if (err) {  
        console.error('Failed to load BPMN diagram:', err);  
      }  
    });  
  }  
  
  componentWillUnmount() {  
    if (this.viewer) {  
      this.viewer.destroy();  
    }  
  }  
  
  render() {  
    return <div ref={this.containerRef} style={{ width: '100%', height: '500px' }} />;  
  }  
  
  containerRef = React.createRef();  
}  
  
export default BpmnDiagram;
2. 使用封装好的 React 组件

社区中可能存在一些已经封装好的 React 组件,这些组件将 bpmn.js 的功能封装成更易于在 React 中使用的形式。你可以搜索这些组件,并根据需要选择使用。

3. 自定义封装

如果你需要更复杂的集成,或者现有的解决方案不满足你的需求,你可以考虑自己封装一个 React 组件,将 bpmn.js 的功能按照你的需求进行封装。

注意事项

  • 确保在组件卸载时调用 bpmn.js 的 destroy 方法,以避免内存泄漏。
  • 管理好 React 组件的重新渲染,以避免不必要的 bpmn.js 初始化或重新加载。
  • 如果你的 BPMN 图表数据是动态变化的,确保在数据更新时正确地更新 bpmn.js 实例。

结论

虽然 bpmn.js 不是专门为 React 设计的,但你可以通过一些方法将其集成到你的 React 应用中。根据你的具体需求,你可以选择直接在 React 组件中使用 bpmn.js,使用社区提供的封装好的 React 组件,或者自己封装一个 React 组件。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐