精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

沒有一個順手的流程繪制工具?好吧,自己動手,豐衣足食!

開發 開發工具
今天跟大家介紹另外一個工具 bpmn.js,利用這個,再結合大家熟悉的 Vue,我們就可以開發出一個自己的流程繪制工具,一起來看下。

流程繪制工具感覺也挺常用的,而且流程圖基本上也都標準化了,標準化的東西其實是最容易做的,但是 IDEA 上卻一直沒有一個稱手的流程繪制工具,其實這也是一個機會吧哈哈,自己搞一個 IDEA 插件~

不過這個機會留給各位正在閱讀本文的小伙伴吧,松哥今天跟大家介紹另外一個工具 bpmn.js,利用這個,再結合大家熟悉的 Vue,我們就可以開發出一個自己的流程繪制工具,一起來看下。

先看下效果圖:

圖片

好了,不廢話了,開搞!

1. bpmn.js

bpmn.js 是一個工具包,利用這個工具包,我們可以非常方便的在瀏覽器中創建、嵌入或者擴展一個 BPMN 流程圖,重要的是,這個過程非常 Easy,我們只需要少量代碼即可實現這一目標。

不知道看文章的小伙伴們日常工作中接觸流程圖多不多,如果經常接觸的話,我估計有不少小伙伴可能都見過基于 bpmn.js 構建出來的流程圖繪制工具。

因為 flowable-ui 這種太重量級了,如果我們單純的只是想在自己的項目中嵌入一個流程繪制工具,那么顯然 bpmn.js 是最佳選擇。

網上其實也有不少關于 bpmn.js 的文章,不過當和 Vue 整合的時候,基本上都用的是 Vue2,而這個工具在 Vue2 和 Vue3 的使用中,還是有不少差異的,今天松哥就以 Vue3 為例,來和小伙伴們分享一下這個工具在 Vue3 中的使用。

2. + Vue3

2.1 項目創建

首先我們執行如下命令,來創建一個 Vue3 項目:

npm create vite@latest bpmn_demo --template vue
cd bpmn_demo
npm install
npm run dev

創建完成后,我們先來裝上 bpmn.js 所需要的依賴,一共是三個依賴:

  • bpmn-js

這是最核心的流程繪制工具了。

  • bpmn-js-properties-panel

這是 bpmn-js 的屬性面板,流程圖中的每一個節點都有屬性,如果需要配置這些數據,就需要用到這個依賴,小伙伴們看看下圖中右邊的部分,就是這個依賴實現的功能:

圖片

  • camunda-bpmn-moddle

如果你的流程引擎使用了 Camunda,那么可以通過 camunda-bpmn-moddle 模塊來配置該流程所支持的任務屬性。

好啦,廢話不多說,先把這三個依賴依次安裝上:

npm install bpmn-js
npm install bpmn-js-properties-panel
npm install camunda-bpmn-moddle

另外,松哥親測,還需要安裝 @bpmn-io/properties-panel 和 inherits 用以解決依賴內部的兼容性問題,安裝命令如下:

npm i @bpmn-io/properties-panel
npm i inherits

另外,項目中用到了一個 ElementUI 的按鈕,所以需要安裝上 ElementUI-Plus,如下:

npm install element-plus --save

裝好之后,我給大家看下我安裝的版本,都是目前最新版:

{
"name": "bpmn_demo",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview"
},
"dependencies": {
"@bpmn-io/properties-panel": "^0.19.0",
"bpmn-js": "^9.4.0",
"bpmn-js-properties-panel": "^1.5.0",
"camunda-bpmn-moddle": "^6.1.2",
"element-plus": "^2.2.14",
"inherits": "^2.0.4",
"vue": "^3.2.37"
},
"devDependencies": {
"@vitejs/plugin-vue": "^3.0.3",
"vite": "^3.0.7"
}
}

