體驗班報名
略過巡覽連結       

            企業BPM管理工具--WorkFlow系統

 

 

Andy Kao


 

前言
 

即將邁入二十一世紀的今天,隨著科技的高速發展,已經讓時間與空間產生急速變化,企業都將要面臨全球化的競爭與薄利的來臨,製造業要面臨少量多樣問題,服務業要面臨快速提供顧客滿意問題,林林總總,都必須借重科技與自動化的能力,來達到提升速度與效率,大幅提升企業競爭力。

 

BPR(Business Process Reengineering),企業流程改造就是這種情境下,所產生的管理模式產物,但基於國人對此觀念的生疏與企業文化差異,幾年下來,只侷限於口號與了解階段,畢竟勇於大幅改變組織與架構的企業終究是少數。而BPM(Business Process Management)企業流程管理就不一樣了,他是一個具體的企業管理規章與工作流程規範,讓你的企業可以依制度規章來具體運作,我想大部分的企業都有了這套方法與制度,只是制度的簡繁與落實程度的差異,因此必須透過科技的方法,來落實這個管理辦法與制度,並能提高整體企業的運作速度與效能,這也是本文要說明導入Workflow工具的具體目的。
 

 

何謂工作流程管理系統
 

幾年前,工作流程可稱為電子簽核,定義也很多,多家廠商可以自我表述。隨著WFMC(Workflow Management Coalition)的成立,絕大多數的工作流程系統大都已經依照WFMC的標準來制定規格,以下我們就WFMC標準簡單定義一下工作流程管理。

 

工作流程:Work Flow,就是自動化處理程序的簡稱,指企業參與者對文件或訊息按照規範的制度來作業,並使其在企業參與者間傳遞,也就是一系列相互銜接,自動進行的業務活動或任務。狹義一點,就當作它是企業單據的電子簽核。

 

工作流程管理:Workflow Management就是人與電腦共同工作自動化協調控制和通訊,在電腦化的業務過程上,通過在網路上的軟體系統,使所有文件流程與命令的執行都處於受控制的狀態。在工作流程管理,工作量可以被監督與分派,使工作量可以讓用戶達成平衡

 

工作流管理系统:Workflow Management System是可透過軟體的定義,來建立工作流程並管理其執行。它必須執行在一個或多個工作流程引擎上,這些引擎必須能了解這些過程的定義,與工作流程間的參與者(可以是人或另一個軟體)相互作用,並根據需求配合其他的工具或程式相互應用。

 

      總體來說,實際在企業中運作的工作流程管理系統,它必須是一個「人機結合」的系統。它的基本功能將呈現在下列幾個方面:
 

   1.  定義工作流程,包括具體的流程活動(Activity)(平常我們稱程序)與規則等,這些定義是同時被人
        及電腦所共同瞭解的,就是人為的定義讓電腦系統能確實瞭解。
 

   2.  遵循定義去建立實例(Instant)與執行實際的工作流程。
 

   3.  監察、控制、管理執行中的業務與工作流程(可以解釋為企業單據),例如可對任務(單據)、工作
        量與進度的檢查與平衡工作等等。

 

