偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

什么是 Bpmn ?為什么要用 Bpmn和工作流 ?

開發(fā) 前端
業(yè)務(wù)流程模型和標(biāo)記法 工作流(Workflow)是對各個(gè)行業(yè)的流程進(jìn)行抽象,例如電信、軟件、制造、金融和辦公自動(dòng)化領(lǐng)域。為了給全部業(yè)務(wù)的參與者提供易于理解的標(biāo)準(zhǔn)標(biāo)記法,由業(yè)務(wù)流程管理倡議組織 BPMI 開發(fā)出了“業(yè)務(wù)流程建模標(biāo)記法” Business Process Modeling Notation, BPMN。

[[413297]]

本文轉(zhuǎn)載自微信公眾號(hào)「小二十七」,作者小二十七。轉(zhuǎn)載本文請聯(lián)系小二十七公眾號(hào)。

BPMN 和 Activiti 介紹

工作流介紹

在任何行業(yè)和企業(yè)中,都有各種各樣的流程,例如:

  • 請假流程
  • 報(bào)銷流程
  • 入職流程
  • 離職流程
  • 出差流程
  • 等等……

就算你自己沒有設(shè)計(jì)過工作流,那么你每天肯定也在使用各種流程。

為什么要用 BPMN ?

對于流程控制,有一種比較初級的玩法是:在業(yè)務(wù)代碼里面加入 Status(狀態(tài)機(jī)) 字段維護(hù)流程狀態(tài),流程負(fù)責(zé)的審批人可能也是 Hard Code(硬編碼),這種玩法實(shí)現(xiàn)流程初級會(huì)比較快,但是長遠(yuǎn)來看會(huì)出現(xiàn)幾個(gè)問題:

  1. 流程健壯性差,但凡出現(xiàn)人員變動(dòng),或者組織結(jié)構(gòu)調(diào)整,就需要修改代碼,維護(hù)成本高
  2. 流程無法復(fù)用,當(dāng)組織出現(xiàn)新的工作流程,又要重新寫一套代碼,開發(fā)成本非常高
  3. 流程和業(yè)務(wù)代碼耦合,你中有我,我中有你(并不符合單一職責(zé)和解耦的設(shè)計(jì)原則)

BPMN:業(yè)務(wù)流程模型和標(biāo)記法 工作流(Workflow)是對各個(gè)行業(yè)的流程進(jìn)行抽象,例如電信、軟件、制造、金融和辦公自動(dòng)化領(lǐng)域。為了給全部業(yè)務(wù)的參與者提供易于理解的標(biāo)準(zhǔn)標(biāo)記法,由業(yè)務(wù)流程管理倡議組織 BPMI 開發(fā)出了“業(yè)務(wù)流程建模標(biāo)記法” Business Process Modeling Notation, BPMN。BPMI 組織 于 2005 年并入 OMG 國際規(guī)范組織(Object Management Group),當(dāng)前 BPMN 規(guī)范由 OMG 組織進(jìn)行維護(hù)。

為什么要遵循規(guī)范 ?

遵循市場行為

舉例:我們?nèi)粘5碾姵??? 有 7 號(hào)和 5 號(hào)標(biāo)準(zhǔn),你當(dāng)然可以生產(chǎn)一個(gè) 6 號(hào)的電池,有沒有人買就沒人知道了,如果你按標(biāo)準(zhǔn)生產(chǎn)出的電池,那么是可以直接用到大多數(shù)電器上,如果你生產(chǎn) 6 號(hào)電池,那么你只能自己開發(fā) 6 號(hào)電池的電器,且不說你這樣的做法是否被市場和行業(yè)認(rèn)可,另外搞那么多不同的標(biāo)準(zhǔn)出來對于消費(fèi)者來說也是一種災(zāi)難,例如當(dāng)年微軟的 IE 和 FireFox 的兩套標(biāo)準(zhǔn)讓現(xiàn)在的開發(fā)人員多么痛苦就知道了。。

遵循行業(yè)的共識(shí)

目前主流的工作流廠商都是基于 BPMN 2.0 規(guī)范開發(fā)流程,想要自立規(guī)范之前也請完全掌握和了解目前的規(guī)范。

云程

JeectBoot

