国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

讓我們一起聊一聊極簡 Java 工作流

開發 前端
如何去設計這樣一個系統?單純的通過狀態字段去描述顯然已經不夠用了,此時我們就得考慮一種通用的、更易維護的方案來實現這樣的系統了,這種通用的、易維護的方案,也就是工作流。

1. 為什么需要工作流

松哥將之前的文章轉發到朋友圈后,有小伙伴評論說一直不理解為什么需要工作流,今天我們就先來說說這個話題。

假設我有一個請假需求,流程如下:

圖片

請假可以提交給我的上司,上司可以選擇批準或者拒絕,無論批準還是拒絕,都會給我一個通知。

這個流程比較簡單,我們很容易想到解決方案,不用工作流也能解決,有一個專門的請假表,當 A 要請假的時候,就往請假表中添加一條記錄,這條記錄的內容包含了請假的天數、原因、請假的審批人 B 以及一個名為 status 的字段,這個 status 字段表示這個請假申請目前的狀態(待審批、已批準還是已拒絕),然后 B 登錄系統之后,在請假表中查詢到了 A 的請假信息,然后選擇批準,此時將 status  字段的值改一下就行了。

這個流程很簡單,相信小伙伴們都能想到。

然而,這是一個非常簡單的流程,對于這樣的流程,一般來說也確實沒有必要使用工作流,但是現實中,我們涉及到的工作流往往都是非常復雜的,我舉個例子,就說報銷審批吧,這個可能很多小伙伴都經歷過。

圖片

小伙伴們看到,這個流程相對來說還是比較復雜的,此時你再用一個 status 字段去描述,就很難說的請到底是怎么回事了。每一步審批,都有可能批準也有可能拒絕,拒絕并不意味著流程結束,員工修改報銷資料之后,還可以繼續提交。此時如果還用 status 去描述,那么 status 將有 N 多個值去表示不同的情況,這個維護起來非常不便。

這就復雜了嗎?非也非也,我們再來看一個生產筆記本電腦的例子,假設公司研發了一款新型筆記本電腦,整個研發到生產的流程可能是這樣:

圖片

相比上面兩個,這個就更復雜一些了,不僅有串行任務還有并行任務,如何去設計這樣一個系統?單純的通過狀態字段去描述顯然已經不夠用了,此時我們就得考慮一種通用的、更易維護的方案來實現這樣的系統了,這種通用的、易維護的方案,也就是工作流。

2. 三大工作流

一個比較早的工作流是 jBPM,這是一個由 Java 實現的企業級流程引擎,是 JBoss 公司開發的產品之一。

jBPM 的創建者是 Tom Baeyens,這個大佬后來離開了 JBoss,并加入到 Alfresco,并推出了基于 jBPM4 的開源工作流系統 Activiti,而 jBPM 則在后續的代碼中完全放棄了 jBPM4 的代碼。從這個過程中也能看出來,jBPM 在發展過程中,由于意見相左,后來變成了兩個 jBPM 和 Activiti。

然而戲劇的是,Activiti5 沒搞多久,從 Activiti 中又分出來一個 Camunda,Activiti 繼續發展,又從中分出來一個 Flowable。。。

由于開發 jBPM、Activiti、Camunda 以及 Flowable 的人多多少少有一些關聯性,讓人不得不猜測意見相左拉一票人出來單干是他們的企業文化。

所以現在市面上主流的流程引擎就一共有三個:

  • Activiti
  • Flowable
  • Camunda

這三個各有特點:

  • Activiti 目前是側重云,他目前的設計會向 Spring Cloud、Docker 這些去靠攏。
  • Flowable 核心思想還是在做一個功能豐富的流程引擎工具,除了最最基礎的工作流,他還提供了很多其他的擴展點,我們可以基于 Flowable 實現出許多我們想要的功能(當然這也是小伙伴們覺得 Flowable 使用復雜的原因之一)。
  • Camunda 相對于前兩個而言比較輕量級,Camunda 有一個比較有特色的功能就是他提供了一個小巧的編輯器,基于 bpmn.io 來實現的(松哥之前已經發文講過了)。如果你的項目需求是做一個輕巧的、靈活的、定制性強的編輯器,工作流是嵌入式的,那么可以選擇 Camunda。

