国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

關(guān)于工作流開(kāi)發(fā)前端選型的一點(diǎn)個(gè)人見(jiàn)解(bpmn.js與LogicFlow)

這篇具有很好參考價(jià)值的文章主要介紹了關(guān)于工作流開(kāi)發(fā)前端選型的一點(diǎn)個(gè)人見(jiàn)解(bpmn.js與LogicFlow)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

掘金2023年度人氣創(chuàng)作者打榜中,快來(lái)幫我打榜吧~ https://activity.juejin.cn/rank/2023/writer/747323639208391?utm_campaign=annual_2023&utm_medium=self_web_share&utm_source=MiyueFE

前言

首先需要明確的一點(diǎn)是,本文的出發(fā)點(diǎn) 純粹是針對(duì)工作流開(kāi)發(fā) 的場(chǎng)景的選型對(duì)比,其他業(yè)務(wù)場(chǎng)景下建議重新調(diào)研。

什么是工作流?

工作流,即 Workflow,是對(duì)工作流程及其各操作步驟之間業(yè)務(wù)規(guī)則的抽象、概括描述。工作流建模,即將工作流程中的工作如何前后組織在一起的邏輯和規(guī)則,在計(jì)算機(jī)中以恰當(dāng)?shù)哪P捅磉_(dá)并對(duì)其實(shí)施計(jì)算。工作流要解決的主要問(wèn)題是:為實(shí)現(xiàn)某個(gè)業(yè)務(wù)目標(biāo),利用計(jì)算機(jī)在多個(gè)參與者之間按某種預(yù)定規(guī)則自動(dòng)傳遞文檔、信息或者任務(wù)。

以上是維基百科對(duì) 工作流技術(shù) 的定義。之所以稱(chēng)為 技術(shù),是因?yàn)槠渲邪?業(yè)務(wù)規(guī)則抽象與規(guī)則模型的創(chuàng)建,并可以將其用來(lái)實(shí)現(xiàn)一系列自動(dòng)化操作。通常來(lái)說(shuō),一個(gè)工作流的定義,包含至少一個(gè) 觸發(fā)點(diǎn) 與一個(gè) 終止點(diǎn),當(dāng)被觸發(fā)后會(huì)由觸發(fā)點(diǎn)沿著定義的路徑和條件自動(dòng)流轉(zhuǎn)直到進(jìn)入終止點(diǎn)。

所以工作流常常會(huì)與 規(guī)則引擎 結(jié)合使用。

而為了使得業(yè)務(wù)人員也能快速理解和創(chuàng)建一套符合業(yè)務(wù)規(guī)范的工作流,最后由 OMG 發(fā)布了 BPMN(全稱(chēng) Business Process Model and Notation,業(yè)務(wù)流程模型和標(biāo)記法)規(guī)范,用來(lái)標(biāo)準(zhǔn)化和約束對(duì)工作流的定義,并實(shí)現(xiàn)業(yè)務(wù)人員與實(shí)際程序的解耦,兩者由 XML 進(jìn)行信息交互。

既然有了工作流,那么就需要后端的對(duì)應(yīng)的 工作流引擎 了。

什么是工作流引擎?

既然定義了一套工作流,那么就需要對(duì)應(yīng)的后臺(tái)服務(wù)來(lái)解析和運(yùn)行這一套工作流定義。所以工作流引擎其實(shí)就是 一套用來(lái)解析工作流定義并根據(jù)根據(jù)定義驅(qū)動(dòng)工作流正常執(zhí)行和流轉(zhuǎn)的系統(tǒng)。

就目前來(lái)說(shuō),常用的一般有 Camunda、Activiti、Flowable、Jbpm,也有一些國(guó)內(nèi)自研的工作流平臺(tái)。不過(guò)目前仍然以最前面的三個(gè)使用更為廣泛。

以這三個(gè)平臺(tái)為例,它們?cè)诮邮諅魅牍ぷ髁鞫x時(shí),都是接收 符合 BPMN2 規(guī)范的 XML 字符串,當(dāng)然好像也可以接收 json 對(duì)象,但是并不是都支持 json。

那么在了解了工作流的相關(guān)內(nèi)容之后,再進(jìn)入正題。

bpmn.js