另外對于產(chǎn)品和業(yè)務(wù)人員也需要學(xué)習(xí)和理解 BPMN 的符號(hào),從而可以對業(yè)務(wù)進(jìn)行建模,可以看看人人都是產(chǎn)品經(jīng)歷這篇文章: 關(guān)于 BPMN 流程建模方法 ,從而可以利用現(xiàn)有的 BPMN 流程設(shè)計(jì)器工具快速對業(yè)務(wù)建模(無需自己開發(fā)),只需將導(dǎo)出的 *.bpmn 文件導(dǎo)入遵循 BPMN 規(guī)范的流程引擎內(nèi)即可運(yùn)行。充分利用行業(yè)的生態(tài)和工具。這就是遵循規(guī)范所帶來的收益。

有沒有銀彈 ?(BPMN 的適用場景)

我們知道軟件行業(yè)是沒有銀彈,任何工具都有適用場景,如果把一個(gè)工具放到一個(gè)不適應(yīng)的場景內(nèi),那么最終起到事倍功半的效果,流程引擎也不是銀彈,它是一個(gè)對于復(fù)雜流程和抽象和復(fù)用工具,對于那些工作流程多且復(fù)雜的業(yè)務(wù)系統(tǒng),合理的使用流程引擎會(huì)大大降低我們對于工作流的開發(fā)成本和時(shí)間,并且最終交付的效果也會(huì)比自己開發(fā)流程引擎要好上許多。

但是如果你的業(yè)務(wù)系統(tǒng)沒有那么多的工作流程,或者只有很簡單的狀態(tài)從 A -> B 的轉(zhuǎn)移,那么引入流程引擎顯然是 大馬拉小車,費(fèi)時(shí)費(fèi)力不說,而且會(huì)造成簡單的需求開發(fā)起來很麻煩,拉長開發(fā)周期時(shí)間,最終交付的效果也未必很好。所以選擇合適的工具,就成了程序員最重要的選擇。

Activiti 是應(yīng)對大型系統(tǒng)的復(fù)雜流程的作戰(zhàn)工具,小規(guī)模場景和流程不復(fù)雜的業(yè)務(wù)系統(tǒng),不建議使用。 本章總結(jié):為什么要用工作流引擎 ?

  • 自行研發(fā)流程,把流程和業(yè)務(wù)耦合不僅導(dǎo)致代碼開發(fā)、修改成本高,而且流程偏定制開發(fā),無法復(fù)用,就好比你自己生產(chǎn)一個(gè) 6 號(hào)電池 ??
  • 通過流程引擎,可以以極低的成本,快速實(shí)現(xiàn)業(yè)務(wù)工作流,提高開發(fā)效率,而且久經(jīng)生產(chǎn)考驗(yàn)的流程引擎,也比任何人從 0 開始寫流程要可靠的多,流程引擎的功能并沒有多特別,都可以通過邏輯代碼實(shí)現(xiàn)的,流程引擎的核心功能在于高質(zhì)量的復(fù)用,設(shè)計(jì)層面的解耦(設(shè)計(jì)思想,語言和技術(shù)棧無關(guān))
  • BPMN2.0 是行業(yè)規(guī)范,遵循行業(yè)標(biāo)準(zhǔn),有眾多成熟工具可以使用,例如 bpmn 流程設(shè)計(jì)工具等等……系統(tǒng)需要實(shí)現(xiàn)的工作流越多,使用工作流的收益就越大
  • 流程引擎不是銀彈,它只適用于工作流程多且復(fù)雜的大型業(yè)務(wù)系統(tǒng),如果是流程邏輯簡單的業(yè)務(wù)系統(tǒng),那么不建議使用流程引擎

BPMN 規(guī)范介紹

由于 BPMN 1.0 規(guī)范廣受歡迎,OMG (Object Management Group) 組織于2011年1月發(fā)布 BPMN 2.0 規(guī)范,BPMN 2.0 版本則繼承了 1.0 版本的內(nèi)容,并且注重流程執(zhí)行語法和標(biāo)準(zhǔn)交換格式。

OMG 組織致力于維護(hù) BPMN 規(guī)范的兩個(gè)目標(biāo):

流程的可遷移性:BPMN 2.0 規(guī)范定義了業(yè)務(wù)流程的符號(hào)以及模型,并且為流程定義設(shè)定了轉(zhuǎn)換格式,目的是為了讓流程的定義實(shí)現(xiàn)可移植性,那么用戶可以在不同的供應(yīng)商環(huán)境中定義流程,并且這些 流程可以移植到其他遵守 BPMN 2.0 規(guī)范的供應(yīng)商環(huán)境中。

