技術交流

如何讓企業流程管理系統更有彈性

Danny Danny

從事軟體開發的人員都有一個共同的經驗,就是前一個需求尚未修改完成,新的需求又提出來了,為什麼會有這個問題呢?我認為主要的問題在於,一個企業運作的過程包含兩部份,就是資訊流與作業流。資訊流指的是資料或表單作業所包含的資料運作的流向,這一部份的工作要電腦化,相對地比較容易,因為它只是把平常的作業由紙張轉換為電腦或將原來人工輸入的部份改由電腦自動完成。但是在作業流的部份,就隱藏著很多的問題,作業流指的是作業的程序,雖然大部份的企業都有制定標準作業程序(SOP),但實務執行上有很多的例外規則,並沒有被挖掘出來。包括執行的先後順序、人工流程的彈性…等等,這些都很不容易被整理為電腦的規則。

因此在開發的過程中,使用者會一點一滴提出需求,希望在流程中考慮所有可能的情境,其中有許多的需求是想像出來的或者極少發生,這也會造成開發上極大的困擾,因為需求沒有停止的一天,系統也無法穩定的執行。

我認為要解決這個問題,可以從兩個方面著手:一是流程的標準化,人工作業的流程就是因為太過於彈性,亦容易產生弊端,因此有必要建立標準的作業程序,另一方面雖然有了標準作業程序,但面對瞬息萬變的環境流程也要能夠即時的調整,以因應外在環境的改變。要讓流程能夠即時改變,需要從流程設計的觀念著手。

AgilePoint 實現流程的彈性

前面提到在一個流程中有兩個主要的要項--作業流與資訊流,其中改變主要在於作業流的部份,但以往我們所開發的應用系統或用的企業流程管理平台主要著重在資訊流的部份。系統整合與作業流大部份都依附在資訊流的表單中。換句話說,因為網頁的程式整合外部系統及流程都必需寫在網頁程式中,因此流程的改變往往需要修改表單,造成資訊流與作業流兩者密不可分及修改上的困難。

要達成企業流程的彈性,只要讓電腦化實現企業流程未電腦前的作業模式,也就是作業流與資訊流兩者分離。簡單的說,就是表單與簽核或系統整合的順序無關。在實務設計上需作到下面幾點:

  • 資訊流與作業流要分離:我們可以想像,在實務的作業中,表單與流程兩者是分離的 (除了現行的表單下方簽核順序的欄位,不過表單上的順序也不是強制性的)。
    要實現上述所說流程的彈性,我們最重要的工作是將資訊流與作業流分離,簡單的說就是表單的改變無需修改流程,流程的改變亦無需修改表單。在AgilePoint 中,以Microsoft Visio 作為基礎的Envision 設計企業流程,再將其轉換為XML 描述語言,無需經過編譯的程序。因此流程的改變只要調整流程圖再重新佈署即可,就像紙本作業的程序,只需在流程中增加審核的人員,無需更動表單的內容。
  • 在一個流程中往往會用到不同的表單或與異質的系統銜接,因此需要考慮不同的作業階段所用到的表單可能不同,但其中有不少資料是重複的。因此要作到流程中的資料是共用,表單只是資料的呈現。
    在AgilePoint 中流程所使用的資料是以共用資料庫的形式存在。因此可以不同的表單呈現,或將跨表單的資料寫入同一個應用系統。
  • 相同的資訊盡量集中在同一表單。但透過區塊的分類及權限的設定,讓不同的使用者看到不同的資訊,其好處為當流程增加步驟時,只需要設定新的權限即可。
  • 流程中各階段的表單與應用系統整合要分離:一個流程中所使用的表單,不同的時機需要不同的人員填寫,或將其輸入不同的應用系統。因此在電腦化時,只需將流程設計成不同的階段所使用不同或相同的表單,讓應用系統整合部份獨立成為一個步驟,視需要再安排在流程中的順序。

在流程的設計上,保持流程最大的彈性

  • 表單與流程分離:不要在表單中描述流程。
  • 人工作業 (表單的審核、輸入) 與自動化的步驟 (系統整合或邏輯判斷)兩者分離。

上述兩項的原則,主要為了讓作業流與資訊流兩者盡量的獨立,保持其各自修改的彈性。因為修改容易,在設計上不要太過於注重一次就要作到最完美,先將現有的流程電腦化,於系統上線後,再依實際的運作調整流程為最佳上策。