欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

繪制flowable?流程圖的Vue?庫(kù)使用詳解

 更新時(shí)間:2022年09月09日 11:48:02   作者:江南一點(diǎn)雨  
這篇文章主要為大家介紹了繪制flowable?流程圖的Vue?庫(kù)使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

引言

之前松哥發(fā)了一篇文章和小伙伴們介紹了前端的 bpmn.js 這個(gè)庫(kù),利用這個(gè)庫(kù)我們可以自己將繪制流程圖的功能嵌入到我們的項(xiàng)目中。

然而,這個(gè)庫(kù)默認(rèn)是給 Camunda 設(shè)計(jì)的,所以畫(huà)出來(lái)的流程圖導(dǎo)出來(lái)的 XML 文件無(wú)法直接使用,必須要做一些深度定制,才能將 XML 文件轉(zhuǎn)為 Flowable 流程引擎可用的 XML 文件。這個(gè)深度定制太太太麻煩了。

所以我就在想前端有沒(méi)有現(xiàn)成的庫(kù),可以直接用來(lái)繪制 Flowable 流程圖的?找來(lái)找去,找到了兩個(gè),這兩個(gè)的相似度還蠻高的,不過(guò)這兩個(gè)都有一個(gè)問(wèn)題,那就是都是基于 Vue2 開(kāi)發(fā)的,在 Vue3 中用不了,算了,作為一個(gè)工具,Vue2 就 Vue2 吧,忍了。畢竟我也不是專業(yè)的前端工程師,掌握的前端技能能滿足我后端的需求也就足夠了,要是專業(yè)的前端工程師,我肯定把 bpmn.js+Vue3 整的明明白白了。

好啦,接下來(lái)就不廢話了,跟小伙伴們介紹一下這兩個(gè)可以繪制 Flowable 流程圖的前端庫(kù)。

workflow-bpmn-modeler

workflow-bpmn-modeler 基于 Vue 和 bpmn.io@7.0,實(shí)現(xiàn)了 flowable 的工作流設(shè)計(jì)器。使用這個(gè)流程繪制工具,建議采用 flowable6.4.1 版本,flowable6.4.2 版本開(kāi)始進(jìn)行商業(yè)化重構(gòu),為了方便刨碼學(xué)習(xí),推薦使用 flowable6.4.1 版本。

這個(gè)用法其實(shí)很簡(jiǎn)單,首先我們創(chuàng)建一個(gè) Vue2 的項(xiàng)目,注意 Vue 的版本不要選錯(cuò)了,項(xiàng)目創(chuàng)建好之后,添加 workflow-bpmn-modeler 依賴,執(zhí)行如下任意命令添加:

npm i workflow-bpmn-modeler

或者:

yarn add workflow-bpmn-modeler

添加完成后,package.json 內(nèi)容如下:

{
  "name": "bpmn_demo02",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build"
  },
  "dependencies": {
    "core-js": "^3.8.3",
    "element-ui": "^2.15.9",
    "vue": "^2.6.14",
    "vue-router": "^3.5.1",
    "workflow-bpmn-modeler": "^0.2.8"
  },
  "devDependencies": {
    "@vue/cli-plugin-babel": "~5.0.0",
    "@vue/cli-plugin-router": "~5.0.0",
    "@vue/cli-service": "~5.0.0",
    "vue-template-compiler": "^2.6.14"
  }
}

注意看版本號(hào)。

接下來(lái)我們就可以在一個(gè) .vue 文件中使用這個(gè)組件了,代碼如下:

<template>
  <div>
    <bpmn-modeler
            ref="refNode"
            :xml="xml"
            :users="users"
            :groups="groups"
            :categorys="categorys"
            :is-view="false"
            @save="save"
    />
  </div>
</template>

<script>
  import bpmnModeler from "workflow-bpmn-modeler";

  export default {
    components: {
      bpmnModeler,
    },
    data() {
      return {
        xml: "", // 后端查詢到的xml
        users: [
          { name: "javaboy", id: 1 },
          { name: "itboyhub", id: 2 },
          { name: "江南一點(diǎn)雨", id: 3 },
        ],
        groups: [
          { name: "經(jīng)理", id: 4 },
          { name: "組長(zhǎng)", id: 5 },
          { name: "員工", id: 6 },
        ],
        categorys: [
          { name: "OA", id: "oa" },
          { name: "財(cái)務(wù)", id: "finance" },
        ],
      };
    },
    methods: {
      getModelDetail() {
        // 發(fā)送請(qǐng)求,獲取xml
        // this.xml = response.xml
      },
      save(data) {
        console.log(data);  // { process: {...}, xml: '...', svg: '...' }
      },
    },
  };