解決簡單和復(fù)雜的平衡:BPMN 想要解決流程設(shè)計(jì)和復(fù)雜需求中間尋找一個(gè)平衡點(diǎn),可以讓非技術(shù)人員建立簡單并且易懂的業(yè)務(wù)流程模型,同時(shí)可以處理高度復(fù)雜的業(yè)務(wù)流程,因此要解決這兩個(gè)矛盾的要求,需要在 BPMN 規(guī)范中定義標(biāo)準(zhǔn)的圖形和符號(hào)。

四種基本要素

BPMN 2.0 的圖形結(jié)構(gòu)和要素,建議直接參考 WIKI 百科的答案,這里我就不搬運(yùn)了:

  • wiki 百科:BPMN 業(yè)務(wù)流程模型和標(biāo)記法

2.0 的幾點(diǎn)改進(jìn)

相比 BPMN 1.0 主要有以下改進(jìn):

  • 規(guī)范了流程元素的執(zhí)行語法。
  • 定義了流程模型和流程圖的擴(kuò)展機(jī)制。
  • 細(xì)化了事件的組成。擴(kuò)展了參與者的交互定義。
  • 定義了編排模型。

Activiti 介紹

Activiti 是目前國內(nèi)比較主流的基于 BPMN 2.0 規(guī)范實(shí)現(xiàn)的工作流引擎,目前已經(jīng)發(fā)布到 7.X 版本,并且已經(jīng)開始實(shí)現(xiàn) DMN 規(guī)范(決策與圖形,后面會(huì)講),另外關(guān)于工作流引擎還有一些比較老牌的玩家例如:JBPM 現(xiàn)在發(fā)展的也很不錯(cuò),還有目前比較新興的流程引擎:camunnda,flowable 目前看起來也潛力十足,他們都是遵循了 BPMN 2.0 規(guī)范,因?yàn)樵趪鴥?nèi)應(yīng)用的比較主流,所以這里我們這里重點(diǎn)介紹 Activiti

Activiti 出現(xiàn)和發(fā)展

這里簡單介紹 JBPM 和 Activiti 的發(fā)展歷史,有興趣深究的自行去 Google 搜索

Activiti 的發(fā)展線路:

  • Tom Baeyens 是 JBPM 的創(chuàng)始人,因?yàn)槔砟畈缓?Tom Baeyens 加入 Alfresco 公司后又發(fā)布了 Activit 5
  • JBPM 因此放棄 JBPM 4 架構(gòu),完全基于 Drools Flow 重新開發(fā) JBMP 5,但他們同樣都支持 BPMN 2.0 規(guī)范
  • 從正統(tǒng)的延續(xù)來看,Activit 5 更像是對 JBPM 3、JBPM 4 的延續(xù),所以國內(nèi)大多企業(yè)都選擇 Activit

JBPM、Activiti 區(qū)別

  1. JBPM 推翻歷史架構(gòu),重新使用了 Drools Flow 作為工作流架構(gòu)
  2. JBPM 采用的是 LGPL 開源協(xié)議,對源碼修改需要商業(yè)授權(quán)
  3. Activiti 采用了更為寬松的 Apache License 2.0 協(xié)議
  4. ……(想到再補(bǔ)充)

官方的 Activiti 示例

官方發(fā)布的 Activiti 演示程序,可以首先通過該例子來了解 Activiti 大部分功能,包括:

  • 流程定義
  • 流程發(fā)布
  • 動(dòng)態(tài)表單

等等,通過這個(gè)示例程序,作為切入 Activiti 的引子,建立初步了解后,更有信心深入了解 Activiti 工作流引擎

下載和使用示例程序步驟:

  • Activiti 6.0 示例程序
  • 將示例程序 /wars 目錄下的 3 個(gè)程序拷貝到 Tomcat/webapps 目錄,然后啟動(dòng) Tomcat 即可
  • 訪問示例程序:http://localhost:8080/activiti-app/#/ 輸入默認(rèn)賬號(hào):admin/test 訪問即可

Activiti 目錄 /wars 下的三個(gè)示例程序職責(zé)分工:

應(yīng)用 說明 地址 默認(rèn)賬號(hào)
activiti-app 一個(gè)比較完善的流程引擎示例程序 /activiti-app admin/test
activiti-admin 用于查看流程引擎中的主要數(shù)據(jù) /activiti-admin admin/admin
activiti-rest rest-api 應(yīng)用 API,不再局限 Jar /activiti-rest kermit/kermit

