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