首先,bpmn.js 目前 沒(méi)有 官方的中英文文檔,TypeScript 支持也依然不良好,討論區(qū)當(dāng)前只有官方提供的一個(gè)全英文社區(qū),如果你是一個(gè)才入前端不久又需要搞這個(gè)的話,建議你趕??!緊?。?!跑!?。。?!

開(kāi)個(gè)玩笑,這里先介紹一下 bpmn.js 的基本情況~

在 Camunda 平臺(tái)發(fā)展一段時(shí)間之后,由 camunda 團(tuán)隊(duì)內(nèi)部以 nikko 為首組織了一個(gè)小團(tuán)隊(duì) bpmn.io ,開(kāi)發(fā)了 bpmn.js

在進(jìn)入 bpmn.js 倉(cāng)庫(kù)就可以看到:bpmn-js - BPMN 2.0 for the web,也側(cè)面反應(yīng)了這個(gè)庫(kù)就是 純粹的為了在 web 頁(yè)面上處理 BPMN 2.0 規(guī)范工作流的。它的介紹也是:View and edit BPMN 2.0 diagrams in the browser,即在瀏覽器查看和編輯 BPMN2.0 圖。

bpmn.js 基于 SVG 實(shí)現(xiàn)網(wǎng)頁(yè)工作流的可視化編輯,通過(guò)內(nèi)部邏輯實(shí)現(xiàn) SVG 與 XML 之間的相互轉(zhuǎn)換,所以要使用這個(gè)庫(kù)起碼你的瀏覽器需要支持 SVG(死去的 IE 突然攻擊我~)

內(nèi)部,bpmn.js 依賴(lài) bpmn-moddlemoddle 兩個(gè)庫(kù)實(shí)現(xiàn) JS 對(duì)象與 xml 的轉(zhuǎn)換,再由 bpmn-moddlediagram.js 實(shí)現(xiàn) JS 對(duì)象和 SVG 之間綁定與切換。

diagram.js 提供了最基礎(chǔ)的繪圖能力與 js 操控,并提供了基礎(chǔ)的工具能力模塊。

當(dāng)然,由于 bpmn.js 的團(tuán)隊(duì)本身就屬于 camunda,所以在對(duì) camunda 的支持上是十分優(yōu)秀的。

LogicFlow

由于筆者沒(méi)有深度使用過(guò) LogicFlow,所以如果有片面之處希望大家能及時(shí)指出。

對(duì)于 LogicFlow(后面簡(jiǎn)稱(chēng) LF),是由 滴滴 的團(tuán)隊(duì)開(kāi)源的一款圖形編輯工具,官方自己的定義是:一款流程圖編輯框架,提供了一系列流程圖交互、編輯所必需的功能和簡(jiǎn)單靈活的節(jié)點(diǎn)自定義、插件等拓展機(jī)制。

與 bpmn.js 一樣的是,LF 一樣也選擇了使用 SVG 來(lái)進(jìn)行頁(yè)面交互的。但是與 bpmn.js 不同的是,LF 則是 專(zhuān)注于提供可以快捷擴(kuò)展的圖形繪制能力,用來(lái)取代 bpmn.js、jsplumb 擴(kuò)展能力不足、自定義成本高的問(wèn)題。

當(dāng)然我個(gè)人覺(jué)得這里說(shuō) bpmn.js 擴(kuò)展能力不足也只是因?yàn)閷?duì)其核心實(shí)現(xiàn)不夠了解??

這里截取一段滴滴團(tuán)隊(duì)在掘金發(fā)布的文章 滴滴開(kāi)源 LogicFlow:專(zhuān)注流程可視化的前端框架 中關(guān)于 LF 定位的說(shuō)明:

logicflow x6,前端,javascript,開(kāi)發(fā)語(yǔ)言

  • activiti 作為工作流引擎提供了前后端的解決方案,簡(jiǎn)單二次開(kāi)發(fā)就可以部署一套業(yè)務(wù)流程的管理平臺(tái)
  • Bpmn.js:基于 BPMN2.0 規(guī)范,設(shè)計(jì)的流程圖編輯器
  • G6:antv 旗下專(zhuān)注圖形可視化,各類(lèi)分析類(lèi)圖表。比如生態(tài)樹(shù)、腦圖、輻射圖、縮進(jìn)圖等等
  • X6:圖編輯引擎,核心能力是節(jié)點(diǎn)、連線和畫(huà)布。不僅支持了流程圖,還有 Dag 圖、ER 圖