</script>

我們來(lái)分析一下這段代碼:

首先從 workflow-bpmn-modeler 中導(dǎo)入 bpmnModeler。

注冊(cè) bpmnModeler 組件

在頁(yè)面中直接使用 bpmnModeler 組件,使用該組件時(shí)候,有五個(gè)屬性一個(gè)方法,我們挨個(gè)來(lái)說(shuō):

xml:這個(gè)屬性是 bpmnModeler 要展示的流程圖的 XML 字符串,我們可以提前給一個(gè)流程圖的 XML 字符串,這樣 bpmnModeler 組件就會(huì)將這個(gè) XML 字符串所對(duì)應(yīng)的流程圖給畫(huà)出來(lái),如果我們只是單純的想自己繪制流程圖,那么這個(gè)可以不用管,給一個(gè)空字符串就行了。

users:這是一個(gè)數(shù)組,當(dāng)我們配置 UserTask 的時(shí)候,可以設(shè)置這個(gè) UserTask 由誰(shuí)來(lái)處理,users 配置的就是這里用到的用戶。

groups:這個(gè)類似于 users,也是在 UserTask 中,如果我們想要配置一個(gè) UserTask 的候選組的話,那么就會(huì)用到 groups 中的內(nèi)容。

categorys:這個(gè)屬性親測(cè)沒(méi)有任何功能,源代碼我也看了,源代碼中也沒(méi)有用這個(gè)屬性,這完全就是一個(gè)沒(méi)有用的屬性,可忽略之。

is-view:這個(gè)表示當(dāng)前 bpmnModeler 是要畫(huà)流程圖還是單純的只是將流程圖展示出來(lái),false 表示我們是用 bpmnModeler 畫(huà)流程圖的,如果設(shè)置為 true,就表示 bpmnModeler 只是用來(lái)展示流程圖(提前準(zhǔn)備好流程圖的 XML 文件,可以用 bpmnModeler 將之展示出來(lái))。

@save:這個(gè)是點(diǎn)擊網(wǎng)頁(yè)上的保存模型按鈕的時(shí)候,會(huì)觸發(fā)的一個(gè)回調(diào)函數(shù)。

好啦,這就可以了。

接下來(lái),我們啟動(dòng) Vue 項(xiàng)目,就可以看到這個(gè)流程圖繪制頁(yè)面了:

現(xiàn)在就可以愉快的畫(huà)流程圖了~

接下來(lái),松哥就用這個(gè),手把手教大家畫(huà)一下之前文章中和大家用的請(qǐng)假流程圖,當(dāng)時(shí)的流程圖是這樣的:

我們來(lái)看下如何繪制:

  • 首先我們先來(lái)定義一下流程的基本信息:

  • 接下來(lái)繪制經(jīng)理批準(zhǔn)還是拒絕流程:

點(diǎn)擊這個(gè)扳手按鈕可以設(shè)置任務(wù)類型:

為這個(gè)任務(wù)設(shè)置一個(gè)監(jiān)聽(tīng)器:

設(shè)置監(jiān)聽(tīng)器的原因是因?yàn)榍岸擞脩粼谔峤徽?qǐng)假申請(qǐng)的時(shí)候,選擇審批人可以直接選擇審批人,也可以選擇審批人的身份(例如經(jīng)理),這兩種選擇都是被允許的。所以我們就添加一個(gè)任務(wù)監(jiān)聽(tīng)器,當(dāng)流程執(zhí)行到這個(gè) Task 的時(shí)候,我們就在任務(wù)監(jiān)聽(tīng)器中,根據(jù)前端傳來(lái)的參數(shù)去設(shè)置這個(gè)任務(wù)是由候選人處理還是候選用戶組處理。

  • 添加互斥網(wǎng)關(guān):

  • 審批通過(guò)線

接下來(lái),先是審批通過(guò),審批通過(guò)的條件是 approved 字段為 true 就表示審批通過(guò):

  • 審批通過(guò)發(fā)送通知

審批通過(guò)后,給用戶發(fā)送一個(gè)通知,這是一個(gè)服務(wù)任務(wù),發(fā)送通知的類是我們自己寫的,所以也需要配置一下自定義類的位置:

  • 結(jié)束

