系統架構設計筆記(38)—— 工作流設計

工作流技術的發展,經過多年的努力,取得了一定的成果。但在實際應用中,應用的企業還是較少,應用的範圍窄,效果不理想。

流程的設計是對設計者更高的挑戰,現實中對計算機所管理的流程需要靈活的定義 、 方便的路徑修改 、 容易使用,可是這幾個目標是矛盾的。更嚴重的是,如何分析現實中的流程本身就是個困難的問題,更不用談如何來設計實現了。

流程設計的主要困難實際上也就是軟件的主要困難:現實複雜性。任何對現實的描述(圖形也罷,文字也罷)都是不完美的, “ 不識廬山真面目 ” 是設計面臨的共同難題。設計者不得不意識到所有的流程模型都是對現實的簡化,計算機只根據確定的信息作判斷,而現實中的流程存在大量的不確定性,雖然計算機專家們自信地告訴企業管理者這是管理的問題,信誓旦旦地保證可以用計算機系統來 “ 完善 ” 企業的管理,但他們似乎沒有意識到企業管理已經發展了幾百年,而計算機還沒有百年的歷史。

人們常常抱怨計算機系統的流程設計太過刻板,因爲許多時候,標準流程是先於應用構造的且由一些集中的權威強制執行的,所以這種刻板性是不可避免的。同時,對參與者而言缺乏自由度導致工作流管理系統顯得很不友好。結果是它們經常被忽略或繞過,甚至最終被放棄。另外的困難是:對於流程處理,不但名稱衆多,例如,動態模型 、 工作流等,而且對流程的定義也是千姿百態。面對這些困難,設計者無疑需要巨大的勇氣來進行流程設計。

1 工作流設計概述

工作流管理聯盟對於工作流的定義:“工作流是一類能夠完全或者部分自動執行的經營過程,根據一系列過程規則 、 文檔 、 信息或任務在不同的執行者之間傳遞 、 執行 ”。

(1)工作流

簡單地說,工作流是現實中的具體工作從開始到結束過程的抽象和概括。這個過程包括了衆多因素:任務順序 、 路線規則 、 時間時限約束等。

(2)流程定義

流程定義是指對業務過程的形式化表示,它定義了過程運行中的活動和所涉及的各種信息。這些信息包括過程的開始和完成條件 、 構成過程的活動及進行活動間導航的規則 、 用戶所需要完成的任務 、 可能被調用的應用 、 工作流間的引用關係,以及工作流數據的定義。這個定義的過程可能是由設計者用紙和筆來完成的,但越來越多的設計者傾向於使用流程定義工具來完成這個工作。

(3)流程實例

也常常稱爲工作,是一個流程定義的運行實例。例如客戶的一次訂購過程,客服中心受理的一次客戶投訴過程等。

(4)工作流管理系統

和數據庫管理系統類似,是一個軟件系統。這個程序存儲流程的定義,按照所使用的流程定義來觸發流程狀態的改變,推動流程的運轉。這個推動的依據常常稱爲工作流引擎。

(5)流程定義工具

同樣是一套軟件系統,這個軟件和工作流管理系統的關係就如同數據庫設計工具和數據庫管理系統的關係一樣。它可能是獨立的軟件,也可能是工作流管理系統的一部分。如前所說,設計者常常使用流程定義工具來完成流程定義的工作。它提供一些常用的工作流元素素材,以提高設計者的效率。

(6)參與者

回答業務流程中 “ 誰 ” 這個問題。它可以是具體的人或者角色(企業內部有特別共同作用的多個人),也可以是自動化系統,甚至是其他系統。

(7)活動

活動是流程定義中的一個元素,一次活動可能改變流程處理數據的內容 、 流程的狀態,並可能將流程推動到其他活動中去。活動可以由人來完成,也可以是系統自動的處理過程,典型的自動處理是當活動超過了這個活動可以容忍的時限時,自動過程將向流程定義中指定的參與者發出一條消息。

(8)活動所有者

參與者之一,他有權決定該活動是否結束,當他決定活動結束時,將活動推動到其他活動中,可能是下一個活動,也可能是前一個活動。

(9)工作所有者

工作所有者是有權整體控制流程實例執行過程的參與者。

(10)工作項

代表流程實例中活動的參與者將要執行的工作。


要分析現實中的處理流程,必須首先描述目標系統的流程,這個過程也可以稱爲建模。流程是個複雜的事務,必須從多方面纔可以描述一個流程,包括: “ 誰 ” ,流程的參與者; “ 什麼 ” ,參與者做什麼工作; “ 何時 ” ,工作完成的時間限制,還需要說明工作的數據流和完成工作的控制流。