松哥親測,如果使用 Webpack 而不是 Vite 來構建項目的話,那么可以不用安裝 inherits,這個小伙伴們根據自己的實際情況安裝即可,項目創建完成后,如果提示缺少這個組件就安裝一下,如果不提示那就忽略即可。

2.2 開發頁面

用 Vite 新建的項目默認沒有安裝路由,配路由也比較麻煩,所以我這里就省事一些,我直接新建一個組件來寫我們的頁面,將來在 App.vue 中引入我這個新建的組件即可。

首先我新建一個名為 BpmnView 的組件,然后在這個組件中配置 bpmn.js,內容如下:

<div>
<div class="containers" style="display: flex;width:100%;height: 96vh">
<div class="canvas" style="width: 100%" id="canvas"></div>
<div id="properties">
</div>
</div>
<div style="display:flex;justify-content: flex-end">
<el-button @click="downloadXML" type="primary" :icon="Download">下載</el-button>
</div>
</div>

小伙伴們看到,這個頁面整體上分為兩部分,上面是我們繪制的主區域,包括繪圖區以及屬性設置區;下面則放了一個下載流程圖 XML 文件的按鈕。

在上面的主繪制區,我們放了兩個東西,一個是畫布 canvas,另一個是屬性 properties,canvas 就是流程圖繪制時候的核心區域,properties 則是流程中的每一個節點的屬性配置。

參考下圖,大家就知道 canvas 和 properties 分別表示什么了:

圖片

接下來我們先來初始化左邊的 canvas。

2.2.1 canvas

首先我們來看下左邊的 Canvas 該如何初始化。

<script setup>
import { onMounted} from 'vue';

import BpmnModeler from 'bpmn-js/lib/Modeler';

let bpmnModeler;
onMounted(() => {
// 建模
bpmnModeler = new BpmnModeler({
container: '#canvas'
})
bpmnModeler.createDiagram();
})
</script>

這個初始化工作在 onMounted 回調中完成。

創建 BpmnModeler 并設置畫布。

調用 createDiagram 方法開始繪圖。

配置完成后,還要記得在 main.js 中引入樣式文件,如下:

import 'bpmn-js/dist/assets/diagram-js.css'
import 'bpmn-js/dist/assets/bpmn-font/css/bpmn.css'
import 'bpmn-js/dist/assets/bpmn-font/css/bpmn-codes.css'
import 'bpmn-js/dist/assets/bpmn-font/css/bpmn-embedded.css'

現在就可以了,左邊可以開始畫流程圖了。

2.2.2 properties

再來看右邊屬性的配置。

首先在 main.js 中加入右邊屬性的樣式文件:

import 'bpmn-js-properties-panel/dist/assets/properties-panel.css'

然后繼續在 BpmnView.vue 中進行配置即可:

<script setup>
import {onMounted} from 'vue';

import BpmnModeler from 'bpmn-js/lib/Modeler';
import {
BpmnPropertiesPanelModule,
BpmnPropertiesProviderModule,
CamundaPlatformPropertiesProviderModule
} from 'bpmn-js-properties-panel';
import CamundaExtensionModule from 'camunda-bpmn-moddle/lib';
import camundaModdleDescriptors from 'camunda-bpmn-moddle/resources/camunda';

let bpmnModeler;
onMounted(() => {
// 建模
bpmnModeler = new BpmnModeler({
container: '#canvas', propertiesPanel: {
parent: '#properties'
},
additionalModules: [
BpmnPropertiesPanelModule,
BpmnPropertiesProviderModule,
CamundaPlatformPropertiesProviderModule,
CamundaExtensionModule
],
moddleExtensions: {
camunda: camundaModdleDescriptors
}
})
bpmnModeler.createDiagram();
})
</script>

在創建 BpmnModeler 的時候,通過 propertiesPanel 去指定 parent 的位置,再把另外五個額外的模塊掛載上去就行了,這五個模塊分別代表不同的屬性,我就不挨個說了,小伙伴們可以自行嘗試刪除掉一個屬性,看看哪些屬性少了,就知道這個模塊的功能了。