(有興趣者可參考官方網站:http://www.wfmc.org)

 
 

關於微軟的WF

 

2007年初,老大哥微軟終於推出了第一個可以在.NET上執行的Work Flow架構,Windows Workflow Foundation(簡稱WF),他提供了一個可以整合在VS2005之下的程式開發環境與相關的工具,讓程式開發人員可以利用WF來建構工作流程管理系統,程式人員可以自由開發屬於自己的「流程活動元件」 (Activity),並整合其他現成可用的Web Service與其他外部的程式,可應用到各種不同的企業領域中。他有幾個特色,說明如下:

 

   1.  WF是有狀態的、持久化的、不間斷執行的應用程式:WF是個有狀態的服務(能記住上一次執行到那)的架構,並且是一個非同步執行的工作流程應用程序(可以不用讓Client去等待),最重要的是WF的工作流程引擎可以確保所有工作流程實例長期執行,並能抵抗機器的當機重開(這是因為這些Instant可以被序列化保存著)。
 

   2.  親和與視覺化的工作流程模型:WF為開發人員提供了一個親和與視覺化的工作流程模型,來描述應用系統所需要的處理過程。透過使用此開發界面能讓工作流程模型所提供的流程元件、狀態管理等,讓開發人員可以分離應用程式的邏輯和商業邏輯,構造一個高層次的抽象化流程物件,達到容易理解與維護的目的。
 

   3.  元件化可重用:WF為開發者提供了一系列的流程活動,這是一種基本工作單元,可被元件化設計。這種架構封裝了開發者可能經常性使用到的一些程式,可節省開發時間,也可讓這些自定義的活動元件提供了方法(Method),通過將工作流程引擎載入,來讓這個活動元件可受到外界的指揮來執行相對的方法。
 

   4.  可整合其他服務端的服務:執行時,可以透過Web Service或其他遠端服務程序來整合流程中各活動元件與需配合的商業邏輯與資料庫服務,包含資料的分裝與派送,讓系統更加靈活,在SOA(Service Oriented Architecture)服務導向架構風行的今日,更顯得與其他服務整合的重要性。

 
 

WF的架構

 

瞭解了WF的功能與特色後,接這透過這張圖,來了解WF的架構,現將下圖各名詞解釋如下:



(註:之前微軟官方稱Windows Workflow Foundation為WWF,現簡稱為WF)

 

Activity流程活動,為工作流程中的最基本單元,此活動單位,可以很簡單到複雜皆可。
 

Workflow:工作流程,為一組多個流程活動所組成的部分或全部的商業處理程序,當流程在引擎中被建立時,會製造一個流程實例(Instant)。
 

WF designers:流程的圖形設計工具,可用於新增與修改的工作流程中的各個流程活動。
 

WF base activity library:流程活動的基本元件組,這是微軟為我們開發好現成的流程活動元件,開發者可以直接使用,也可以自行來設計這類的活動元件。
 

WF runtime engine:用來執行工作流程的程式庫,也就是WF的工作引擎,並提供與外部整合與溝通的機制與服務,來加強本引擎的彈性能力。
 

Host Process:流程主機程序,這是一個WF主機的處理程序,當WF的runtime engine執行時,此主機程序將提供穩定的執行服務,如支援工作流程的狀態(利用序列化保留上次的狀態),處理流程的交易和其他功能等。
 

WF提供了開發者自由發揮的空間,架構上提供了以下兩種流程:
 

   1.  Sequential Workflow:一個循序往下進行流動的工作流程,每個流程活動都依流程的邏輯往下被執行,是一個只能前進不能後退的流程,此流程也可以讓參與者互動,決定何時往下執行,最常用在企業之複雜型商業邏輯的抽象化,可以簡化耦合度與讓商業邏輯透明化。
 

   2.  State Workflow:一個依照各個流程活動的狀態,來決定往下執行那個流程活動,此為企業流程最常用的應用,可以讓企業單據與服務在工作流中與參與者互動並整合企業的商業邏輯。

 
 

EEP2006 WF簡介

 

      2006年7月,當筆者拿到WF的Beta版時,就正式開始了WF研究之旅,一開始資源極少,很多功能都不太了解,但目標是清楚的,因為對EEP這個產品系列而言,已經是第二代的產品了,前一代是使用Delphi 5所開發的架構(產品代號為EEP Fast Flow),也沒用到真正的工作流程引擎,但客戶的滿意度還算不錯,主要是能結合EEP的表單即可輕易進行電子簽核。有了上一代的功能包袱與新一代產品總不可能會比上一代功能還不足的前提下,確實帶來開發EEP2006 WF的困擾,因為EEP Fast Flow是封閉與目的導向的系統,而WF是一個開放且符合WFMC協議的正規系統,兩者的差異很,為此我們共做了三次底層才能兼顧開放與保有原來產品容易開發整合的特性,現將EEP2006 WF產品要項說明如下:

 

   1.  100%採用WF Designer,除了可以在VS2005中設計工作流程外,我們有另外設計一個WF Designer 
來讓企業流程架構師與管理師來獨立執行,方便更改流程時可以不必進入VS2005來設計。
 

   2. WF Designer的流程圖可以透過Windows與Web來讓User直接作為導覽圖或預覽公司抽象化的流程制度。
 

   3. 使用強大的WF Runtime Engine作為核心的系統,讓你的Workflow能更穩定的執行與其他系統進行整合。
 

   4. 開發近10個高階的流程活動元件(Activity),可以直接與EEP2006的原有的Windows表單與Web表單無縫結合(只要多貼一個WF元件即可)。我們所開發的Activity目前都是Sequential(依序)類型的活動元件,但為了能在企業簽核中可以退回與簡化作業,我們WF Runtime Engine中往上架了一層FLRuntime來解決此問題。
 

   5. 提供配合原EEP2006的Login系統,可擴充整合WF所要的組織與角色其授權標準的設定,並提供全新完整兼具彈性的代理人制度。
 

   6. Login系統同樣可配合AD/Group的帳號與Email資料整合,每個流程活動可以控制是否整合發送Email通知或以Email簽回。
 

   7. 另提供流程入口主頁(Portal),Web與Win都可通用,並提供統一的待辦事項(此User所有流程單據的代辦中心),經辦事項(此User經辦過且未結案的流程單據),異常預警中心(屬下或自己的待辦逾時或發生異常)等等功能。
 

   8. 在EEPNetServer上的執行引擎有提供Workflow的API接口,以方便提供同樣在.net上其他網頁與Windows Client系統的整合與橋接,在Server端方面,我們也提供Web Service方式來與其他類似SOA架構的服務相互整合。

 

 

EEP2006 WF的架構

 

如圖為EEP2006 WF系統的架構圖,各部份功能簡單說明如下:

 

 

 

EEPNetServer:整個EEP2006WF系統事架構在EEPNetServer上,為了能搭配現有Server端被包裝過的商業邏輯(業務流程),因此如要在A/P Server中執行Workflow系統,只要將FLRunTime.dll註冊上即可運作。
 

EEP WF Designer:改寫或繼承自WF Designer的功能,可以獨立於VS2005之外,讓設計者可以不必透過VS2005,設計完成的工作流程將存成XOML檔案,須存放在EEPNetServer的指定目錄上,在Designer中所使用的活動元件,都是來自FLTools的活動元件。
 

EEP WF Activity:為EEP所提供常用的工作流程活動元件,可以很快速與EEP表單結合,達到簽核的目的,開發者也可以自行繼承或新增自已的流程活動元件,此模組中有部分使屬於U/I的元件,使用在Web或Windows的Client中為了配合流程簽核的操作所使用,並不是所有的元件都是屬於Acitivity。(此DLL為FLTools.DLL)。
 

EEP WF Core:為EEP的基本類型與基本相互溝通的核心程式庫,用來溝通FLTools的元件與FLRunTime以及FLDesigner所共同的元件類型與程式接口。(DLL名稱為FLCore.DLL)。
 

EEP WF RunTime:用來實際執行每個工作流程實例,與控制整個執行時期的狀態,他會交給微軟的WF Engine來執行,以增加流程的可靠度與穩定度,另外,此RunTime引擎中有特別去支援Sequential依序的活動可以被逆流退回。(DLL名稱為FLRunTime.DLL)。
 

FLDesignerCore:用來讓支援讓Web或Win的Client端程式,可以將設計好的流程圖可以顯示出來,除了讓User更了解公司的流程規範外,更重要的是讓User以此流程圖來操作表單與簽核。

EEP Win/Web Client:與之前的EEPNetClient.EXE與EEPWebClient類似,都可以自行Login到EEPNetServer上之外,還可以利用這兩個新的主頁面程式,顯示出WorkFlow的流程圖,並顯示待辦與經辦的資料,還有異常預警的警示資料等等。
 

註:因為整體的架構使用到微軟的Workflow Foundation,所以在Runtime的主機與開發的環境中都需要安裝.net 3.0或以上,在開發環境上還要安裝Windows Workflow Foundation的擴充包才能執行與開發。

 
 

結論

 

       如果企業有很清楚的自己的核心競爭力,那這個核心競爭力如何換成商業流程?並且這套商業流程如何轉化成可靠又有效的工作流程系統,將成為企業在下一波競爭的重要關鍵,或許多年來BPR與ERP系統對企業來說已經不敢期待什麼,難道我們就此必須對企業的IT發展高度失望與冷眼相待嗎?當然可以不必這麼悲觀,企業的ERP已經在運作,不管是好是壞,已經很難去跳脫它的侷限與困境,我們能做就是逐漸改善,讓他資料不僅只是資料,能夠使用Web的呈現方式讓資訊無所不在,加速企業的資訊的流通速度運作效能,進而在讓公司的制度與管理辦法可以透過Workflow系統來落實與增加工作效率,進而利用企業的BPM系統讓企業運作都在可被掌控之下,筆者當然不是BPM專家,無法在此高談BPM經驗與法則,僅以20年軟體工程經驗角度,提供資訊流工具的思維,至少可以回到幾年前的企業基本e化願景,將企業的ISO制度與電子簽核落實,我想這應該是最實際的事了。