iT邦幫忙

2021 iThome 鐵人賽

DAY 3
1
自我挑戰組

後端工程師與圖的修練系列 第 3

BPMN 業務流程圖

BPMN (Business Process Model and Notation) 也是一個用來做業務流程圖的表示方法,他是一個系列的規範構成的畫圖模式。

在什麼情況下你可能會需要再深入了解 BPMN 或嘗試使用它呢?

  • 你流程圖會議參與者大多包含跨部門、領域的人
  • 實務工作很繁瑣、細節流程過於繁複
  • 承上,尤其主管或交付的客戶非常注重細節 (尤其是連工程師都難以關注的細節)
  • 開了一大堆會議在討論很多細節,而且難以讓人記憶,尤其有整理困難,就算細節寫成文件也是堆積成山,根本沒人想看

恰好 BPMN 這個工具或許可以把很多成山的文件變成流程圖,令工程師易懂,也好與交付對象建立更好的溝通傳達。

Wiki [1] 記錄的 BPMN 的基本要素有:

  • Flow Object (流程物件)
  • Connecting Objects (連接物件)
  • Swimlanes (泳道)
  • Artifacts (實體物件)

特別標註泳道,是因為他與上一節介紹的泳道圖恰好有關,這兩者的差異在於 BPMN 衍生出自己的一套繪製心法、流程。

以下是一個簡易的 BPMN 流程圖:

https://ithelp.ithome.com.tw/upload/images/20210913/20092753vC3OMn70sb.png

定義流程/問題邊界

對於上圖的畫法中,可以注意到圖特別關注了開始跟結束點,這是源自使用 BPMN 的核心思想: 把每一個業務中將會發生的事情定義成事件,每個事件都有開始跟結束,形成一個週期,像是: 客戶下訂事件、供應商進貨、調貨事件、夏季優惠事件、收銀台結帳流程、預約課程流程、會員簽到入場、維修工單。

現在看起來這張圖根本就是基礎流程圖,所以得繼續加一些 BPMN 的元素進去,看起來不那麼像傳統的圖片。

把上一節的泳道圖加進來,就等於有角色 (甚至部門、組織) 的區分了,泳道在哪?

https://ithelp.ithome.com.tw/upload/images/20210913/200927532vUZy04EIx.png

BPMN 圖很有趣,泳道圖就真的用游泳池水藍色,而這個圖表中,可以看到客戶泳道跟 B2C 店商平台的泳道是完全分離的,如果你有去大型游泳池游過,有些大型泳池會提供 5M 浮潛訓練用的泳道而且會完全跟旁邊的泳道分開,池水甚至不會共用。

每個泳道裡面有池水 (Pool),你就知道這個池水等等要放… 流程圖了,剛好泳道 (Lane)、池水 (Pool) 都介紹了,這就是 BPMN 的 Swimlanes 這個概念。

現在,試圖把泳道跟流程放進來:

https://ithelp.ithome.com.tw/upload/images/20210913/20092753zvkKYTjHF2.png

在這裡的虛線箭頭,表示的是 BPMN 的 Message Flow (訊息流),可以想成事訊息告知,事件告知,也可以當作是一種 PubSub 流程; 實線箭頭就是熟知的流程走向 (有順序性)。

客戶泳道與 B2C 平台泳道完全切割開來,因為他們在處理事務上並沒有我認定的那麼緊密,也許不同的部門,不相關的部門也可以再拆出第三個分隔的泳道出來。

為了善用 BPMN,我在圖片中繼續增加: 檔案、註解、群組三個概念,這就可以讓人知道發票要印出紙本,(出貨明細/物流單) 要整合放進貨品一起寄出,最終客戶手上拿到的是紙本的兩張紙(發票 + (出貨明細/物流單))。

https://ithelp.ithome.com.tw/upload/images/20210913/20092753rAQLR8lCGu.png

上面圖片中,綠色圓角方形就是 Task,Task, Sub-Process 都是屬於 Activities, Sub-Process 用途在可以縮減任務項目,整合成一塊,然後再告訴讀者還有很多 Task 在裡面,簡單的說,處理購物車根本就是個流程黑洞吧,特意把它使用了 Sub-Process 的圖案來標示。

這就是 BPMN,不過還有一些東西沒介紹到,像是 Intermediate Events, Choreography Task, Choreography Sub-Process, Call Activity, Sub-Process,所以看看能不能再改一版有用這些額外圖形表示工具的流程圖,就使用 Sub-Process 這個概念。

https://ithelp.ithome.com.tw/upload/images/20210913/20092753E3bgcl8K9T.png

上圖把處理購物車的任務換成了 Sub-Process,基本上就是把很多的任務壓縮在處理購物車這個任務中,購物車的檢查流程就直接被包成一塊。

最後再統整一下 Wiki 上列的 BPMN 對照解釋:

  • Flow Object (流程物件)
    • Events (綠綠的圓形,事件進入點;紅色圓形是結束點)
    • Activities (綠綠的方形含有 Border Radius 物件, 這個也叫做 Task)
    • Gateways (橘色轉 45 度的正方形)
  • Connecting Objects (箭頭、連線)
    • Sequence Flow (實線箭頭)
    • Message Flow (空心圓形開始,虛線箭頭)
    • Association (沒有箭頭的需線,代表兩者有關聯性)
  • Swimlanes (游泳道)
    • Pool (泳池)
    • Lane (泳道)
  • Artifacts/Artefacts (實體物件)
    • Data Object (資料物件)
    • Group (群組,可以幫活動分組,且不影響流)
    • Annotation (註解)

面對複雜的業務流程,劃出流程圖會是最難想到的起手式,因為他在一開始的繪製時間成本就很高,甚至還要整理很多內容,可是變相的想一想,假設你的文件庫快爆炸了,文件上盡是一堆文字,找不到方向及目標,那還不如投資時間在建立那些有共識、結構性的東西上,比方說圖片。

本文章繪製的工具是使用 Visual Diagram Online: https://online.visual-paradigm.com/drive/#diagramlist:proj=0&new=BusinessProcessDiagram

可另外參考一個開源的工具 BPMN.js

註: BPMN 是 Object Management Group 這個組織發表的標準,簡稱 OMG (喔賣尬)

更多詳情可以看看 Wiki - 業務流程模型和標記法 ,最後的 References 也有提供一些材料。

Reference:
[1] 業務流程模型和標記法
[2] 快速指南 BPMN - 2019
[3] 【SOP製作教學】流程圖教學、重點範例、BPMN符號介紹!


上一篇
泳道圖
下一篇
系統建模語言 SysML
系列文
後端工程師與圖的修練31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言