LogicFlow 的定位在上圖的 Bpmn.js 和 X6 之間,填補(bǔ)中間的空白。核心提供了流程圖的編輯器,并且通過(guò)拓展能力來(lái)支持 BPMN 等規(guī)范所需的流程節(jié)點(diǎn)和數(shù)據(jù)格式,以滿足當(dāng)前業(yè)務(wù)下的現(xiàn)狀。

可以看到 LF 在中間進(jìn)行了一些平衡,在 保留可以高度擴(kuò)展繪圖能力等情況下,通過(guò)擴(kuò)展來(lái)實(shí)現(xiàn)與 BPMN 的適配。

本身按照 LF 的這種設(shè)計(jì)和計(jì)劃來(lái)說(shuō),是能夠給開(kāi)發(fā)者帶來(lái)很大便利的,但是目前 LF 在工作流業(yè)務(wù)場(chǎng)景下仍然缺乏很大的完成度。

工作流業(yè)務(wù)下的選型

上面提到了,LF 這個(gè)庫(kù)的結(jié)構(gòu)設(shè)計(jì)是可以給開(kāi)發(fā)者帶來(lái)遍歷的,只是目前在工作流業(yè)務(wù)中依然存在很大不足;另外 bpmn.js 的擴(kuò)展性也是十分強(qiáng)大的,會(huì)讓人覺(jué)得難用的最大原因就是缺乏相關(guān)文檔——甚至是英文文檔(至于全量引入那個(gè)是有誤解的,已經(jīng)更換為 esm 的模式了)。

言外之意就是,指定工作流場(chǎng)景下依然建議使用 bpmn.js;當(dāng)然如果需求特別簡(jiǎn)單,也可以嘗試 LF。

這里比較一下他們的一些常用功能,關(guān)于 bpmn.js 的基礎(chǔ)原理可以查看我的這篇文章 Bpmn.js 進(jìn)階指南之原理分析與模塊改造

常見(jiàn)擴(kuò)展需求/功能

1. Render

LogicFlow

雖然 BPMN 2.0 規(guī)范中對(duì)每一種節(jié)點(diǎn)圖標(biāo)都進(jìn)行了詳細(xì)的標(biāo)注和說(shuō)明,但是那個(gè)黑白分明的突然肯定不符合現(xiàn)在老板們的審美,所以最常見(jiàn)的業(yè)務(wù)需求之一就是對(duì)顯示效果進(jìn)行修改,這里的顯示效果自然指的就是 render 部分。

在 LF 中,它默認(rèn)提供了以下 7 種基礎(chǔ)節(jié)點(diǎn):

  • RectNode:矩形
  • CircleNode:圓形
  • EllipseNode:橢圓
  • PolygonNode:多邊形
  • DiamondNode:菱形
  • TextNode:文本
  • HtmlNode:HTML

每種基礎(chǔ)節(jié)點(diǎn)都有對(duì)應(yīng)的 Model 類(lèi)型,分別管理 View 顯示控制與 Model 屬性控制,開(kāi)發(fā)者分別可以繼承同一種節(jié)點(diǎn)的 ViewModel 類(lèi)來(lái)實(shí)現(xiàn)自定義節(jié)點(diǎn),例如:

import { RectNode, RectNodeModel } from "@logicflow/core";
class UserTaskView extends RectNode {
  getShape() {
    const { model, graphModel } = this.props;
    const { x, y, width, height, radius } = model;
    const style = model.getNodeStyle();
    return h("g", {}, [
      h("rect", {
        ...style,
        x: x - width / 2,
        y: y - height / 2,
        rx: radius,
        ry: radius,
        width,
        height
      }),
      ''
    ]);
  }
}
class UserTaskModel extends RectNodeModel {
  getNodeStyle() {
    const style = super.getNodeStyle();
    style.stroke = "blue";
    style.strokeDasharray = "3 3";
    return style;
  }
}
export default {
  type: "UserTask",
  view: UserTaskView,
  model: UserTaskModel,
};
bpmn.js