最后進(jìn)入到審批通過(guò) UserTask 并且結(jié)束:

  • 繪制拒絕線

按照如上流程,繼續(xù)繪制請(qǐng)假被拒絕的流程:

muheflow-bpmn-modeler

松哥要和大家介紹的第二個(gè)工具就是 muheflow-bpmn-modeler,這個(gè)基于 Vue 和 bpmn.io@8.0,實(shí)現(xiàn)了 flowable 的工作流設(shè)計(jì)器。使用這個(gè)流程繪制工具,建議采用 flowable6.4.1 版本,flowable6.4.2 版本開(kāi)始進(jìn)行商業(yè)化重構(gòu),為了方便刨碼學(xué)習(xí),推薦使用 flowable6.4.1 版本。

沒(méi)找到這個(gè)的源代碼,但是我發(fā)現(xiàn)這個(gè)的用法和 workflow-bpmn-modeler 的用法毫無(wú)差別~所以我就不廢話了,照著上面的用這個(gè)就行了。

以上就是繪制flowable 流程圖的Vue 庫(kù)使用詳解的詳細(xì)內(nèi)容,更多關(guān)于Vue 庫(kù)繪制flowable 流程圖 的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • vant之關(guān)于van-list的使用以及一些坑的解決方案

    vant之關(guān)于van-list的使用以及一些坑的解決方案

    這篇文章主要介紹了vant之關(guān)于van-list的使用以及一些坑的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Vue一次性簡(jiǎn)潔明了引入所有公共組件的方法

    Vue一次性簡(jiǎn)潔明了引入所有公共組件的方法

    這篇文章主要介紹了Vue一次性簡(jiǎn)潔明了引入所有公共組件的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • 如何解決element-ui中select下拉框popper超出彈框問(wèn)題

    如何解決element-ui中select下拉框popper超出彈框問(wèn)題

    這篇文章主要介紹了如何解決element-ui中select下拉框popper超出彈框問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • Vue組件中的父子組件使用

    Vue組件中的父子組件使用

    這篇文章主要介紹了Vue組件中的父子組件使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • 基于Vue的Drawer組件實(shí)現(xiàn)

    基于Vue的Drawer組件實(shí)現(xiàn)

    本文將從零實(shí)現(xiàn)一個(gè)Drawer抽屜組件,組件用 vue2 語(yǔ)法寫的,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • vue如何根據(jù)條件判斷按鈕是否可以點(diǎn)擊

    vue如何根據(jù)條件判斷按鈕是否可以點(diǎn)擊

    這篇文章主要介紹了vue如何根據(jù)條件判斷按鈕是否可以點(diǎn)擊,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue指令v-html使用過(guò)濾器filters功能實(shí)例

    vue指令v-html使用過(guò)濾器filters功能實(shí)例

    在本篇文章里我們給大家整理的是關(guān)于vue指令v-html使用過(guò)濾器filters功能的實(shí)例內(nèi)容,需要的朋友們學(xué)習(xí)下。
    2019-10-10
  • vue+threejs寫物體動(dòng)畫(huà)之物體縮放動(dòng)畫(huà)效果

    vue+threejs寫物體動(dòng)畫(huà)之物體縮放動(dòng)畫(huà)效果

    最近在vue中安裝Three.js,無(wú)聊順便研究一些關(guān)于3D圖形化庫(kù),下面這篇文章主要給大家介紹了關(guān)于vue+threejs寫物體動(dòng)畫(huà)之物體縮放動(dòng)畫(huà)效果的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • vue源碼解析computed多次訪問(wèn)會(huì)有死循環(huán)原理

    vue源碼解析computed多次訪問(wèn)會(huì)有死循環(huán)原理

    這篇文章主要為大家介紹了vue源碼解析computed多次訪問(wèn)會(huì)有死循環(huán)原理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • 詳解Vue基于 Nuxt.js 實(shí)現(xiàn)服務(wù)端渲染(SSR)

    詳解Vue基于 Nuxt.js 實(shí)現(xiàn)服務(wù)端渲染(SSR)

    直接使用 Vue 構(gòu)建前端單頁(yè)面應(yīng)用,頁(yè)面源碼時(shí)只有簡(jiǎn)單的幾行 html,這并不利于網(wǎng)站的 SEO,這時(shí)候就需要服務(wù)端渲染,本篇文章主要介紹了詳解Vue基于 Nuxt.js 實(shí)現(xiàn)服務(wù)端渲染(SSR),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-04-04

最新評(píng)論