前言
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 简易教程感谢大家的阅读
如碰到其他的问题 可以私下我 一起探讨学习
如果对你有所帮助还请 点赞
收藏谢谢~!
关注收藏博客 作者会持续更新…