演示一個(gè)簡易的工作流的幾個(gè)步驟:

  1. 進(jìn)入 activiti-app 系統(tǒng),為創(chuàng)建用戶
  2. 設(shè)計(jì)一個(gè)簡單的工作流,并且為流程節(jié)點(diǎn)綁定用戶
  3. 創(chuàng)建 HR App 應(yīng)用程序,設(shè)置包含請假流程,并且發(fā)布
  4. 員工進(jìn)入 HR App 程序,提交一個(gè)請假申請
  5. 經(jīng)理進(jìn)入系統(tǒng),并且同意員工的請假申請,示例流程完成
  6. 通過 activiti-admin 程序連接到 activiti-app 查看流程的歷史

進(jìn)入 activiti-app 系統(tǒng),為創(chuàng)建用戶

這里簡單介紹三個(gè)菜單的主要功能:

  • Kickstart App:定義應(yīng)用程序,設(shè)計(jì)流程,建立程序和流程之間的關(guān)系
  • Task App:管理示例程序的任務(wù),例如:我的待辦,發(fā)起流程等等
  • Identity management:管理用戶、用戶組等信息

在 Identity management -> Users 菜單創(chuàng)建兩個(gè)用戶,用于模擬工作流:

在 Kickstart App -> Processes 創(chuàng)建簡單的請假流程

值得注意的是需要為用戶任務(wù)分配流程變量,我們這里簡單起見直接綁定用戶,如圖:

最后我們在 Kickstart App -> Apps 創(chuàng)建一個(gè)應(yīng)用程序,并且綁定剛才設(shè)計(jì)的請假流程,如圖:圖片

切記要發(fā)布流程,這樣我們切換普通員工 jack 身份進(jìn)入系統(tǒng)的時(shí)候,就能看到發(fā)布應(yīng)用程序,并且可以發(fā)起請假申請了,如圖:

Show New App

今天身體有點(diǎn)不舒服,進(jìn)入 HR App 發(fā)起請假申請,如圖:

當(dāng)我的請假申請?zhí)峤坏臅r(shí)候,任務(wù)就會(huì)自動(dòng)發(fā)到經(jīng)理那邊,我們切換經(jīng)理賬號(hào)看看:

當(dāng)經(jīng)理點(diǎn)擊完成后,流程走完,任務(wù)就自動(dòng)結(jié)束了。

那么如果想要查看流程歷史,就要借助 activiti-admin 這個(gè)演示程序了:

  1. 打開鏈接:http://localhost:8080/activiti-admin/ 進(jìn)入首頁
  2. 輸入默認(rèn)賬號(hào) admin/admin 就可以
  3. 首次進(jìn)入要配置 activiti-app 的信息

如圖:

activiti-app Config

這里我們配置過就可以直接打開 Instance,就可以看到所有執(zhí)行過的流程歷史,點(diǎn)擊流程實(shí)例就可以看到詳細(xì)的歷史信息,如圖:

總結(jié)

本篇主要介紹:

  • 工作流概念和發(fā)展
  • BPMN 和 Activiti 的誕生和發(fā)展
  • Activiti 官方示例程序的展示
  • Activiti 配置功能展示

以上功能只是流程引擎的九牛一毛,希望通過以上示例程序可以更好的幫助大家建立信心,從而更好面對后面的進(jìn)階知識(shí)。更好的掌握 Activiti 和 BPMN 2.0 的世界。

 

責(zé)任編輯:武曉燕 來源: 小二十七
相關(guān)推薦

2024-07-18 08:38:31

2021-10-14 11:34:05

技術(shù)工作流引擎

2012-07-23 10:36:46

工作流

2009-07-31 17:50:27

ASP.NET工作流

2010-01-08 09:26:29

jBPM 4.3Java工作流BPMN 2.0

2013-09-29 17:13:59

PowerShell工作流

2023-12-06 09:10:28

JWT微服務(wù)

2022-02-21 10:50:28

SvnGitHub分支

2009-01-09 23:06:41

服務(wù)器SCSI硬盤PC

2020-04-07 16:12:56

Go編程語言開發(fā)

2022-05-07 07:35:44

工具讀寫鎖Java

2024-04-22 15:31:02

物聯(lián)網(wǎng)

2024-07-02 13:27:38

2021-12-13 01:40:29

ElasticSear倒排索引

2021-05-11 06:57:15

HBaseBATJ公司

2024-01-02 17:28:12

芯片CPUAI計(jì)算

2022-10-26 08:00:43

Activiti工作流BPM

2015-07-01 10:25:07

Docker開源項(xiàng)目容器

2013-02-28 09:42:25

DIND 10C++Python

2023-09-22 10:05:32

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)