BPM(Business Process Modeling,另作Business Process Management,企業流程管理)讓系統整合的層次提升到商業使用者,而非僅是IT人員。透過流程最佳化提升企業競爭力是所有人的夢想與職責,但由於整個企業的商業流程浩繁,IT技術與產品的多樣化,整體架構要兼具彈性、效率、穩定等面向可能彼此互斥,這讓架構工程師(Architect)一直以來很難規畫可大可久的BPM架構。

因為這不僅僅只是買個BPM流程引擎或設計介面,其中還牽涉到商業流程的規畫、應用系統的開發與整合,長期而言,尚需考量延伸系統的功能、版本升級、安全架構、分析與監控流程的執行等問題。

定位模糊標準繁多的BPM

BPM的想法與產品由來已久,但在國內IT人心中的定位大都混沌不明。在國外雖行之有年,但競逐的標準繁多。

例如IBM、微軟和BEA等首倡,並由OASIS審核的WS-BPEL(Business Process Execution Language for Web Services)、BPMI協會的BPML(Business Process Modeling Language)和BPMN(Business Process Modeling Notation)、W3C的WS-CDL(Web Services Choreography Description Language)、WfMC協會的XPDL(XML Process Definition Language)、OMG的MDA(Model-Driven Architecture)等。

相關標準這麼多,但沒有一家廠商獨大,怪不得關於BPM產品的架構優劣、如何滿足企業BPM的需求等議題,至今眾說紛云。

BPM特徵:執行期長,但多數時間是停滯的

或許BPM正在醞釀起飛中,而國內的著述或引進的原文書又不多、市面上多項產品實作方式差異頗大、各家企業的商業流程更是不同,因此難有逐步引導的書籍。

在此介紹一本關於BPM理論不錯的書:《Essential Business Process Modeling》。

作者是任職於IBM架構師的Michael Havey。本書的內容偏向介紹BPM標準的來龍去脈,而非圖解式地介紹以某項產品完成幾個企業基礎的流程。本書的讀者應該是企業的架構工程師,在規畫系統、選擇產品前可參考本書,較不適合學習如何寫程式碼,定義資料庫架構的開發人員。

本書的內容呼應了書名,討論的是BPM之本質(Essential)。看完後,你可以了解什麼是BPM、建置該系統需要的背景知識,但做不出一條能自動化的商業流程。

因為它並非以單一產品為背景,從頭到尾詳細解釋產品功能,逐步做出一個BPM系統。因此,這本書是你築底的背景,並非應用的招式,你可透過本書培養看問題的深度,但恐怕無助於當下問題的解決。

本書分為三個部分,前四章是本書第一部分,介紹BPM的概念。第二部分從第五章到第九章,分別介紹BPM各個面向的標準。第三部分為本書的最後兩章,以二個例子來介紹BPM的實作。

在第一章中,作者介紹了何謂流程、何謂BPM,以及導入BPM的好處。不過筆者覺得有趣的部份是他將流程導向(Process-Oriented)的程式特徵歸納如下:

● 執行時間長(Long-Running):某個流程的執行個體從開始到結束,可能經年累月。

● 要保存狀態(Persisted State):流程過程中的資料需要長時間保存管理,並提供查詢與更新。

● 個別動作變化迅速,但整體流程大部分時間都處於停滯(Bursty,sleeps most of the time):流程的執行個體大多數時間都是停滯的,等待下一個事件觸發後醒過來,趕忙執行相關的動作(Activity),並切換狀態。

● 協調系統以及人際之間的溝通整合(Orchestration of system or human communications):流程要能協調、管理並整合多個異質系統和人員。

分析師需要專屬的流程設計工具

除了基本特徵外,書中在第二章介紹BPM所面對的基本問題:

● 設計:BPM需要提供可以直觀繪製商業流程的軟體介面,使用介面須讓商業分析師(Business Analyst)容易上手,而非僅是IT專業人員。讓這兩種人有共通的圖形語言,且該語言需要嚴謹而簡潔。

● 執行:需要能準確執行使用者所繪製的流程圖。但其間流程圖會先轉化為專門用來描述流程的專屬語言,如BPEL,流程圖與流程語言可以輕易地互轉,期間不要參雜需編譯解析的程式語言。因為程式語言會降低商業流程開發的順暢性,讓設計與執行間夾雜了IT技術的鴻溝。

● 監控與管理:監控各流程的執行狀況,以處理個別流程例外狀況的發生,並統計各個流程的執行,以任意查詢各種資料。可以新增、檢視流程定義、啟動、暫停、回復、中斷、刪除各流程與其執行個體。而這些監控與管理的機制,除了透過套裝工具提供外,最好還能整合到使用者自己的應用程式中。

● 與人的互動:一些流程中的步驟需與特定的人或角色互動,除了友善的介面、彈性的流程步驟、安全的角色控管之外,並可以在人機介面與流程引擎之間整合交換資料。

● 與系統的互動:步驟中可以呼叫外部程式,或是被程式呼叫。這些程式可能是企業內部的元件或系統,但也可能是企業外部的協力系統。這部分最重要的是與各種IT技術整合的彈性,如:Web Services、MQ/Series、JDBC、J2EE、COM、.NET、MCF等。

而該章第25頁BPM架構圖2-2是個不錯的概觀指引,勾勒出BPM系統的基本元素與互動關係。