如果仔細比較起這三個的差異,能列一個長長的表格,這個網上也有不少人都總結過了,松哥這里也就不啰嗦了。

3. 流程圖

既然有三個不同的工作流,那么三個不同的工作流畫出來的流程圖是否都各不相同呢?

不是的。

工作流程圖這塊其實有一個統一的標準,那就是 BPMN。BPMN 全稱是 Business Process Model and Notation,中文譯作業務流程模型和標記法,這個中文太繞口了,還是簡稱 BPMN 吧。

這是一套圖形化表示法,用圖形來表示業務流程模型。BPMN 最初由業務流程管理倡議組織(BPMI, Business Process Management Initiative)開發,BPMI 于 2005 年與對象管理組織(OMG, Object Management Group)合并,并于 2011 年 1 月 OMG 發布 2.0 版本,同時改為現在的名稱。

一句話,就是流程圖這塊有一個特別古老的規范,那就是 BPMN,而我們前面所說的無論是 Activiti、Flowable 還是 Camunda,都是支持這個規范的,所以呢,無論你使用哪一個流程引擎,都可以使用同一套流程圖。

那么這個規范究竟都說了些什么事情呢?

我們以上面生產筆記本的流程圖為例,來和小伙伴們做一個簡單介紹:

圖片

從上圖中可以看到,一個流程圖中主要包含四方面的內容:

  • 事件
  • 連線
  • 任務
  • 網關

我們一個一個來說。

事件

首先在一個流程圖中應該有開始事件和結束事件,也就是上圖大家看到的兩個圓圈。另外還有一些中間事件、邊界事件等。舉個中間定時事件的例子,比如用戶下單之后,可以有一個中間定時事件,延遲 5 分鐘發貨。

連線

連線就是將事件、任務、網關等連在一起的線條,一般情況下就是普通連線,有的時候連線會有一些條件,例如松哥之前文章和大家分享的請假,如果經理同意請假申請,就走哪一個線條,如果經理不同意請假申請,就走哪一個線條。對應上圖的筆記本生產,如果經理審批通過,就載入圖紙準備生產,如果經理審批不通過,就重新設計。

任務

任務這塊其實有很多分類。

如果細分大致上可以分為如下幾種:

  • 接收任務?

圖片

在上面的流程圖中,等待準備工作完成這一項就是一個接收任務。這個任務里并不需要額外做什么事情,流程到這一步就自動停下來了,需要人工去點一下,推動流程繼續向下執行。

  • 發送任務

圖片

這個一般用來把消息發送給外部參與者。

  • 服務任務

圖片

這個一般由系統自動完成,其實說白了就是我們的一個自定義類,可以在一個自定義類里邊完成想要做的事情。

  • 腳本任務

圖片

一個自動化活動。當流程執行到腳本任務時,自動執行相應的腳本。

  • 業務規則任務

圖片

BPMN2.0 新引入用來對接業務規則引擎,業務規則任務用于同步執行一個或多個規則。

  • 用戶任務

圖片

用于為那些需要由人工參與者完成的工作建模。

雖然細分類別很多,但是仔細看,其實這幾種又可以歸為兩大類:

  • 用戶任務:表示人工要介入做的事情。比如同意與否,或者輸入一些參數,要讓人工完成任務,就需要一個表單系統,讓人工輸入數據,或者顯示數據給人看,這也是為什么用戶任務和表單系統結合在一起的原因,用戶任務需要用戶向引擎提交一個完成任務的動作,否則流程會暫停在這里等待。
  • 服務任務:表示機器自動做的事情。調用服務的任務,這個服務可以是一個 Spring JavaBean,也可以是一個遠程 REST 服務,流程會自動執行服務任務。

活動

活動可以算是一種特殊的任務。活動可以調用另外一個流程使之作為當前流程的子流程去運行。活動也可以分為用戶活動、腳本活動等等。從顯示上來說,活動比任務邊框深一些。僅此而已。

