詳解Visual Studio 2010中SharePoint工作流
#T#
介紹完針對IT人員的SharePoint Designer 2010和針對業務人員的Visio 2010,我們再來看一下Visual Studio 2010為SharePoint開發人員提供了哪些便利。
在Visual Studio 歷代版本中,Visual Studio 2010的變化算是比較大的。就連同時發布的.NET Framework 4.0也將CLR從2.0一下子升級到了4.0。
在新建項目對話框中可以看出,Visual Studio 2010仍然支持SharePoint 2007項目,不過只有工作流項目。而在SharePoint 2010分類中,卻多出了如此多的內容,這便是全新的Microsoft SharePoint Development Tools。
由于SharePoint 2010的工作流仍然基于WF 3.5,所以我們仍然可以并且只能創建Sequential和State Machine兩種工作流(SharePoint 2010沒有使用WF 4.0真是件讓人掃興的事情)。除了這兩種經典的工作流類型之外,Visual Studio 2010還能夠導入由SharePoint Designer 2010設計的Reusable Workflow。
SharePoint 2010引入了一種新的解決方案類型,叫做sandboxed solution。SharePoint網站管理員可以不經過服務器管理員之手,直接將解決方案部署到網站集范圍內,而且該解決方案的操作范圍也被限制在部署它的網站集中。這極大地方便了簡單解決方案的部署和使用,相信將來SharePoint 2010 Online推出之后,這種解決方案一定會大放異彩。不過SharePoint工作流并不支持這種部署方式,我們只能老老實實地將它設計成為一個farm solution,如下圖所示:
Visual Studio 2010也能夠創建SharePoint 2010新增的工作流類型:Site Workflow,如下圖所示:
Visual Studio 2010并沒有像SharePoint Designer那樣大量新增活動,相比上一版本,只增加了如下圖所示的幾個活動:
此外,由于Site Workflow根本沒有和具體的列表項綁定,所以不能使用和列表項相關的OnWorkflowItemChanged和OnWorkflowItemDeleted兩個活動,其余所有活動都和List Workflow相同,這一點和SharePoint Designer 2010相似。
活動的變化暫時先看到這里,下面我們來看看其他變化,下圖展示了Visual Studio 2010的SharePoint工作流解決方案資源管理器:
我們看到兩個嶄新的文件夾:Features和Packages。Microsoft SharePoint Development Tools提供了在組織解決方案內的Feature和Package的能力,通過這一功能,我們可以以圖形化的方式來組織和管理Feature和Package,十分方便。下圖展示了嶄新的Feature編輯器:
在下圖所示的添加項對話框中,我們可以看到,除了Sequential Workflow和State Machine Workflow之外,和工作流相關的可添加項還有Workflow Association Form和Workflow Initiation Form。
這兩種頁面的格式都是ASPX,但很可惜的是并沒有提供可視化設計支持。我寧愿相信這也是beta版本的原因,因為Visual Studio 2010新增的Visual Web Part都能夠使用可視化的方式來設計了。不管怎么說,我們終于可以比較方便的為工作流設計基于ASP.NET的啟動頁面和關聯頁面了。
當然,我們仍然可以使用InfoPath表單作為工作流的啟動頁面和管理頁面。和上一版本一樣,我們需要手工修改Workflow.xml文件,添加必要的宿主頁面、內容類型ID和表單URN,Visual Studio 2010并沒有替我們完成這部分內容(令人不解的是,為什么不把宿主頁面和那個長長內容類型ID也像表單URN的相關元素一樣注釋起來,以供我們更加方便地使用呢?)。
我們從上面的解決方案資源管理器中看到的Elements.xml就是以前的Workflow.xml,并且由于新增了Site Workflow,Elements.xml的MetaData元素中也相應地增加了一個AssociationCategories元素,用以標識工作流時List Workflow還是Site Workflow。
本來想嘗試用SharePoint Designer 2010和Visio 2010設計一個包含它們特有的操作(活動)的Reusable Workflow,然后保存為WSP模板,再使用Visual Studio 2010導入,看看會發生些什么。
結果可恥的失敗了數次,唯一的收獲就是發現如果Visio 2010設計的工作流流程圖如果包含了那四個神秘的權限操作的話,雖然導入到SharePoint Designer 2010里可以正常識別并且設置屬性,但是在檢查錯誤的時候就會提示該活動放錯了位置,只要將其移動到SharePoint Designer 2010新增的Impersonation Step中,錯誤就會得以解決。
我猜想是因為設置權限這種操作本身就需要更高的權限才能執行,而SharePoint 2010的工作流貌似已經是以啟動工作流的用戶權限來運行了,只有其中的Impersonation Step才會以工作流作者(代表著更高的權限?)的權限去執行。
原文標題:SharePoint 2010工作流系列(4):初窺Visual Studio 2010的SharePoint工作流功能
鏈接:http://www.cnblogs.com/xiaoshatian/archive/2009/11/17/1604216.html