探尋SharePoint 2010中的無代碼工作流
我們知道,工作流是真實世界中流程的抽象,在真實世界中,流程可以按照有沒有人類參與來泛泛地分為兩種:系統流程和人類交互流程。
流程的種類
系統流程是指那些沒有(或者幾乎沒有)人類參與的流程,這種流程的執行過程早在設計階段就能夠完全預料,雖然某些情況下也可能會有少量的人類參與,但并不會左右流程的執行方向。
系統流程主要旨在解決系統以及數據之間的問題,我們可以把它視為服務或者過程。正因為系統流程如此簡單,所以在SharePoint中有許多方式可以實現系統流程,比如Event Handler、Timer Job或者Console Application;也正因為系統流程如此簡單,我們在面對一個需要實現的系統流程時,甚至不會(或者忘記了)將它與“工作流”這個看似高深的概念聯系到一起。
而人類交互流程,既有人類參與的流程,才是我們最容易聯想到“工作流”這個概念的流程。環顧我們生活的四周,人類交互流程無處不在。把真實世界中的流程抽象為數字化的工作流時,我們雖然能夠盡可能多地處理每一種可能發生的情況,卻很難知道工作流將來究竟會沿著怎樣的路線執行。
人類交互使得工作流變得復雜,在SharePoint中,我們大多使用Visual Studio來實現人類交互流程,這是因為在SharePoint 2007時代,SharePoint Designer的工作流設計能力還不足以應付復雜的人類交互流程;而在SharePoint 2010時代,SharePoint Designer雖然仍舊不能設計可以循環回退的工作流(哦,這真是個令人沮喪的消息),但其大量新特性勢必會讓我們設計人類交互流程(或者系統流程)時更加得心應手,并且我們也可以看到,SharePoint Designer的工作流功能也一直在向著這個方向努力。
SharePoint 2007中的工作流
SharePoint 2007***次引入了“工作流”這個概念。在SharePoint 2007中,工作流是基于Windows Workflow Foundation 3.0/3.5來構建的。SharePoint 2007內置了一些工作流來供我們使用,比如“審批”和“收集反饋”,但我們只能選擇用或者不用,而不能修改這些內置工作流。除了內置的工作流之外,SharePoint 2007還允許我們使用SharePoint Designer 2007來設計無代碼的工作流,或者使用Visual Studio 2005/2008來開發包含代碼的工作流。
SharePoint 2010中的工作流#p#
在SharePoint 2010中,工作流的底層基礎結構依然是Windows Workflow Foundation 3.5(很遺憾沒能夠基于WF 4.0)。代碼工作流的開發工具升級到了Visual Studio 2010,無代碼工作流的設計工具也升級到了SharePoint Designer 2010。
SharePoint 2010將Office的一個重要的客戶端成員,Visio,引入了工作流創作之中。眾所周之,Visio是一個非常強大并且易用的圖表設計工具,在 SharePoint 2007時代,就有許多人在問“為什么不能用Visio來設計SharePoint工作流”這樣的問題,因為用Visio可以很方便地設計出直觀的流程圖,相比而言,SharePoint Designer的工作流設計器卻并不是那么令人滿意。
我們可以在上圖中發現,Visio和SharePoint Designer總是結伴出現,這是以為Visio只是一個工作流建模工具,它的作用只是幫助業務人員很方便直觀的“畫”出工作流流程圖,這張流程圖里只有簡單的邏輯,而且沒有包含任何數據,所以它必須經過SharePoint Designer補充加工之后才可以變成真正可以運行的SharePoint工作流。
除此之外,我們還可以使用Visio 2010和SharePoint Designer 2010來編輯SharePoint 2010的內置工作流(這種編輯并不是嚴格意義上的“編輯”,而是“復制并編輯”),對我們來說,這個功能不僅能夠讓我們修改內置工作流以滿足我們的需求,也能夠通過查看內置工作流的組成來學習如何用SharePoint Designer來無代碼工作流。
SharePoint 2010中的工作流類型
在SharePoint 2007時代,工作流必須和列表或文檔庫做關聯(或者綁定)之后才能夠使用,這種工作流是一種列表級的工作流,在SharePoint 2010中,它被稱為“列表工作流”。眾所周知,列表工作流最為人所詬病的就是它難以重用,在使用SharePoint Designer設計列表工作流時,***步便是選擇需要關聯的列表,并且工作流在設計完成之后,是無法將它復制到其他列表去使用的。
針對這個問題,SharePoint引入了一種新的工作流類型:可重用工作流。可重用本質上還是一種列表級的工作流,依然需要和列表做關聯之后才可以使用,但我們在使用SharePoint Designer 2010來設計可重用工作流時,無需事先選擇將要關聯的列表,在工作流設計完成后,我們可以自由地將它關聯到多個列表,甚至導出為一個WSP文件來部署到其他服務器之上。SharePoint 2010內置的幾個工作流就是一種特殊的可重用工作流:全局可重用工作流,既可以在整個網站集的所有網站中重用的工作流,SharePoint Designer 2010可以讓我們輕松地將一個普通的可重用工作流提升為全局可重用工作流。
除了必須和列表相關聯之外,列表級工作流還有一個特點,就是必須基于一個列表項來啟動。所以有些時候,我們為了使用一些系統流程,或者在流程執行期間才創建列表項的工作流,就不得不去準備一個無意義的列表,并且去創建一個無意義的列表項,只是為了啟動一個工作流,無論從設計方式還是用戶體驗來說,這都不是一個令人滿意的解決方案。SharePoint 2010中新增加的“網站工作流”則可以解決這個問題,顧名思義,網站工作流是一種網站級別的工作流,它不需要和列表做關聯,也不需要基于一個存在的列表項來啟動。如果需要啟動一個網站工作流,可以直接在網站的【網站操作】【網站工作流】中進行操作。
工作流創作工具的關系
由于Visio的引入,SharePoint 2010便有了三個工作流創作工具。其中,Visio憑借其易用直觀的設計方式,為業務人員提供了設計工作流流程圖的良好用戶體驗。業務人員在Visio 中設計好工作流流程圖之后,將其導出成為一個VWI文件,交給IT人員,IT人員再將其導入到SharePoint Designer中,補充邏輯和數據,使其成為一個可以運行的工作流。在這期間,由于各自領域和所用軟件的差異,業務人員可能要與IT人員進行多次溝通。
如果在將來的某一天,無代碼工作流已經無法滿足我們的需求,IT人員就可以將其導出成為一個WSP文件,交給開發人員,開發人員再將其導入到Visual Studio中進行二次開發,經過這樣一個過程之后,無代碼工作流就變成了代碼工作流。
此外,開發人員還可以使用Visual Studio 2010來為SharePoint Designer開發自定義操作,來豐富和補充SharePoint Designer的操作庫。
以上便是我在“SharePoint 2010 Day”活動中奉獻的講座:《SharePoint 2010:新一代無代碼工作流》的部分內容,本文略去了講座中對于SharePoint Designer 2010新增的“自定義任務”的生命周期的相關介紹,以及關于網站工作流、可重用工作流、Infopath協同、Visio協同以及工作流狀態圖的相關 Demo。如果時間和精力允許,我會將它們單獨成文。
【編輯推薦】
- 打虎親兄弟 Office 2010與Sharepoint 2010的協同工作
- 微軟借SharePoint 2010在線編輯器挺進網絡辦公軟件
- 十二步完成SharePoint 2010的部分安裝
- SharePoint 2010 將共享功能更加人性化