什么是工作流引擎(Workflow Engine )
所謂工作流引擎是指workflow作為應(yīng)用系統(tǒng)的一部分,并為之提供對各應(yīng)用系統(tǒng)有決定作用的根據(jù)角色、分工和條件的不同決定信息傳遞路由、內(nèi)容等級等核心解決方案。例如開發(fā)一個系統(tǒng)最關(guān)鍵的部分不是系統(tǒng)的界面,也不是和數(shù)據(jù)庫之間的信息交換,而是如何根據(jù)業(yè)務(wù)邏輯開發(fā)出符合實際需要的程序邏輯并確保其穩(wěn)定性、易維護性(模塊化和結(jié)構(gòu)化)和彈性(容易根據(jù)實際業(yè)務(wù)邏輯的變化作出程序上的變動,例如決策權(quán)的改變、組織結(jié)構(gòu)的變動和由于業(yè)務(wù)方向的變化產(chǎn)生的全新業(yè)務(wù)邏輯等等)。 Workflow 引擎解決的就是這個問題:如果應(yīng)用程序缺乏強大的邏輯層,勢必變得容易出錯(信息的路由錯誤、死循環(huán)等等)。
就好比一輛汽車,外表做得再漂亮,如果發(fā)動機有問題就只是一個擺設(shè)。應(yīng)用系統(tǒng)的彈性就好比引擎轉(zhuǎn)速方面的性能,加速到100 公里需要1 個小時(業(yè)務(wù)流程發(fā)生變動需要進行半年的程序修改)還能叫好車嗎?引擎動不動就熄火(程序因為邏輯的問題陷入死循環(huán))的車還敢開嗎?
工作流解決方案與傳統(tǒng)管理軟件的關(guān)系傳統(tǒng)的管理軟件注重解決企業(yè)應(yīng)用層現(xiàn)存的問題(例如提高企業(yè)的資源配置率或提高單一員工的生產(chǎn)效率)。例如:EXCEL 可以提高員工畫表格的效率、財務(wù)軟件可以規(guī)范財務(wù)人員的工作并提高帳目查詢的效率、CRM 可以規(guī)范客戶管理從而使客戶資源掌握在公司手中而不是被一部分業(yè)務(wù)人員把持并提高客戶響應(yīng)時間、ERP 解決的是如何配置企業(yè)資源:使企業(yè)的人力資源、財力資源和物資資源能夠根據(jù)業(yè)務(wù)的需求實現(xiàn)最大化配置。 workflow 關(guān)注的是如何縮短流程閑置時間,從而提高企業(yè)的業(yè)務(wù)處理能力并使企業(yè)能夠關(guān)注于真正對企業(yè)有意義的增值業(yè)務(wù)上。從建立企業(yè)神經(jīng)系統(tǒng)的角度也許更能理解兩者的區(qū)別。傳統(tǒng)軟件不能解決工作流的問題,例如ERP 關(guān)注的是企業(yè)的資源配置,但不可能解決資源傳輸過程中的損耗和降低傳輸(流程)的成本;同樣workflow也不能完全解決傳統(tǒng)管理軟件所能解決的問題,例如對生產(chǎn)管理的MRP 系統(tǒng)所能解決的生產(chǎn)過程控制通過workflow很難實現(xiàn)。但一個好的傳統(tǒng)軟件如果希望能自動化地在整個企業(yè)中應(yīng)用起來,必須有一個強大的邏輯層,用以解決信息傳遞的邏輯判斷和自動流轉(zhuǎn),這個時候就需要workflow的平臺。所以說: 1.workflow 和傳統(tǒng)管理軟件不是同一種軟件,不具可比性; 2.workflow 對于已經(jīng)有傳統(tǒng)管理軟件的企業(yè)的作用非常明顯,可以籍此平臺整合企業(yè)的各種應(yīng)用系統(tǒng),使之成為一個完整的企業(yè)級應(yīng)用,也就是通常所說的EAI. 3. 具備workflow功能的管理軟件(workflow與傳統(tǒng)管理軟件的結(jié)合)對于傳統(tǒng)管理軟件有絕對的優(yōu)勢;4.workflow可以根據(jù)企業(yè)的需要開發(fā)解決信息傳遞問題的流程以及幫助企業(yè)開發(fā)與現(xiàn)有應(yīng)用系統(tǒng)的接口
工作流自動化并不復(fù)雜因為下述幾個原因,工作流自動化業(yè)界有" 適合處理復(fù)雜業(yè)務(wù)流程" 的名聲。
1.常規(guī)工作流自動化軟件包及其部署相當昂貴。通常,伴隨產(chǎn)品的是長時期的咨詢關(guān)系。所以為了非常簡單的業(yè)務(wù)流程購買和部署軟件是被不被采納的。這些軟件通常只被用于復(fù)雜、關(guān)鍵和控制成本相對較高而工作流自動化帶來的效益明顯的量產(chǎn)型工作流應(yīng)用。因此經(jīng)銷商和用戶都會不自覺地關(guān)注于將復(fù)雜的業(yè)務(wù)問題自動化。 2. 處于類似原因,工作流研究人士首先會關(guān)注解決了哪些復(fù)雜的業(yè)務(wù)流程問題。
而對于大多數(shù)案例而言,為解決簡單工作流程問題部署自動化軟件的成本顯然是不經(jīng)濟的。這里遵循一條簡單的道理:走之前必須先會爬,跑之前必須先會走。 3. 最后一條原因,也是"IT 業(yè)的尷尬".總經(jīng)理對IT部門經(jīng)理工作衡量的標準就是:能夠解決復(fù)雜問題的能力。自然,IT經(jīng)理就會不遺余力地解決那些復(fù)雜的問題,他們的方案通常也就復(fù)雜而且昂貴。
所有這些目前都在改變。針對桌面電腦的應(yīng)用方案快速發(fā)展以及工作流解決方案的發(fā)展使解決日常工作流程問題成為可能。費用不再昂貴,部署更為簡便。事實上,企業(yè)越來越意識到工作流的重要性,同時在部署復(fù)雜關(guān)鍵的流程自動化之前,愿意從一些簡單的流程入手積累經(jīng)驗。
工作流會成為操作系統(tǒng)的一部分嗎?
有人認為工作流會成為操作系統(tǒng)平臺(例如WINDOWS 平臺)的一部分。我們的觀點是,基于下述幾個原因,在可預(yù)見的未來,工作流不會成為操作系統(tǒng)的一部分: 1. 擴展表格、文字處理程序和數(shù)據(jù)庫存在了20多年,成了家喻戶曉的名詞。這些技術(shù)被廣泛理解和應(yīng)用,也相應(yīng)形成了各自的標準和相關(guān)術(shù)語。然而因為很多原因,直到今天這些技術(shù)也沒有成為操作系統(tǒng)的一部分。最重要的原因之一是用戶需要差異和選擇的自由。相比較而言,工作流自動化軟件是較新的技術(shù),也更有差異性、不易被廣泛理解并且比這些技術(shù)更為先進。因為工作流程的差異性和復(fù)雜性,工作流自動化的用戶需要更多的選擇空間。
2.財務(wù)軟件包從電腦發(fā)明后就迅速普及了。這是實施、術(shù)語和規(guī)則被普遍接受的另一個領(lǐng)域。然而至今也沒有哪種操作系統(tǒng)吹噓集成了多少財務(wù)軟件的功能。而工作流自動化軟件比財務(wù)軟件更為復(fù)雜和有差異性。 3. 操作系統(tǒng)提供商,例如微軟和Sun ,不會為了使其系統(tǒng)具備工作流自動化的功能而大量改變他們現(xiàn)有的系統(tǒng)。他們有什么必要為工作流自動化軟件投入開發(fā)和支持的成本呢? 4. 操作系統(tǒng)是為常規(guī)條件設(shè)計并使之最優(yōu)化。正因如此,目前操作系統(tǒng)的開發(fā)成本幾乎都要上億美元。業(yè)務(wù)流程十分復(fù)雜并充滿了例外情況,如在操作系統(tǒng)中內(nèi)嵌工作流自動化程序會極大地增加開發(fā)成本和難度。因此,即便操作系統(tǒng)提供商決定做工作流軟件,也會是巨額投入開發(fā)一套新的操作系統(tǒng),而不是將工作流嵌入。
事實上,今天的很多優(yōu)秀的工作流解決方案集成了短信息、頁面服務(wù)、目標管理、文件管理和其他一些操作系統(tǒng)才提供的服務(wù)。
工作流自動化的主要成分工作流自動化如今成了管理的一句時髦話。市面上也有很多號稱能激活工作流的自動化產(chǎn)品。只要他們的應(yīng)用程序支持基本的E-mail功能,賣主就會隨意地把" 激活工作流" 作為標簽貼在產(chǎn)品上。然而,這類產(chǎn)品和真正工作流自動化軟件之間的差別就如同寫字版和Word之間的差別。我們相信,應(yīng)用程序只有具備了下列主要特征,才能稱其為工作流自動化解決方案:
能夠畫出工作流程圖,當然以圖形化界面設(shè)計的為佳;能為每個步驟設(shè)計電子表格;能將外部應(yīng)用程序結(jié)合為工作流自動化的一部分;能與電子表格及企業(yè)數(shù)據(jù)庫相連接;能設(shè)計基于復(fù)雜業(yè)務(wù)規(guī)則的條件型路由的工作流程圖,最好無須編程;能根據(jù)功能、用戶名稱或上下級關(guān)系按規(guī)則傳遞信息;能夠監(jiān)控工作流執(zhí)行狀況;能夠?qū)ぷ髁鬟M行調(diào)節(jié);能夠模擬并測試工作流的行為;工作流的應(yīng)用必須支持多用戶并具高度可靠性;工作流的應(yīng)用必須支持內(nèi)部網(wǎng)或英特網(wǎng)及跨多種平臺。
網(wǎng)友討論工作流應(yīng)該是一個中間件而不應(yīng)該是一個完整的系統(tǒng)。工作流應(yīng)該整合到其他系統(tǒng)中而不是單獨使用。
工作流要完成的核心功能有流程設(shè)計,流程執(zhí)行,流程和線程的調(diào)度,任務(wù)的分派與通知,集成已有信息系統(tǒng)(很多人忘了)。
工作流應(yīng)該提供對組織機構(gòu),用戶,權(quán)限管理,流程,任務(wù)的管理能力,但是對這些管理能力最基本實現(xiàn)方式是提供API ,而不是一個管理系統(tǒng),即使把這些管理作為一個管理系統(tǒng)來實現(xiàn)(A ),也主要是用于演示,因為當工作流用于其它系統(tǒng)(B ),因為B 需要一個統(tǒng)一的管理界面,所以通常不會直接使用A.而表單設(shè)計,報表之類根本就是外圍功能,是二次開發(fā)商的任務(wù)。
我基本贊同wangtaoyy 的說法,再補充一點。我覺得工作流與其說是中間件,還不如說是一個應(yīng)用整合和集成的框架。類似在j2ee規(guī)范下各產(chǎn)商開發(fā)的應(yīng)用服務(wù)器,工作流也應(yīng)當是在wfmc標準下開發(fā)出來的" 容器" ,只要是滿足了標準的應(yīng)用程序或組件都能夠在這個" 容器" 中按照預(yù)定的規(guī)則被調(diào)度和執(zhí)行。我認為理想情況下工作流系統(tǒng)不應(yīng)該提供API 作二次開發(fā),工作流的內(nèi)部對基于工作流的應(yīng)用程序應(yīng)當是完全不透明的,工作流應(yīng)當提供給開發(fā)者的是一個類似于J2EE那樣的標準,一套編程模型和接口模型。開發(fā)者在這個模型下去實現(xiàn)那些接口,開發(fā)出應(yīng)用組件,再利用工作流提供的管理器進行" 注冊".總而言之,對開發(fā)者而言,工作流是黑箱,他需要做的事情是開發(fā)標準組件,在工作流提供的UI管理工具中配置業(yè)務(wù)流程,包括業(yè)務(wù)過程、資源、權(quán)限、時間、規(guī)則等等。
1. j2ee 應(yīng)用服務(wù)器也是中間件的一種。
2. 工作流要做成j2ee哪樣的標準還是比較困難的, j2ee 重點在于提供開發(fā)全新系統(tǒng)的能力,所以可以制定比較好的容器- 組件標準,而工作流的重點是整合已經(jīng)存在的系統(tǒng),要在這些各式各樣的老系統(tǒng)上強加標準是不現(xiàn)實的。
3.工作流應(yīng)該提供api ,因為其他系統(tǒng)中的一些事件可能會啟動一個流程,或者觸發(fā)其他與流程相關(guān)的東西
工作流分為兩種類型,一種是嵌入式的,另一種是非嵌入式的。這在WFMC的文檔中已經(jīng)有所介紹,大家可以找找看一下。按照工作流管理聯(lián)盟的文檔,大家說的都沒有什么錯誤,只是側(cè)重點不同。wangtaoyy 的觀點傾向于前者,而coffeewoo 的觀點傾向于后者。
我的看法并不是趨向于嵌入式工作流。我理解的工作流提供的api 并不是一般軟件包的API ,而是一種服務(wù)方式的API ,類似于操作系統(tǒng)中的系統(tǒng)調(diào)用。
我們在軟件中大量使用了操作系統(tǒng)提供的系統(tǒng)調(diào)用API ,但是操作系統(tǒng)并不是嵌入到我們軟件系統(tǒng)中的。我認為工作流系統(tǒng)與操作系統(tǒng)有很強的可比性,只是工作流層次更高。比如流程設(shè)計相當于編程,模型相當于程序,流程實例相當于進程,流程分支相當于線程,操作系統(tǒng)要對進程和線程進行調(diào)度,工作流引擎要對流程實例和分支進行調(diào)度,操作系統(tǒng)和工作流系統(tǒng)都應(yīng)該對內(nèi)存進行管理避免耗盡系統(tǒng)內(nèi)存,操作系統(tǒng)提供系統(tǒng)調(diào)用API 而工作流引擎提供工作流API.何其相似。
從功能的角度看:工作流系統(tǒng)的本職工作就是管理和控制業(yè)務(wù)流程,例如:流程實例的啟動、停止;環(huán)節(jié)實例的啟動、結(jié)束;任務(wù)的分配等等。從工作流系統(tǒng)的組成看:工作流系統(tǒng)應(yīng)該包括流程引擎、流程定義工具、運行管理工具、api 系統(tǒng)。工作流系統(tǒng)應(yīng)該該不包括表單定義、組織機構(gòu)定義及其管理、權(quán)限管理、數(shù)據(jù)流管理等等。
工作流系統(tǒng)雖然不包括上述功能,但是工作流系統(tǒng)一定會和上述功能發(fā)生交互關(guān)系,所以好的工作流產(chǎn)品并不是一個包辦上述功能的產(chǎn)品,而是一個設(shè)計良好的能夠和上述功能交互的系統(tǒng)。從和其他系統(tǒng)的關(guān)系看待工作流:如果站在基礎(chǔ)業(yè)務(wù)平臺的角度,那么,工作流系統(tǒng)、組織機構(gòu)管理系統(tǒng)、表單自定義系統(tǒng)、權(quán)限管理系統(tǒng)、數(shù)據(jù)流管理系統(tǒng)、報表系統(tǒng)都是這個基礎(chǔ)業(yè)務(wù)平臺的服務(wù)。業(yè)務(wù)功能系統(tǒng)在運行的過程中會調(diào)用這些服務(wù),這些服務(wù)之間本身也可能互相調(diào)用。例如:工作流服務(wù)和組織機構(gòu)管理服務(wù)之間的關(guān)系就非常密切,盡管如此,如果認為工作流系統(tǒng)一定包含組織機構(gòu)管理系統(tǒng)應(yīng)該是不正確的。在oa系統(tǒng)中,表單自定義好像比較重要,而且流程常常需要引用表單上的數(shù)據(jù),但是表單自定義絕對不是工作流系統(tǒng)的組成部分。流程在運行的過程中可能跨多個數(shù)據(jù)庫系統(tǒng),任務(wù)在流轉(zhuǎn)的過程中需要“攜帶”大量的業(yè)務(wù)數(shù)據(jù),但是這些也不是工作流要做的事情,完成這些工作的系統(tǒng)我稱之為“數(shù)據(jù)流管理系統(tǒng)”??傊簭墓δ艿慕嵌?,所有的功能都是必要的,但是從技術(shù)的角度,這些功能不可以做到一個“鐵板一塊”的所謂的“工作流”里面去。從技術(shù)發(fā)展的趨勢看:工作流系統(tǒng)很可能發(fā)展成為一個類似關(guān)系型數(shù)據(jù)庫管理系統(tǒng)的專職的系統(tǒng)。我那個工作流東東還在改進中,希望作出一個設(shè)計合理的(決對不是強行coding出來的),工程實用的東西出來