而在 bpmn.js 中,則是按照基礎(chǔ)流程節(jié)點(diǎn)類(lèi)型來(lái)繪制元素的,但是與 LF 不同的是,它沒(méi)有節(jié)點(diǎn)繼承關(guān)系。也就是說(shuō),一個(gè)類(lèi)型的節(jié)點(diǎn)有且只有一個(gè)對(duì)應(yīng)的渲染方法,只是 如果這個(gè)節(jié)點(diǎn)屬于某一種基礎(chǔ)節(jié)點(diǎn)的話,會(huì)在它的渲染方法內(nèi)部去調(diào)用對(duì)應(yīng)基礎(chǔ)節(jié)點(diǎn)的繪制方法。

默認(rèn)的 Render 方法在 bpmn-js/lib/draw/BpmnRednerer.js 中,可以通過(guò) this.handlers 找到。

其中 handlers 屬性是一個(gè)對(duì)象,包含了每個(gè) 頁(yè)面可見(jiàn)的 BPMN 節(jié)點(diǎn)對(duì)應(yīng)的 方法。

當(dāng)然,一些公共的 SVG 繪制方法還是抽離出來(lái)了。

例如我們以 StartEvent 開(kāi)始節(jié)點(diǎn)為例,它依賴(lài)與 Event 節(jié)點(diǎn),所以:

this.handlers = {
    'bpmn:Event': function(parentGfx, element, attrs) {
      if (!('fillOpacity' in attrs)) {
        attrs.fillOpacity = DEFAULT_FILL_OPACITY;
      }
      return drawCircle(parentGfx, element.width, element.height, attrs);
    },
    'bpmn:StartEvent': function(parentGfx, element) {
      var attrs = {
        fill: getFillColor(element, defaultFillColor),
        stroke: getStrokeColor(element, defaultStrokeColor)
      };
      var semantic = getSemantic(element);
      if (!semantic.isInterrupting) {
        attrs = {
          strokeDasharray: '6',
          strokeLinecap: 'round',
          fill: getFillColor(element, defaultFillColor),
          stroke: getStrokeColor(element, defaultStrokeColor)
        };
      }
      var circle = renderer('bpmn:Event')(parentGfx, element, attrs);
      renderEventContent(element, parentGfx);
      return circle;
    }
  	// ...
  }

可見(jiàn),handler 方法就是對(duì)每種節(jié)點(diǎn)進(jìn)行渲染并返回創(chuàng)建的 SVG 節(jié)點(diǎn),所以我們?cè)谧远x的時(shí)候只需要修改 handlers 對(duì)象即可,例如新增一個(gè) SqlTask 節(jié)點(diǎn):

this.handlers['miyue:SqlTask'] = function (parentGfx, element, attr) {
  // 渲染外層邊框
  const attrs = {
    fill: getFillColor(element, defaultFillColor),
    fillOpacity: defaultTaskOpacity,
    stroke: getStrokeColor(element, defaultTaskColor)
  };
  renderer("bpmn:Activity")(parentGfx, element, attrs);
  // 自定義節(jié)點(diǎn)
  const customIcon = svgCreate("image");
  svgAttr(customIcon, {
    ...(attr || {}),
    width: element.width,
    height: element.height,
    href: mysqlIcon
  });
  svgAppend(parentGfx, customIcon);
  return customIcon;
}

因?yàn)?SqlTask 節(jié)點(diǎn)是需要繼承 Task 類(lèi)型節(jié)點(diǎn)的,而 Task 最終又繼承 Activity 節(jié)點(diǎn),所以這里直接調(diào)用 Activity 即可。然后在 parentGfx 中插入我們的自定義內(nèi)容(parentGfx 即是這個(gè)節(jié)點(diǎn)對(duì)應(yīng)的 SVG 節(jié)點(diǎn))。

當(dāng)然,這是在我們需要顯示原來(lái)的 Activity 類(lèi)型節(jié)點(diǎn)的一些元素時(shí)才需要在內(nèi)部再次調(diào)用 renderer('bpmn:Activity'),如果是其他一些情況下(例如使用 foreignObject 綁定div元素、直接插入圖片等)也可以直接在父元素下創(chuàng)建一個(gè)新的 svg 節(jié)點(diǎn)并返回。這里其實(shí) bpmn.js 并沒(méi)有對(duì)其做限制,因?yàn)樗?只負(fù)責(zé)在對(duì)應(yīng)的時(shí)候調(diào)用對(duì)應(yīng)的渲染方法。