網關

網關要是細分起來,也有很多不同類型的網關。

  • 互斥網關

圖片

這種網關也叫排他性網關,我們之前請假流程中的那個網關,就是互斥網關。這種網關有且僅有一個有效出口。

  • 相容網關

圖片

這種網關會有多個出口,只要條件滿足,都會執行。

  • 事件網關

圖片

事件網關是通過中間事件驅動,它在等待的事件發生后才會觸發決策。基于事件的網關允許基于事件作出決策。

  • 并行網關

圖片

并行網關一般是成對出現的,上面生產筆記本的那個流程中,生產屏幕、鍵盤等并行操作,就是通過并行網關來實現的。

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

2023-08-14 08:38:26

反射reflect結構體

2023-09-29 08:58:38

2024-02-06 08:58:23

開源項目my-tv

2022-03-31 18:59:43

數據庫InnoDBMySQL

2021-08-27 07:06:10

IOJava抽象

2021-12-29 08:27:05

ByteBuffer磁盤服務器

2022-03-08 17:52:58

TCP格式IP

2023-06-20 06:44:14

Node.jsCPU 負載

2021-07-15 07:23:28

Singlefligh設計

2021-11-26 07:00:05

反轉整數數字

2022-02-14 10:16:22

Axios接口HTTP

2022-06-26 09:40:55

Django框架服務

2022-02-14 07:03:31

網站安全MFA

2016-09-06 10:39:30

Dell Techno

2022-08-22 09:20:05

Kubernetes工作負載管理

2022-07-10 23:15:46

Go語言內存

2022-08-01 07:57:03

數組操作內存

2023-08-02 08:35:54

文件操作數據源

2021-07-31 11:40:55

Openresty開源

2012-04-14 20:47:45

Android
點贊
收藏

51CTO技術棧公眾號