人們認爲自然語言在描述如此複雜的事務時容易引起歧義,所以人們定義了一些形式化語言試圖在自然語言中挑選一個子集,這個子集既可以真正描述流程,又能夠擺脫自然語言的複雜和多變,實際上想在人和機器在理解處理流程上架起一座橋樑,如同其他計算機語言及後來發展的統一建模語言一樣,這些形式化的語言也稱爲 “ 工作流定義語言 ” 。同樣,爲了描述實際中的處理流程,人們也想到了圖形的方式。有限狀態自動機是一種分析狀態和改變狀態的良好工具,這種方法需要完全列出流程中所有狀態及這些狀態的組合,當處理流程變得龐大時,自動機所對應的狀態圖膨脹得太厲害。由於 Petri 網有嚴格的數學基礎和圖形化的規範語義,在描述離散事件動態系統方面的能力已經得到公認,具有較強的模型分析能力,在工作流的描述和分析中已經是人們廣泛採用的一種方法。雖然有人認爲圖形並非工作流的最佳表示方法,但由於圖形的直觀性,大多數設計者都願意採用圖形的描述方式。

Petri 網是對離散並行系統的數學表示。 Petri 網是 20 世紀 60 年代由卡爾 ·A· 佩特里發明的,適合於描述異步的 、 併發的計算機系統模型。 Petri 網既有嚴格的數學表述方式,也有直觀的圖形表達方式,既有豐富的系統描述手段和系統行爲分析技術,又爲計算機科學提供堅實的概念基礎。

2 工作流管理系統

根據工作流管理聯盟( Workflow Management Coalition , WFMC )的定義,工作流管理系統是一種 “ 在工作流形式化表示的驅動下,通過軟件的執行而完成工作流定義 、 管理及執行的系統 ” ,其主要目標是對業務過程中各活動發生的先後次序及與活動相關的相應人力或信息資源的調用進行管理,而實現業務過程的自動化。

如同關係數據庫一樣,現在已經出現了專門的工作流管理系統,這些系統經過專門的設計,從不同的角度負責解決設計者在流程設計中遇到的共同問題:節點定義 、 路徑選擇 、 數據流動等。

不幸的是,和關係數據庫共同基於關係代數 、 支持標準的 SQL 不同,這些工作流管理系統基於不同的數學模型,提供完全不同的接口。所以這些工作流管理系統各具特色,但在通用性和其他系統相互協作上的不足使得這些系統的應用受到了限制。

WFMC 給出了包含六個基本模塊的參考模型,這六個模塊被認爲是工作流管理系統的最基本組成,這個參考模型同時包括了這些模塊之間的接口標準。

(1)流程定義工具

這部分軟件提供圖形化或者其他方式的界面給設計者。由設計者將實際工作流程進行抽象,並將設計者提交的流程定義轉換爲形式化語言描述,提供給計算機工作流執行服務進行流程實例處理的依據。

(2)工作流執行服務

這個服務程序是工作流管理系統的核心,它使用一種或者多種數據流引擎,對流程定義進行解釋,激活有效的流程實例,推動流程實例在不同的活動中運轉。和客戶應用程序 、 其他工作流服務執行程序及其他應用程序進行交互,從而完成流程實例的創建 、 執行和管理工作。同時這部分軟件爲每個用戶維護一個活動列表,告訴用戶當前必須處理的任務。如果有必要,還可以通過電子郵件甚至是短消息的形式提醒用戶任務的到達。

(3)其他工作流執行服務

大型的企業工作流應用,往往包括多個工作流管理系統。這就需要這些工作流管理系統之間進行有效的交互,避免畫地爲牢 、 信息孤島的現象出現。

(4)客戶應用程序

這是給最終用戶的界面,用戶通過使用這部分軟件對工作流的數據進行必要的處理,如果用戶是當前活動的擁有者,還可通過客戶應用程序改變流程實例的活動,將流程實例推動到另外一個活動中。

(5)被調用應用程序

這常常是對工作流所攜帶數據的處理程序,用得很多的是電子文檔的處理程序。它們由工作流執行服務在流程實例的執行過程中調用,向最終用戶展示待處理數據。在流程定義中應該定義這些應用程序的信息,包括名稱 、 調用方式 、 參數等。

(6)管理和監控工具

如同數據庫管理系統或多或少地提供一些方式告訴管理員當前數據庫的使用狀態一樣,工作流管理系統也應該提供對流程實例的狀態查詢 、 掛起 、 恢復 、 銷燬等操作,同時提供系統參數 、 系統運行情況統計等數據。


流程設計是系統設計中最困難的一部分,它的複雜性直接來源於現實世界的複雜性。而且直到現在,人們對流程的設計,仍然是在探索之中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章