2. 交互效果

可能是 web 編輯器的效果都類(lèi)似,在默認(rèn)情況下節(jié)點(diǎn)對(duì) hover 的響應(yīng)一般都是顯示一個(gè)邊框,在選中后增加一個(gè)高亮效果,這一點(diǎn)通常產(chǎn)品都不會(huì)對(duì)其進(jìn)行太大的改動(dòng),但是也不排除一些特殊情況:

  • 查看流程圖時(shí)特殊顯示已流轉(zhuǎn)節(jié)點(diǎn)
  • hover 時(shí)顯示辦理信息
  • 顯示動(dòng)畫(huà)邊框或者連線動(dòng)畫(huà)

由于我對(duì) LF 不是很熟悉,所以這幾個(gè)場(chǎng)景我了解的也只有這樣的方案:

  1. 重寫(xiě) render 渲染部分
  2. 監(jiān)聽(tīng)事件顯示其他內(nèi)容
  3. 通過(guò) graphModel 的 api 來(lái)動(dòng)態(tài)修改節(jié)點(diǎn)樣式

而 bpmn.js 也可以使用類(lèi)似的方式實(shí)現(xiàn),一樣可以重寫(xiě) render 渲染方法、監(jiān)聽(tīng)事件等、通過(guò) API 動(dòng)態(tài)修改等。

所以針對(duì)這個(gè)方面,兩者之間的差距并不大,解決方案也都大同小異。

3. BPMN 2.0 規(guī)范支持

上面也提了,bpmn.js 是 camunda 團(tuán)隊(duì)的成員進(jìn)行開(kāi)發(fā)的,本身的出發(fā)點(diǎn)就是為了支持 BPMN 2.0 規(guī)范的文件在瀏覽器上的編輯和顯示,所以對(duì) BPMN 2.0 的規(guī)范提供了一套完整的處理方法。

而 LF 則是一個(gè)具有繪圖能力的庫(kù),通過(guò)擴(kuò)展去支持的少部分 BPMN 2.0 規(guī)范,所以從這個(gè)層面來(lái)說(shuō) LF 肯定是不如 bpmn.js 的。

雖然在可視圖形的編輯和操作層面,LF 可以通過(guò)自定義來(lái)實(shí)現(xiàn)與 bpmn.js 一樣對(duì) BPMN 2.0 規(guī)范節(jié)點(diǎn)的完整支持。但是 LF 在深層的屬性處理與解析上,均是通過(guò)自定義屬性來(lái)處理,缺少約束;雖然這樣方便了開(kāi)發(fā)者最初開(kāi)發(fā),但是在生成 xml 階段則不太友好。

bpmn.js 是通過(guò) bpmn-moddle 與 moddle 兩個(gè)庫(kù)來(lái)實(shí)現(xiàn) js 對(duì)象與 xml 之間的轉(zhuǎn)換的,可以通過(guò) JSON Schema 來(lái)約束整個(gè)工作流中可以使用的節(jié)點(diǎn)與屬性,以及他們互相之間的關(guān)聯(lián)關(guān)系,對(duì)不符合的屬性或者條件,可以很快的找到問(wèn)題來(lái)源。

一點(diǎn)兒總結(jié)

總的來(lái)說(shuō),大家對(duì) bpmn.js 如此排斥的最大原因估計(jì)就是因?yàn)?沒(méi)有文檔,除了霖呆呆和我寫(xiě)過(guò)一些相關(guān)的文章,基本上剩下的都是大同小異的基礎(chǔ)使用文章,對(duì)于需要深度定制化開(kāi)發(fā)的小伙伴并沒(méi)有太多幫助。

也是因?yàn)檫@個(gè)原因, bpmn.js 在國(guó)外也飽受詬病,甚至有團(tuán)隊(duì)愿意花錢(qián)請(qǐng) bpmn-io 團(tuán)隊(duì)完善文檔都不了了之。而之所以不提供文檔,也是因?yàn)?bpmn-io 團(tuán)隊(duì)對(duì)他們編寫(xiě)的測(cè)試代碼有足夠的自信(看了一下確實(shí)很全面)。

bpmn.js 本身也提供了非常強(qiáng)大的自定義,通過(guò)依賴(lài)注入模式,可以很輕松的覆蓋或者擴(kuò)展原有內(nèi)容。