2.2.3 下載按鈕

最后再來看看下載按鈕的點擊事件。

function downloadXML() {
bpmnModeler.saveXML({format: true}, (err, xml) => {
if (!err) {
console.log(xml);
// 獲取文件名
const name = getFileName(xml);
// 把輸就轉換為URI,下載要用到的
const encodedData = encodeURIComponent(xml);
const downloadLink = document.createElement('a');
if (xml) {
// 將數據給到鏈接
downloadLink.href =
"data:application/bpmn20-xml;charset=UTF-8," + encodedData;
// 設置文件名
downloadLink.download = name;
// 觸發點擊事件開始下載
downloadLink.click();
}
}
})
}
function getFileName(xml) {
let split = xml.split('process id="');
return split[1].split('" ')[0]+".bpmn20.xml";
}

調用 bpmnModeler.saveXML 方法,回調中的 xml 參數就是生成的流程圖 XML 文件,然后創建一個虛擬的 a 標簽,模擬一個點擊事件即可完成下載。

getFileName 方法則是從下載的 XML 文件中截取出來 bpmn:process 標簽的 id 值作為文件名,這也符合我們日常的命名習慣。

好啦,大功告成!以后就可以使用我們自己的流程繪制工具來畫流程圖了。

不過有一個小小遺憾,就是這個是針對 Camunda 這個流程引擎的,如果所以他畫出來的流程圖并不能直接用在 Flowable 中,如果想在 Flowable 中使用,還需要一點額外的定制,這個咱們以后再說。

3. 小結

bpmn.js 最大的優勢在于可以根據自己項目的需求,方便的嵌入到已有項目中。好啦,公眾號江南一點雨后臺回復 bpmn_demo 可以下載文本完整案例。

責任編輯:武曉燕 來源: 江南一點雨
相關推薦

2011-07-19 09:36:24

SplitSQL

2011-07-12 13:01:33

2024-12-06 09:58:09

2017-03-02 13:31:02

監控系統

2017-02-14 10:20:43

Java Class解析器

2023-12-16 13:21:00

Python元類ORM

2010-06-13 15:08:05

Linux 查看網絡流

2010-06-04 14:24:12

Linux 查看網絡流

2015-06-02 09:51:40

iOS網絡請求封裝接口

2015-06-02 10:24:43

iOS網絡請求降低耦合

2010-05-13 09:50:56

Google服務器公共云供應商

2024-03-08 12:45:00

C#Web服務器

2021-05-10 07:35:11

SwaggeYApi部署

2021-04-26 07:31:22

SpringMVCweb框架

2015-06-02 09:41:00

iOS網絡請求NSURLSessio

2024-01-08 13:47:00

代碼分析工具

2013-08-02 09:42:37

BYODBYOC云存儲

2021-08-21 15:40:24

CPU計算機電子領域

2019-03-21 09:45:20

IM即時通訊CIM

2020-12-18 09:49:21

鴻蒙HarmonyOS游戲
點贊
收藏

51CTO技術棧公眾號

