vue3.0 bpmn-js + TS 简易教程

前言

bpmn.js是一个BPMN2.0渲染工具包和web建模器, 使得画流程图的功能在前端来完成.
这里主要记录本人在开发bpmn中的流程
参照了 LinDaiDai_霖呆呆 大佬的文档

在这里插入图片描述

实战

  • 安装 bpmn
npm install --save bpmn-js
  • HTML
<template>
  <div class="designer-container">
    <div id="container" class="containerBox"></div> // 画布
    <div id="js-properties-panel" class="panel"></div> // 右边面板
  </div>
</template>
  • JS
<script setup name="useProTableDetail">
import { markRaw, onMounted, ref } from "vue";
import BpmnModeler from "bpmn-js/lib/Modeler";
import {
  BpmnPropertiesPanelModule,
  BpmnPropertiesProviderModule
  // CamundaPlatformPropertiesProviderModule // 右边多余的属性
} from "bpmn-js-properties-panel";
import camundaModdleDescriptor from "camunda-bpmn-moddle/resources/camunda";

let containerEl = ref(null);
let bpmnModeler = ref(null);
onMounted(async () => {
  init();
});

/**
 * 初始化流程图
 */
let init = () => {
  containerEl.value = document.getElementById("container");
  // 加markRaw去除双向绑定作用域
  bpmnModeler.value = markRaw(
    new BpmnModeler({
      container: containerEl.value,
      //添加控制板
      propertiesPanel: {
        parent: "#js-properties-panel"
      },
      additionalModules: [
        // 右边的属性栏
        BpmnPropertiesPanelModule,
        BpmnPropertiesProviderModule,
      ],
      moddleExtensions: {
        camunda: camundaModdleDescriptor
      }
    })
  );
  bpmnModeler.value.createDiagram(() => { // 自适应大小
    bpmnModeler.value.get("canvas").zoom("fit-viewport");
  });
};
</script>
  • CSS
<style lang="scss">
@import "./styleCss.scss";
@import "bpmn-js/dist/assets/diagram-js.css";
@import "bpmn-js/dist/assets/bpmn-font/css/bpmn-embedded.css";
@import "bpmn-js-properties-panel/dist/assets/properties-panel.css"; // 右边工具栏样式
</style>
  • styleCss.scss 这个是自己写的样式文件
.processDrawBody {
  height: 100%;
  text-align: left;
}
.containerBox {
  width: 100%;
  flex: 1;
  overflow: hidden;
  display: flex;
}
.containerBox #container {
  height: 100%;
  border: 1px solid rgb(121, 121, 121);
}
.bpp-properties-panel [type="text"] {
  box-sizing: border-box;
}
.panel {
  width: 400px;
  position: absolute;
  top: 1px;
  right: 1px;
  height: 100%;
  overflow: auto;
}
/* 右下角logo */
.bjs-powered-by {
  display: none;
}
.designer-container {
  height: 100%;
  width: 100%;
  margin: 0;
  padding: 0;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  position: relative;
}

在这里插入图片描述
以上就是vue3.0 bpmn-js + TS 简易教程感谢大家的阅读
如碰到其他的问题 可以私下我 一起探讨学习
如果对你有所帮助还请 点赞 收藏谢谢~!
关注收藏博客 作者会持续更新…

### RuoYi Vue3 集成 Flowable 工作流引擎 #### 项目概述 RuoYi-flowable 是一个基于 RuoYi-Vue 和 Flowable 的工作流管理平台,旨在提供简单易用的工作流解决方案。随着技术的发展,出现了多个改进版,如 KonBAI/RuoYi-Flowable-Plus 提供了更多的高级特性和支持[^1]。 #### 技术栈介绍 为了适应现代前端开发的需求,一些版本已经迁移到 Vue3 并进行了相应调整。例如 ruoyi-nbcio-plus 版本不仅升级到了 Spring Boot 3 和 Vite 构建工具链,还完成了对 Vue3 的适配工作[^3]。 #### 安装配置指导 要在一个新的或现有的 RuoYi-Vue3 应用程序中集成 Flowable 引擎,通常需要完成以下几个方面: - **环境准备** 确保本地环境中已安装 Node.js、npm/yarn 等必要的构建工具,并设置好 Java 运行时环境以便运行后端服务。 - **依赖引入** 在项目的 `pom.xml` 文件里添加 Flowable 相关 Maven 依赖项来获取最新稳定版本的库文件;而在前端部分,则需通过 npm 或 yarn 来安装任何额外所需的 JavaScript/CSS 插件。 - **数据库初始化** 按照官方文档指示创建并迁移数据库结构,这一步骤非常重要因为它涉及到存储业务逻辑以及流程实例的数据模型。 - **API 接口对接** 实现 RESTful API 或 GraphQL 查询接口用于前后端交互,允许客户端发送请求操作服务器上的资源比如启动新流程、查询历史记录等。 - **UI 组件开发** 根据实际应用场景设计合适的用户界面组件,这些可能包括但不限于任务列表视图、表单编辑器、图表展示区等等。特别注意处理像定时边界事件这样的特殊功能点时应遵循最佳实践以避免潜在错误[^4]。 ```javascript // 示例:Vue3 中条件渲染 TimerEventDefinition <template> <div v-if="businessObject.eventDefinitions && businessObject.eventDefinitions[0].$type.includes(&#39;TimerEventDefinition&#39;)"> <!-- 渲染定时边界事件相关内容 --> </div> </template> <script setup lang="ts"> import { ref } from &#39;vue&#39;; const businessObject = ref({ eventDefinitions: [ { $type: &#39;bpmn:TimerEventDefinition&#39; } ] }); </script> ```
评论 36
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

下一站丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值