BPM產品仍處於戰國時期

第三章稍微解釋了BPM的數學理論基礎:Pi-Calculus和Petri Nets,對筆者來說,這似乎遙遠了些(看懂數學表示法的意義後,只高興了幾秒鐘,因為實在難與實務連結)。該章的後段稍以UML的Activity Diagram和State Diagram兩種圖形,輔之以保險理賠為背景故事,描述流程中的狀態變化,藉以解釋狀態機器(State Machine)和商業流程的關係。

在第四章中,作者表列針對流程設計常用的二十種流程設計模式(Process Design Pattern),此為van der Aalst、ter Hofstede、Kiepuszewski和Barrios等四位學者提出。而這二十種模式將一般的流程變化分為六大類:

一、基本型(Basic):如循序、分岔後平行執行、擇一執行、合併等。

二、進階的分岔與合併(Advanced Branch and Join):如複選、同步合併、多重合併、M取N合併等。

三、結構化(Structural):如任意迴圈、隱含結束等。

四、多執行個體(Multiple Instance):例如不同步、設計時期決定、執行時期決定、執行時期動態決定。

五、狀態(State-Based):延遲選擇、交錯平行繞行、里程碑等。

六、取消(Cancellation):停止活動、停止流程等。

但就本章其後的Yet Another Workflow Language(YAWL)一節,可以看到不只是前述流程定義的規格,實作的產品也處在戰國時代。上述四位學者歸納出,由於大部份的供應商都未完整支援這二十種流程設計模式,且沒有標準的圖示和語法描述這些設計模式,因此制定了 YAWL。而本書作者再引功能近似的BPMN、UML的Activity Diagram 和BPEL,以及Java、C++、Smalltalk 等程式語言與GoF設計模式的關係,借以強調YAWL不重要。

接下來五至九章都是介紹規格,就筆者個人覺得,第五章Business Process Execution Language(BPEL)和第九章Other BPM Models可以花些時間去了解,因為BPEL的聲勢較大,且最後兩章的範例多以 BPEL程式碼表現。而第九章內容是綜合陳述,且較貼近產品面。其它章節所描述的規格可以稍微瀏覽,碰到相關問題時再回來精讀。

本書的最後兩章搭配Oracle的BPEL Process Manager當作BPEL流程引擎,以非常簡單的流程提供實作範例,但太多地方僅表列WSDL 和BPEL程式碼,很容易讓人失去耐心。

其中,第十章透過BPEL設計簡易的壽險理賠流程,主要示範一般的人事流程,搭配Eclipse開發環境和Oracle BPEL Process Designer 0.9.10 for Eclipse 來繪製流程,並交由BPEL引擎執行。同時,作者也指出該版本BPEL引擎的Bug,並解釋他本人所提出的補救方式。

ESB:訊息整合平臺

最後一章討論Message Broker的概念。本章的Message Broker或可視為Enterprise Service Bus(ESB)理念的基礎架構,ESB 希望提供企業間系統整合時,有效交換訊息的平臺。

也就是若企業有N個系統,彼此之間要整合並交換訊息,則需要建立 N*(N-1)/2 個介面。但若有標準而集中的訊息整合平臺,各系統都只連接到該平臺,而這個訊息平臺根據既定的規則交換資料,則N個系統只需要建立N個介面。

單就ESB這個主題,以及在眾廠家極力鼓吹SOA 概念的今天,由於服務導向隱含了訊息導向,因此ESB本身就是個值得探討的議題。本章中,作者以人事醫療流程來示範,討論同時多個流程執行時,定義標準XML 訊息的重要。

 

《作者簡介》

胡百敬

現任職恆逸資訊教育訓練處資深講師,聯合報系、睿智資訊與臺灣微軟技術顧問。著有《SQL Server 2005資料庫開發聖經》等書,並為專欄作家。

 

閱讀建議

這是本稍嫌枯燥的書,很難讓人耐著性子一口氣看完。不知你是否喜歡讀法律條文,我是花了好多天翻來覆去地選讀,煩了就丟到一邊,別的事情做累了,再回來看看。外加很多的名詞需要從BPM的角度重新認知,這也是本文大量夾帶英文的原因。

但讀完之後,覺得對BPM的定位與規格有更深一層的認識。另外,每章最後都有結論,讓你可以重點溫習該章節的內容。畢竟理論看久也昏了,有個提綱挈領的概要,能收畫龍點睛之效。

 

延伸閱讀

除了本書外,你也可到以下的網址稍微了解BPM的相關資訊:

● Google和Wikipedia:本書有非常多的專有名詞,啃這本書讓筆者覺得好像回到研究生時代,隨便看篇論文,需要找的相關論文可能遠超過預期,現在有Google和Wikipedia真好。

● 提供BPM相關標準的網站:www.bpmi.orgwww.wfmc.orgwww.omg.orgwww.oasis-open.org

 

提供BPM產品的供應商網站:

www.ascentn.com:以.NET為基礎的BPM產品。
www.pegasystems.com:以Java為基礎的BPM產品。
www.microsoft.com/biztalk/def:微軟提供的流程引擎,在EAI 享有盛名,但其核心語言目前仍是XLANG,可匯入/匯出BPEL。
www.oracle.com/technology/products/ias/bpel/index.html:Oracle提供相關 BPEL的資源,主要是BPEL引擎。

熱門新聞

Advertisement