亚洲三级电影在线观看| 久久青青视频| 成人午夜又粗又硬又大| 久久久噜噜噜久久久| 欧美xxxxx精品| 国产一区二区三区朝在线观看| 国产精品灌醉下药二区| 97超碰资源| 欧美亚洲另类小说| 欧美精品综合| 亚洲视频日韩精品| 国产ts在线观看| 第四色男人最爱上成人网| 亚洲精品视频在线看| 日本不卡二区| 亚洲精品一级片| 日韩国产欧美一区二区三区| 九色精品免费永久在线| 国产一二三四区在线| 澳门久久精品| 在线91免费看| 国产a视频免费观看| 曰本三级在线| 中文字幕av一区 二区| 国产一区二区免费在线观看| 国产精品高潮呻吟av| 亚洲欧美久久久| 欧美成人免费小视频| 欧洲美熟女乱又伦| 欧美黑人做爰爽爽爽| 欧美一区二区三区免费大片| 杨幂毛片午夜性生毛片| jizzjizz中国精品麻豆| 天堂资源最新在线| 精品国产乱码久久久久久1区2匹 | 看片网址国产福利av中文字幕| 欧美www视频在线观看| 亚洲女人天堂成人av在线| 成人啪啪18免费游戏链接| 成人激情久久| 欧美午夜在线一二页| 日本免费不卡一区二区| 美足av综合网| 亚洲一区日韩精品中文字幕| 老汉色影院首页| 在线激情小视频| 欧美国产激情一区二区三区蜜月| 久久久久久久久四区三区| 日本美女一级片| 东方aⅴ免费观看久久av| 亚洲最大的av网站| а√中文在线资源库| 国产一区二区伦理片| 成人久久一区二区三区| 97超碰中文字幕| 美女在线视频一区| 国产欧美精品一区二区三区-老狼 国产欧美精品一区二区三区介绍 国产欧美精品一区二区 | 亚洲成人精品久久久| 日本wwww色| 福利片一区二区| 亚洲国产精品女人久久久| 日本一级大毛片a一| 国产精品久久久久av蜜臀| 亚洲国产福利在线| 国产麻豆天美果冻无码视频| 青草久久视频| 亚洲香蕉成视频在线观看| 韩国三级hd中文字幕| 欧美综合一区| 久久躁日日躁aaaaxxxx| 久久国产波多野结衣| 欧美福利在线| 久久久欧美精品| 久久亚洲精品国产| 日日夜夜精品视频免费| 国产日韩欧美中文| 国产xxxxxx| 91在线视频播放| 日韩av在线电影观看| av成人手机在线| 亚洲精品国产视频| 成年人午夜视频在线观看 | 国产精品久久久久免费a∨大胸| 国产黄色免费视频| 国产综合色视频| 国模精品一区二区三区| 久草在线青青草| 亚洲欧美成人一区二区三区| 日韩精品久久一区二区| 厕沟全景美女厕沟精品| 欧美日韩不卡在线| 黄色网址在线视频| 日韩精品四区| 97精品久久久| 一级日韩一级欧美| 成人的网站免费观看| 偷拍视频一区二区| 里番在线播放| 欧美色国产精品| 少妇献身老头系列| 色爱综合网欧美| 午夜精品国产精品大乳美女| 高潮无码精品色欲av午夜福利| 精品午夜久久福利影院| 乱色588欧美| 尤物yw193can在线观看| 日本韩国一区二区三区| 国产伦理在线观看| 99精品视频在线| 51久久精品夜色国产麻豆| av加勒比在线| 欧美激情一区在线观看| 秋霞无码一区二区| 9999在线精品视频| 亚洲人高潮女人毛茸茸| 久久久久亚洲天堂| 极品少妇xxxx精品少妇偷拍| 欧美精品一区在线| 成人高潮aa毛片免费| 欧美精品在线观看一区二区| 国产xxxxxxxxx| 综合激情婷婷| 91精品久久久久久久久| 欧美婷婷久久五月精品三区| 亚洲一区二区av在线| 波多野结衣国产精品| 欧美男gay| 538国产精品一区二区在线| 亚洲av无码国产精品永久一区 | 亚洲乱码一区二区三区三上悠亚 | 色综合久久久网| www日本在线观看| 亚洲精品91| 国产精品中文久久久久久久| 久草福利在线| 欧美性69xxxx肥| 亚洲天堂av网站| 欧美精品1区| 91黄色精品| 九色porny在线| 欧美浪妇xxxx高跟鞋交| 999久久久国产| 裸体在线国模精品偷拍| 日本一区二区三区免费看| 欧美电影免费观看高清完整| 日韩精品视频免费专区在线播放| 日本在线观看视频网站| 成人a免费在线看| 国产精品999视频| 欧美天堂影院| 欧洲一区二区视频| 男生女生差差差的视频在线观看| 日韩欧美中文字幕在线播放| 亚洲狠狠婷婷综合久久久久图片| 99精品国产在热久久婷婷| 含羞草久久爱69一区| 老司机深夜福利在线观看| 日韩电视剧在线观看免费网站| 成人免费看片98欧美| 久久亚洲综合av| 欧美 日韩 国产 激情| 欧美熟乱15p| 91九色国产社区在线观看| av在线导航| 日韩欧美电影一二三| 国产主播在线观看| 久久综合久久综合久久| 一区二区三区韩国| 亚洲一区二区日韩| 国产精品成人一区二区三区| 亚洲精品国产精品国产| 亚洲系列中文字幕| av中文字幕观看| 亚洲国产aⅴ天堂久久| 亚洲综合网在线观看| 麻豆免费精品视频| 真实国产乱子伦对白视频| 欧美一区 二区| 国产精品视频久久| 男女在线观看视频| 亚洲免费福利视频| 国产精品久久久久久免费免熟 | 成人短视频在线观看免费| 国产成人av毛片| 国产成+人+综合+亚洲欧洲| 在线免费观看黄色网址| 欧美本精品男人aⅴ天堂| 男女啊啊啊视频| 国产精品狼人久久影院观看方式| 免费黄视频在线观看| 午夜一区在线| 五月天男人天堂| 天海翼精品一区二区三区| 国产精品偷伦视频免费观看国产| 欧洲在线视频| 中文字幕av一区中文字幕天堂| 国产高清视频免费| 日本丰满少妇一区二区三区| 欧美精品99久久久| 国产三级欧美三级| 性高潮久久久久久| 日本vs亚洲vs韩国一区三区二区| 高清无码视频直接看| 精品精品99| 国产一区免费观看| 成人自拍视频| 国产成人精品免费视频| 免费在线播放电影| 久久亚洲欧美日韩精品专区 | 久久精品国产亚洲| 三级在线观看| 欧美岛国在线观看| 中文字幕人妻色偷偷久久| 天天综合色天天| 久久精品视频免费在线观看| 国产欧美精品国产国产专区 | 亚洲精华国产精华精华液网站| 色老头久久综合| 日韩网红少妇无码视频香港| 亚洲欧美日韩电影| 免费看一级黄色| 久久综合给合久久狠狠狠97色69| 麻豆短视频在线观看| 久久99国产乱子伦精品免费| 国产又黄又猛视频| 伊人成人网在线看| 大荫蒂性生交片| 牛牛国产精品| 亚洲精品偷拍视频| 91亚洲成人| 亚洲黄色成人久久久| 国产亚洲一卡2卡3卡4卡新区| 国产一区二区久久久| 国产成人一二| 国产精品v欧美精品∨日韩| 日本一区二区三区播放| 成人黄色在线免费| 日韩美女在线| 国产一区二区在线播放| 国产精品xxx| 国产精品无码专区在线观看| 欧美日韩激情电影| 国产精品激情自拍| 免费高清视频在线一区| 国产精品91久久| 最新日韩一区| 国产精品狼人色视频一区| 日韩a**中文字幕| 国产成人综合亚洲| 99只有精品| 91久久久久久久一区二区| 精品精品视频| 99在线首页视频| 国产精品xxx在线观看| 好吊色欧美一区二区三区| 西野翔中文久久精品国产| 欧洲久久久久久| 色综合蜜月久久综合网| 在线观看日韩羞羞视频| 综合久久一区| 老太脱裤子让老头玩xxxxx| 亚洲综合国产| 2025韩国理伦片在线观看| 美女在线视频一区| 乳色吐息在线观看| 99久久综合99久久综合网站| 右手影院亚洲欧美| 国产精品青草久久| 一区二区三区四区五区| 亚洲国产一区二区三区| 中文字字幕在线中文| 欧美色综合天天久久综合精品| 国产又粗又长又黄| 亚洲精品一区二区三区福利 | 久青草国产97香蕉在线视频| 色呦呦在线资源| 欧美影院在线播放| 综合欧美精品| 精品欧美国产一区二区三区不卡| 国产最新精品| 天堂а√在线中文在线| 亚洲欧洲日本mm| 国产又大又黄又粗又爽| 国产成人精品免费视频网站| 人妻在线日韩免费视频| 国产精品网友自拍| 国产真实夫妇交换视频| 欧美色图片你懂的| 午夜精品久久久久久久96蜜桃 | 这里只有精品免费| 殴美一级特黄aaaaaa| 在线观看日韩www视频免费| 韩国日本一区| 国产又爽又黄的激情精品视频| 国产精品chinese在线观看| 日韩经典在线视频| 黄色另类av| 无限资源日本好片| 91原创在线视频| 免费三级在线观看| 一本到不卡精品视频在线观看| 国产日韩一级片| 亚洲深夜福利视频| xxx.xxx欧美| 国产色视频一区| 国产中文精品久高清在线不| www.国产在线视频| 久久99精品视频| 精品无人区无码乱码毛片国产| 亚洲在线视频网站| 一级片视频免费| 在线激情影院一区| 涩涩网在线视频| 国产厕所精品在线观看| 99热在线成人| 国产小视频精品| 26uuu国产电影一区二区| 久草视频在线资源| 欧美美女黄视频| 丁香婷婷在线| 奇米4444一区二区三区| 波多野结衣在线一区二区 | 日韩一区二区电影在线| 97视频在线观看网站| 欧美亚洲免费电影| 国产精品国产| youjizz.com在线观看| 国内精品自线一区二区三区视频| 中字幕一区二区三区乱码| 欧美日韩在线免费| 人妻少妇精品无码专区| 欧美激情极品视频| 国产精品日韩精品在线播放| 亚洲人久久久| 美日韩一区二区| 亚洲欧美另类日本| 欧美日韩国产首页| 午夜在线视频播放| 国产狼人综合免费视频| 99久久精品网站| 国产3p在线播放| 成人免费在线播放视频| 一级全黄裸体免费视频| 久久久99久久精品女同性| 日本一区二区三区中文字幕| 亚洲高清123| 久久福利视频一区二区| 日韩在线视频网址| 日韩欧美亚洲另类制服综合在线 | 国产a∨精品一区二区三区不卡| 欧美日韩一本| 国产a级片免费观看| 亚洲国产精品v| 一级黄色片在线| 欧美精品免费在线观看| 国产毛片精品| 国产精品欧美激情在线观看| 久久久综合九色合综国产精品| 国产又粗又猛又黄视频| 在线观看国产精品91| 国产精品久一| www.射射射| 久久久精品欧美丰满| 最近中文字幕在线观看视频| 久久精品99无色码中文字幕| 精品一区二区三区视频在线播放| 欧美精品在欧美一区二区| 91污片在线观看| 在线免费看毛片| 欧美人成在线视频| 亚洲高清极品| 日韩欧美国产片| 亚洲高清免费一级二级三级| 日本韩国精品一区二区| 国产美女91呻吟求| 欧美日本三区| 无码人妻精品一区二区三应用大全| 欧美日韩国产美| 99爱在线观看| 亚洲aⅴ天堂av在线电影软件| 国产精品小仙女| 国产精品久久久久久人| 久久五月天色综合| 欧美一级三级| 欧美成人乱码一二三四区免费| 亚洲观看高清完整版在线观看| 激情福利在线| av在线不卡一区| 日韩精品一级二级| 免费看一级一片| 国产一区二区三区日韩欧美| 91成人精品在线| 亚洲黄色av网址| 亚洲成在人线免费| 香蕉视频网站在线观看| 久久久久久草| 国产福利电影一区二区三区| 久久久久久无码精品大片| 欧美韩日一区二区| 欧美综合久久|