而 Logicflow 雖然在開(kāi)發(fā)體驗(yàn)上對(duì)沒(méi)有接觸過(guò)工作流的同學(xué)來(lái)說(shuō)會(huì)很友好,但是目前對(duì) BPMN 的支持依然還很欠缺,深度使用流程引擎依然需要進(jìn)行大量的自定義工作以及 XML 轉(zhuǎn)換工作,對(duì)于層級(jí)較深的一些定義還容易出現(xiàn)意想不到的bug。

所以在純工作流業(yè)務(wù)方向,還是推薦使用 bpmn.js 進(jìn)行前端頁(yè)面的開(kāi)發(fā)。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-828633.html

到了這里,關(guān)于關(guān)于工作流開(kāi)發(fā)前端選型的一點(diǎn)個(gè)人見(jiàn)解(bpmn.js與LogicFlow)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 基于Java開(kāi)發(fā)的全文檢索、知識(shí)圖譜、工作流審批機(jī)制的知識(shí)庫(kù)

    基于Java開(kāi)發(fā)的全文檢索、知識(shí)圖譜、工作流審批機(jī)制的知識(shí)庫(kù)

    一、項(xiàng)目介紹 一款全源碼,可二開(kāi),可基于云部署、私有部署的企業(yè)級(jí)知識(shí)庫(kù)云平臺(tái),應(yīng)用在需要進(jìn)行常用文檔整理、分類(lèi)、歸集、檢索的地方,適合知識(shí)密集型單位/歷史文檔豐富的單位,或者大型企業(yè)、集團(tuán)。 為什么建立知識(shí)庫(kù)平臺(tái)? 二、項(xiàng)目所用技術(shù) springboot+vue+tiny

    2023年04月26日
    瀏覽(25)
  • AI VS 好萊塢?新時(shí)代電影工作流;MJ制作微信表情包的麻瓜教程;關(guān)于ControlNet的一切;AI創(chuàng)業(yè)真錢(qián)景 | ShowMeAI日?qǐng)?bào)

    AI VS 好萊塢?新時(shí)代電影工作流;MJ制作微信表情包的麻瓜教程;關(guān)于ControlNet的一切;AI創(chuàng)業(yè)真錢(qián)景 | ShowMeAI日?qǐng)?bào)

    ?? 日?qǐng)?bào)周刊合集 | ?? 生產(chǎn)力工具與行業(yè)應(yīng)用大全 | ?? 點(diǎn)贊關(guān)注評(píng)論拜托啦! 4月21日,小馬智行獲得廣州市首個(gè)也是唯一一個(gè)遠(yuǎn)程載客測(cè)試許可,獲準(zhǔn)在廣州開(kāi)啟全新階段的自動(dòng)駕駛出行服務(wù)(Robotaxi)。即日起,在廣州南沙區(qū)803平方公里范圍內(nèi),市民有機(jī)會(huì)通過(guò)手機(jī)軟件

    2024年02月09日
    瀏覽(21)
  • 【工作流】Activiti工作流簡(jiǎn)介以及Spring Boot 集成 Activiti7

    【工作流】Activiti工作流簡(jiǎn)介以及Spring Boot 集成 Activiti7

    什么是工作流? 工作流指通過(guò)計(jì)算機(jī)對(duì)業(yè)務(wù)流程進(jìn)行自動(dòng)化管理,實(shí)現(xiàn)多個(gè)參與者按照預(yù)定義的流程去自動(dòng)執(zhí)行業(yè)務(wù)流程。 文章源碼托管:https://github.com/OUYANGSIHAI/Activiti-learninig Activiti5是由Alfresco軟件在2010年5月17日發(fā)布的業(yè)務(wù)流程管理(BPM)框架,它是覆蓋了業(yè)務(wù)流程管理、

    2024年02月08日
    瀏覽(31)
  • 云原生離線工作流編排利器 -- 分布式工作流 Argo 集群

    云原生離線工作流編排利器 -- 分布式工作流 Argo 集群

    作者:莊宇 在現(xiàn)代的軟件開(kāi)發(fā)和數(shù)據(jù)處理領(lǐng)域,批處理作業(yè)(Batch)扮演著重要的角色。它們通常用于數(shù)據(jù)處理,仿真計(jì)算,科學(xué)計(jì)算等領(lǐng)域,往往需要大規(guī)模的計(jì)算資源。隨著云計(jì)算的興起,阿里云批量計(jì)算和 AWS Batch 等云服務(wù)提供了管理和運(yùn)行這些批處理作業(yè)的平臺(tái)。 隨

    2024年01月24日
    瀏覽(28)
  • Camunda 7工作流引擎 API 以及與Springboot集成實(shí)現(xiàn)工作流配置全紀(jì)錄

    Camunda 7工作流引擎 API 以及與Springboot集成實(shí)現(xiàn)工作流配置全紀(jì)錄

    項(xiàng)目中需要用到工作流引擎來(lái)設(shè)計(jì)部分業(yè)務(wù)流程,框架選型最終選擇了 Camunda7,關(guān)于 Camunda以及 Activity 等其他工作流 引擎的介紹及對(duì)比不再介紹,這里只介紹與現(xiàn)有Springboot項(xiàng)目的集成以及具體使用及配置 流程(PROCESS): 通過(guò)工具建模最終生成的BPMN文件,里面有整個(gè)流程的定

    2024年02月10日
    瀏覽(46)
  • Git 工作流設(shè)計(jì)

    Git 工作流設(shè)計(jì)

    前言 常用的工作流有四種 集中式工作流 功能分支流 git flow 工作流 forking 工作流 集中式工作流 集中式工作流,多個(gè)功能(feat),bug修復(fù)(fix) 在一個(gè)分支上開(kāi)發(fā),極容易出現(xiàn)代碼從沖突 功能分支流 新的功能或者bug fork出一個(gè)新的分支,在該分支上開(kāi)發(fā) 功能在分支開(kāi)發(fā)完后再合

    2024年02月05日
    瀏覽(26)
  • GitFlow工作流

    GitFlow工作流

    基于 Git 這一版本控制系統(tǒng),通過(guò)定義不同的分支,探索合適的工作流程來(lái)完成開(kāi)發(fā)、測(cè)試、修改等方面的需求。 例如:在開(kāi)發(fā)階段,創(chuàng)建 feature 分支,完成需求后,將此分支合并到 develop 分支上;在發(fā)布階段,創(chuàng)建 release 分支,完成階段開(kāi)發(fā)任務(wù)后,將分支合并到 develop 和

    2024年02月22日
    瀏覽(22)
  • Git工作流

    Git工作流

    main:生產(chǎn)環(huán)境,也就是你們?cè)诰W(wǎng)上可以下載到的版本,是經(jīng)過(guò)了很多輪測(cè)試得到的穩(wěn)定版本。 release: 開(kāi)發(fā)內(nèi)部發(fā)版,也就是測(cè)試環(huán)境。 dev:所有的feature都要從dev上checkout。 feature:每個(gè)需求新創(chuàng)建的分支。 下面介紹一下一個(gè)新需求過(guò)來(lái)的git操作流程: 1.從dev分支上checkou

    2024年02月10日
    瀏覽(41)
  • 云計(jì)算工作流調(diào)度

    云計(jì)算工作流調(diào)度

    閱讀筆記 首先,我們提出了一個(gè)更實(shí)用的混合云服務(wù)流程成本驅(qū)動(dòng)調(diào)度模型,該模型在不降低VM部署彈性的情況下更精確地定義資源約束,并考慮了基于間隔的綜合收費(fèi),包括計(jì)費(fèi)周期和持續(xù)使用折扣。 其次,提出了一種改進(jìn)的基于FWA(煙花算法)的方法來(lái)解決這一問(wèn)題。在

    2024年02月02日
    瀏覽(49)
  • Activity工作流引擎

    Activity工作流引擎

    目錄 一、了解工作流 1、什么是工作流 2、工作流引擎 3、常見(jiàn)工作流引擎 4、Activiti7概述 4.1、Activiti介紹 4.2、建模語(yǔ)言BPMN 4.3、Activiti使用流程 二、Activiti7 1、Activiti使用 1.1、數(shù)據(jù)庫(kù)支持 1.2、Activiti環(huán)境 1.3、Activiti常用Service服務(wù)接口 1.4、流程設(shè)計(jì)工具 2、Activiti流程操作 2.1、

    2024年02月13日
    瀏覽(22)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包