精品在线观看入口| 日韩电影免费观看高清完整版在线观看| av在线视屏| 国产欧美一区二区精品婷婷| 成人在线免费观看一区| 国产福利久久精品| 麻豆传媒在线视频| 中文字幕人成人乱码| 91精品黄色片免费大全| 97av视频在线观看| 北条麻妃在线一区二区免费播放| 国产精一区二区三区| 欧美日韩高清影院| 亚洲精品日韩激情在线电影| 国产日韩精品在线| 亚洲www啪成人一区二区| 欧美日本一道本在线视频| qvod激情图片| 女同性一区二区三区人了人一 | 精品久久久久久久久久久久久久久久久 | xxxxx成人.com| 麻豆系列在线观看| 欧美亚洲一区三区| 亚洲有码转帖| 欧美日韩午夜精品| 福利在线观看| 综合自拍亚洲综合图不卡区| 欧美极品少妇无套实战| 9色国产精品| 亚洲最大的成人网| 成人在线免费电影网站| 欧美三片在线视频观看| 爱福利视频一区二区| 欧美电影免费播放| 欧美一区二区三区男人的天堂| 精品国内亚洲在观看18黄 | 欧美在线免费看| 黑人一区二区三区四区五区| 欧美日韩精品久久久免费观看| 久久精品一区二区三区中文字幕| 亚洲伊人一本大道中文字幕| 日韩综合在线| 国产综合欧美在线看| 99国产精品免费网站| 精品久久一区二区三区| 国产嫩草在线观看| 成人在线直播| 国产一区二区三区在线免费观看| 91福利精品在线观看| 精品嫩草影院久久| 丁香花在线观看完整版电影| 日韩激情av在线播放| 日本福利在线| 色琪琪一区二区三区亚洲区| 一区二区日韩| 成人福利视频在线观看| 国产成人av资源| 欧美色女视频| 992tv成人免费影院| 日产精品一区| 欧洲色大大久久| 亚洲熟妇国产熟妇肥婆| 亚洲成av人片在线观看无码| 成人激情电影在线看| 亚洲国产一区自拍| 日本成人精品| 91精品久久久久久久久久另类| 日韩精品免费一区二区夜夜嗨| 98精品在线视频| 尹人成人综合网| 久艹在线免费观看| 国内一区二区视频| 亚洲乱码一区二区三区| 日精品一区二区三区| 精品美女视频在线观看免费软件| 精品国产拍在线观看| 亚洲一区色图| 99热这里只有精品免费| 91色乱码一区二区三区| 欧洲视频在线免费观看| 日韩欧美一级二级三级| 国产一级黄色片免费| 1769国产精品| 韩国视频一区二区| 一级视频在线免费观看| 亚洲成人在线网| 盗摄牛牛av影视一区二区| 日韩中文字幕在线免费| 国产视频精品xxxx| 伊人久久大香线蕉av超碰演员| 中文字幕一区二区三区5566| 国产精品久久久久久一区二区三区| 女人被爽到呻吟gif动态图下载| 国产99在线免费| 欧美日韩久久久久| 很黄很黄激情成人| 深夜福利在线观看直播| 78色国产精品| 99免费精品视频| 蜜芽在线免费观看| 国内自拍在线观看| 久久影视电视剧免费网站清宫辞电视 | 成人精品久久久| 亚洲国产视频一区二区| 亚洲高清影院| 黄色三级中文字幕| 久久久久久久久久久av| 亚洲国产人成综合网站| 国产精品毛片在线| 精品视频二区| 国产一区美女在线| 亚洲婷婷伊人| 羞羞视频在线观看| 国产不卡一区二区在线播放| 国产精品视频免费看| 欧美影院天天5g天天爽| 欧美在线在线| 国产传媒久久久| 日韩欧美在线免费| 老司机一区二区| 国产精品毛片久久| 中文字幕在线直播| 国产午夜电影| 致1999电视剧免费观看策驰影院| 久久欧美在线电影| 日韩精品一二三四区| 欧美久久久久久久久| 成人中文字幕合集| 欧美aⅴ一区二区三区视频| 久久狠狠久久| 91蝌蚪精品视频| 国产一区二区三区精品在线观看 | 欧美性suv| bbbbbbbbbbb在线视频| 成视频在线免费观看| 欧美重口乱码一区二区| 在线丨暗呦小u女国产精品| 99久久国产综合精品麻豆| 亚洲乱码电影| 图片区亚洲欧美小说区| 综合久久精品| 亚洲第一二区| 国产精品天堂蜜av在线播放 | 99视频国产精品免费观看| 亚洲韩国一区二区三区| 久久香蕉国产线看观看99| 国产一区视频网站| 国产一区二区三区四区五区入口| 久久永久免费| 日本vs亚洲vs韩国一区三区二区| 亚洲区欧美区| 另类小说视频一区二区| 成人免费观看视频| 91丨九色丨蝌蚪丨老版| 久久久久久久精| 亚洲图片欧美色图| 欧美一区二区三区啪啪| 91av视频在线播放| 欧美韩国理论所午夜片917电影| 亚洲精品视频一区二区| 国产日韩欧美一区在线| 在线观看av黄网站永久| 在线激情av| 99亚洲国产精品| 精品网站在线看| 久久精品国产成人| 色素色在线综合| 亚洲欧美国产三级| 亚洲女爱视频在线| 国产91富婆露脸刺激对白| 亚洲无吗在线| 综合精品一区| 美女视频黄久久| 欧美国产日韩亚洲一区| 欧美亚洲国产一区二区三区 | 国产精品乱看| 久久婷婷久久一区二区三区| 欧美日韩亚洲综合一区二区三区| 亚洲国产小视频| 国产精品第3页| 国产情侣av自拍| 麻豆系列在线观看| 久久伊人影院| 国内精品在线播放| 在线91免费看| 91九色极品视频| 国产一区二区三区乱码| av免费网站在线观看| 伊人成综合网yiren22| 9久草视频在线视频精品| 日韩一区二区三区精品视频| 国产精品国产三级国产aⅴ浪潮 | 91黄页在线观看| 欧美特黄一区| 亚洲va欧美va人人爽| 国产欧美va欧美va香蕉在| 2018高清国产日本一道国产| 亚洲一区二区三区免费| 欧美国产精品一区二区| 69久久夜色精品国产69|