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