<input id="ohw05"></input>
  • <table id="ohw05"><menu id="ohw05"></menu></table>
  • <var id="ohw05"></var>
  • <code id="ohw05"><cite id="ohw05"></cite></code>
    <label id="ohw05"></label>
    <var id="ohw05"></var>
  • 什么是 BPMN ?為什么我們要用 BPMN 和工作流 ?

    BPMN 和 Activiti 介紹

    工作流介紹

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

    1. 請假流程
    2. 報銷流程
    3. 入職流程
    4. 離職流程
    5. 出差流程
    6. 等等……

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

    為什么要用 BPMN ?

    對于流程控制,有一種比較初級的玩法是:在業務代碼里面加入 Status(狀態機) 字段維護流程狀態,流程負責的審批人可能也是 Hard Code(硬編碼),這種玩法實現流程初級會比較快,但是長遠來看會出現幾個問題:

    1. 流程健壯性差,但凡出現人員變動,或者組織結構調整,就需要修改代碼,維護成本高
    2. 流程無法復用,當組織出現新的工作流程,又要重新寫一套代碼,開發成本非常高
    3. 流程和業務代碼耦合,你中有我,我中有你(并不符合單一職責和解耦的設計原則)

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

    為什么要遵循規范 ?

    遵循市場行為

    舉例:我們日常的電池 ?? 有 7 號和 5 號標準,你當然可以生產一個 6 號的電池,有沒有人買就沒人知道了,如果你按標準生產出的電池,那么是可以直接用到大多數電器上,如果你生產 6 號電池,那么你只能自己開發 6 號電池的電器,且不說你這樣的做法是否被市場和行業認可,另外搞那么多不同的標準出來對于消費者來說也是一種災難,例如當年微軟的 IE 和 FireFox 的兩套標準讓現在的開發人員多么痛苦就知道了。。

    遵循行業的共識

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

    云程

    JeectBoot

    另外對于產品和業務人員也需要學習和理解 BPMN 的符號,從而可以對業務進行建模,可以看看人人都是產品經歷這篇文章: 關于 BPMN 流程建模方法 ,從而可以利用現有的 BPMN 流程設計器工具快速對業務建模(無需自己開發),只需將導出的 *.bpmn 文件導入遵循 BPMN 規范的流程引擎內即可運行。充分利用行業的生態和工具。這就是遵循規范所帶來的收益。

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

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

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

    Activiti 是應對大型系統的復雜流程的作戰工具,小規模場景和流程不復雜的業務系統,不建議使用。
    本章總結:為什么要用工作流引擎 ?

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

    Activit 是應對大規模作戰的裝備

    BPMN 規范介紹

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

    OMG 組織致力于維護 BPMN 規范的兩個目標:

    1. 流程的可遷移性:BPMN 2.0 規范定義了業務流程的符號以及模型,并且為流程定義設定了轉換格式,目的是為了讓流程的定義實現可移植性,那么用戶可以在不同的供應商環境中定義流程,并且這些 流程可以移植到其他遵守 BPMN 2.0 規范的供應商環境中。
    2. 解決簡單和復雜的平衡:BPMN 想要解決流程設計和復雜需求中間尋找一個平衡點,可以讓非技術人員建立簡單并且易懂的業務流程模型,同時可以處理高度復雜的業務流程,因此要解決這兩個矛盾的要求,需要在 BPMN 規范中定義標準的圖形和符號。

    四種基本要素

    BPMN 2.0 的圖形結構和要素,建議直接參考 WIKI 百科的答案,這里我就不搬運了:

    2.0 的幾點改進

    相比 BPMN 1.0 主要有以下改進:

    • 規范了流程元素的執行語法。
    • 定義了流程模型和流程圖的擴展機制。
    • 細化了事件的組成。 擴展了參與者的交互定義。
    • 定義了編排模型。

    Activiti 介紹

    Activiti 是目前國內比較主流的基于 BPMN 2.0 規范實現的工作流引擎,目前已經發布到 7.X 版本,并且已經開始實現 DMN 規范(決策與圖形,后面會講),另外關于工作流引擎還有一些比較老牌的玩家例如:JBPM 現在發展的也很不錯,還有目前比較新興的流程引擎:camunndaflowable 目前看起來也潛力十足,他們都是遵循了 BPMN 2.0 規范,因為在國內應用的比較主流,所以這里我們這里重點介紹 Activiti

    Activiti 出現和發展

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

    Activiti 的發展線路:

    1. Tom Baeyens 是 JBPM 的創始人,因為理念不合 Tom Baeyens 加入 Alfresco 公司后又發布了 Activit 5
    2. JBPM 因此放棄 JBPM 4 架構,完全基于 Drools Flow 重新開發 JBMP 5,但他們同樣都支持 BPMN 2.0 規范
    3. 從正統的延續來看,Activit 5 更像是對 JBPM 3、JBPM 4 的延續,所以國內大多企業都選擇 Activit

    JBPM、Activiti 區別

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

    官方的 Activiti 示例

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

    • 流程定義
    • 流程發布
    • 動態表單

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

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

    Activiti 目錄 /wars 下的三個示例程序職責分工:

    應用 說明 地址 默認賬號
    activiti-app 一個比較完善的流程引擎示例程序 /activiti-app admin/test
    activiti-admin 用于查看流程引擎中的主要數據 /activiti-admin admin/admin
    activiti-rest rest-api 應用 API,不再局限 Jar /activiti-rest kermit/kermit

    演示一個簡易的工作流的幾個步驟:

    1. 進入 activiti-app 系統,為創建用戶
    2. 設計一個簡單的工作流,并且為流程節點綁定用戶
    3. 創建 HR App 應用程序,設置包含請假流程,并且發布
    4. 員工進入 HR App 程序,提交一個請假申請
    5. 經理進入系統,并且同意員工的請假申請,示例流程完成
    6. 通過 activiti-admin 程序連接到 activiti-app 查看流程的歷史

    進入 activiti-app 系統,為創建用戶
    Activiti Index Page

    這里簡單介紹三個菜單的主要功能:

    • Kickstart App:定義應用程序,設計流程,建立程序和流程之間的關系
    • Task App:管理示例程序的任務,例如:我的待辦,發起流程等等
    • Identity management:管理用戶、用戶組等信息

    在 Identity management -> Users 菜單創建兩個用戶,用于模擬工作流:
    Create Users

    在 Kickstart App -> Processes 創建簡單的請假流程
    Create A Processes

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

    最后我們在 Kickstart App -> Apps 創建一個應用程序,并且綁定剛才設計的請假流程,如圖:
    App Included Process

    切記要發布流程,這樣我們切換普通員工 jack 身份進入系統的時候,就能看到發布應用程序,并且可以發起請假申請了,如圖:

    Show New App

    今天身體有點不舒服,進入 HR App 發起請假申請,如圖:
    Start A Process

    當我的請假申請提交的時候,任務就會自動發到經理那邊,我們切換經理賬號看看:
    Manager Show Page

    當經理點擊完成后,流程走完,任務就自動結束了。

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

    1. 打開鏈接:http://localhost:8080/activiti-admin/ 進入首頁
    2. 輸入默認賬號 admin/admin 就可以
    3. 首次進入要配置 activiti-app 的信息

    如圖:

    activiti-app Config

    這里我們配置過就可以直接打開 Instance,就可以看到所有執行過的流程歷史,點擊流程實例就可以看到詳細的歷史信息,如圖:
    Process History

    總結

    本篇主要介紹:

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

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

    posted @ 2021-07-26 11:51  小二十七  閱讀(3307)  評論(1編輯  收藏  舉報
    国产美女a做受大片观看