![sharepoint高效率工作流開發(fā)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/4/81db25a4-6dac-4732-928c-825733f7b35e/81db25a4-6dac-4732-928c-825733f7b35e1.gif)
![sharepoint高效率工作流開發(fā)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/4/81db25a4-6dac-4732-928c-825733f7b35e/81db25a4-6dac-4732-928c-825733f7b35e2.gif)
![sharepoint高效率工作流開發(fā)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/4/81db25a4-6dac-4732-928c-825733f7b35e/81db25a4-6dac-4732-928c-825733f7b35e3.gif)
![sharepoint高效率工作流開發(fā)_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/4/81db25a4-6dac-4732-928c-825733f7b35e/81db25a4-6dac-4732-928c-825733f7b35e4.gif)
![sharepoint高效率工作流開發(fā)_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/4/81db25a4-6dac-4732-928c-825733f7b35e/81db25a4-6dac-4732-928c-825733f7b35e5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 本章主要闡述SharePoint Designer 2007(SPD)的工作流應(yīng)用與利用WF對SharePoint Designer工作流組件(動作和條件)進行擴展,講解利用WF和Visual Studio 2008開發(fā)工作流模板的方法。本章提供視頻教程:采用SPD設(shè)計工作流的默認方式和定制后的方式。本章包括:n 工作流開發(fā)概述n 采用SharePoint Designer設(shè)計工作流n
2、60; SharePoint Designer工作流的擴展n 采用Visual Studio 2008 開發(fā)工作流模板7.1 工作流開發(fā)概述SharePoint基于WF(Window Workflow Foundation)構(gòu)建了它的工作流功能。WF是SharePoint工作流框架的基礎(chǔ),要深入了解SharePoint工作流的開發(fā),首先應(yīng)該了解WF的一些基礎(chǔ)知識,本章對WF的技術(shù)細節(jié)并不會過多講解。本節(jié)將講述SharePoint工作流的基礎(chǔ)知識,并介紹系統(tǒng)自帶的工作流模板的使用和默認的工作流任務(wù)操作方式。7.1
3、.1 工作流開發(fā)環(huán)境的搭建如果使用Visual Studio 2005開發(fā)SharePoint工作流應(yīng)用,首先需要安裝Visual Studio 2005的WF擴展Visual Studio 2005 Extensions for Windows Workflow Foundation ,可以在以下地址下載:.microsoft./downloads/details.aspx?familyid= 5D61409E-1FA3-48CF- 8023-E8F38E709BA6&displaylang=zh-cn。然后安裝Office SharePoint Server 2007
4、SDK。采用Visual Studio 2005開發(fā)SharePoint工作流,無論是開發(fā)環(huán)境的搭建還是開發(fā)時調(diào)試和測試,都比較煩瑣。Visual Studio 2008已經(jīng)發(fā)布正式版了,VS 2008提供了對SharePoint工作流開發(fā)更好的支持,直接集成了開發(fā)、部署和調(diào)試。本章的示例將采用VS 2008來進行。為了便于調(diào)試和測試工作流,選擇直接在SharePoint服務(wù)器環(huán)境下開發(fā),因此VS 2008要直接安裝在SharePoint服務(wù)器上。7.1.2 SharePoint工作流的基本概念SharePoint工作流是一個預(yù)先定義好的對列表項或文檔庫文檔的處理流程。一個工作流實
5、例跟一個列表項或文檔進行關(guān)聯(lián),工作流實例不能脫離列表項存在。當需要用戶處理數(shù)據(jù)的時候,比如進行審批操作,系統(tǒng)會創(chuàng)建一個任務(wù)到某個任務(wù)列表中,審批用戶操作列表中的任務(wù)來實現(xiàn)跟流程實例的交互。工作流實例可以在列表新建、修改時自動啟動,或者可以由用戶手動啟動。MOSS支持兩種工作流的開發(fā)方式。l 利用SharePoint Designer可以設(shè)計簡單的無代碼順序工作流。在SharePoint Designer中,可以直接創(chuàng)建跟某個列表或文檔庫關(guān)聯(lián)的工作流,在工作流中,可以直接訪問列表項的字段,獲取字段的值
6、作邏輯判斷或者給字段賦值,給用戶分配審批任務(wù)并動態(tài)生成審批界面。SharePoint Designer設(shè)計的工作流只能跟一個列表(或文檔庫)關(guān)聯(lián),單個工作流無法用于多個列表,不同列表(或文檔庫)的工作流處理邏輯即使一樣,也只能分別進行設(shè)計。采用SharePoint Designer設(shè)計工作流的優(yōu)點是操作簡單,無須編譯和部署,缺點是只能實現(xiàn)順序操作邏輯,無法實現(xiàn)退回等循環(huán)邏輯,審批界面自動生成,也無法實現(xiàn)一些復(fù)雜的操作。7.2節(jié)將演示采用SharePoint Designer設(shè)計工作流的步驟。l 利用
7、Visual Studio可以開發(fā)復(fù)雜的順序或狀態(tài)機工作流。在Visual Studio 2008中,可以直接在WF設(shè)計器中開發(fā)工作流,工作流開發(fā)好后,編譯成DLL,然后采用Feature部署到SharePoint服務(wù)器,在中將Feature激活后,工作流即可使用了,可以把這種工作流關(guān)聯(lián)到多個列表。所以又稱Visual Studio 2008設(shè)計的工作流為工作流模板。Visual Studio 2008開發(fā)工作流的優(yōu)點是能實現(xiàn)很復(fù)雜的流程邏輯,開發(fā)出來的工作流模板可以供多個、多個列表使用。流程任務(wù)的操作界面可以采用infopath或者直接采用aspx頁面,這樣就可以實現(xiàn)較復(fù)雜的頁面操作。缺點就
8、是開發(fā)部署比較復(fù)雜,對開發(fā)人員要求較高。7.1.3 SharePoint工作流的操作方式SharePoint的工作流的默認操作方式并不適合用戶的操作習(xí)慣,一般來說其他工作流產(chǎn)品的操作方式是用戶在一個頁面上完成所有操作,包括查看業(yè)務(wù)數(shù)據(jù)(被審批數(shù)據(jù))、填寫審批意見等。而SharePoint工作流的操作方式是:業(yè)務(wù)數(shù)據(jù)跟審批數(shù)據(jù)分離,業(yè)務(wù)數(shù)據(jù)可以用列表項或文檔庫中的文檔來表示,用戶審批的時候默認只看到審批頁面,只有單擊才能查看業(yè)務(wù)數(shù)據(jù),這種操作方式對文檔審批還是說的過去的,但是對列表數(shù)據(jù)的審批操作就有點“不夠人性化”了。在實際的項目中,需要對用戶的操作習(xí)慣進行引導(dǎo)。SharePoint
9、默認提供了很多工作流模板,這些工作流模板跟采用VS 2008開發(fā)的工作流模板操作上是一樣的。下面看一下系統(tǒng)自帶的“審批”工作流模板的使用。要在SharePoint中使用一個工作流模板,首先需要將工作流模板跟文檔庫或列表關(guān)聯(lián),操作步驟如下。Step1 在文檔庫的設(shè)置頁面單擊“工作流設(shè)置”,如圖7-1所示。圖7-1 工作流設(shè)置Step2 在添加工作流頁面中,選擇工作流模板為“審批”,輸入工作流名稱為“文檔審批”,單擊“下一步”,如圖7-2所示。圖7-2 添加工作流任務(wù)列表是用戶存放工作流給審批用戶分配的任務(wù)列表項的列表,可選擇系統(tǒng)已經(jīng)存在的任務(wù)列表或
10、者新建一個任務(wù)列表。歷史記錄列表用戶存放工作流運行工程中產(chǎn)生的日志信息。Step3 在工作流參數(shù)設(shè)置頁面中,選擇任務(wù)分配對象為“串行”,輸入兩個用戶作為審批者,選擇“文檔被拒絕”時取消工作流,選擇“工作流完成后”為“更新審批狀態(tài)”,如圖7-3所示。單擊“確定”按鈕完成設(shè)置。圖7-3 設(shè)置工作流參數(shù)設(shè)置工作流參數(shù)頁面又叫做工作流關(guān)聯(lián)界面,本示例中的關(guān)聯(lián)界面是采用InfoPath表單開發(fā)的,這個表單叫做工作流關(guān)聯(lián)表單,7.4.7節(jié)將講述工作流關(guān)聯(lián)表單的開發(fā)。Step4 為了方便審批用戶的操作,需要將用戶任務(wù)WebPart添加到的首頁,如圖7-4所示。圖7-4
11、160; 添加用戶任務(wù)WebPart工作流的配置操作已經(jīng)完成,下面我們看一下這個工作流的使用。Step1 在文檔庫中新建或上傳一個文檔,然后在下拉列表中選擇“工作流”選項,如圖7-5所示。圖7-5 選擇“工作流”選項Step2 單擊“文檔審批”工作流,如圖7-6所示。圖7-6 選擇工作流Step3 在接下來的配置審批參數(shù)頁面中,可以輸入審批信息,如圖7-7所示。再單擊“啟動”按鈕。圖7-7 配置審批參數(shù)這個配置審批參數(shù)的頁面在工作流啟動(初始化)的時候出現(xiàn),因此叫做初始化表單,可以采用infopath開發(fā),在7.4.8節(jié)將
12、具體講述工作流初始化表單的開發(fā)?,F(xiàn)在文檔審批工作流已經(jīng)啟動,返回到文檔庫頁面,可以看到文檔庫上多出來一個“文檔審批”欄,如圖7-8所示。通過“文檔審批”欄中的可以到工作流監(jiān)控和管理頁面,如圖7-9所示。通過工作流監(jiān)控和管理頁面,可以查看工作流任務(wù)的分配和完成情況,強制終止工作流。圖7-8 文檔庫中工作流圖7-9 工作流監(jiān)控頁面用第一個審批用戶的賬號登錄系統(tǒng),可以在用戶任務(wù)Web部件中看到需要操作的任務(wù),如圖7-10所示。圖7-10 工作流任務(wù)單擊任務(wù),在接下來的任務(wù)操作頁面中可以通過查看被審批的文檔,通過下方的“批準”和“拒絕”按鈕進行審批,如圖7-11所示
13、。圖7-11 任務(wù)頁面任務(wù)操作頁面又稱為任務(wù)表單,可以采用infopath開發(fā),在7.4.4節(jié)將具體講述。用第2個審批用戶的賬號登錄系統(tǒng),進行批準操作。兩個審批用戶都批準之后,返回到文檔庫頁面,可以看到文檔審批的狀態(tài)已經(jīng)變成“已批準”,如圖7-12所示。圖7-12 文檔庫7.2 采用SharePoint Designer設(shè)計工作流SharePoint Designer可以設(shè)計無代碼的工作流,對列表項或文檔啟用處理邏輯。SharePoint Designer只能設(shè)計出簡單的順序工作流,本節(jié)了解一下具體的操作方法。7.2.1 列表項流程示例本節(jié)演示一
14、個員工請假流程的設(shè)計:員工提交請假單,由審批人進行審批,審批人批準之后,自動添加一個日程到日歷列表中,如果不批準,則通知提交人。具體的操作步驟如下。Step1 創(chuàng)建列表。新建一個自定義列表,名稱為“員工請假”,添加如圖7-13所示的欄。圖7-13 創(chuàng)建列表Step2 啟用列表的容審批。通過“列表設(shè)置”“版本控制設(shè)置”,啟用列表的容審批。設(shè)置“僅限可批準項目的用戶”可以查看列表中的草稿項目,如圖7-14所示。圖7-14 啟用容審批Step3 新建工作流。用SharePoint Designer 打開站點,選擇“文件”“新建”“工作流”命
15、令,如圖7-15所示。圖7-15 新建工作流Step4 指定工作流名稱和啟動方式。在定義新工作流界面中,輸入工作流名稱為“員工請假流程”,選擇附加到“員工請假”列表,再選擇“允許從項目中手工啟動此工作流”,如圖7-16所示。圖7-16 定義新工作流界面Step5 添加審批步驟。將步驟名稱改為“經(jīng)理審批”,在操作中,選擇“從用戶處收集數(shù)據(jù)”,單擊“此用戶”,在彈出的對話框中選擇一個審批人,如圖7-17和圖7-18所示。圖7-17 添加審批步驟圖圖7-18 選擇審批用戶Step6 設(shè)計審批步驟需要采集的數(shù)據(jù)。單擊“
16、數(shù)據(jù)”,在自定義任務(wù)向?qū)е休斎肴蝿?wù)名稱為“請假審批”,如圖7-19所示,再單擊“下一步”按鈕。圖7-19 添加“請假申請”添加一個名稱為“審批意見”的多行域,如圖7-20所示。添加一個名稱為“是否同意”的選項類型域,選項為“批準和拒絕”,如圖7-21所示。圖7-20 添加“審批意見”域 圖7-21 添加“是否同意”域以上的操作實際上是創(chuàng)建了一個任務(wù)容類型,并且創(chuàng)建了其編輯表單,如圖7-22所示。圖7-22 請假審批容類型Step7 修改審批任務(wù)ID變量名。通過添加“從用戶處收集數(shù)據(jù)”動作創(chuàng)建了一個任務(wù)容類型,在
17、工作流運行的時候,會創(chuàng)建一個任務(wù)列表項,這個列表項的ID會被放到流程的變量中,以便從工作流中可以訪問任務(wù)數(shù)據(jù)。我們把存放這個任務(wù)列表項ID的變量名修改為“請假審批任務(wù)ID”,如圖7-23和圖7-24所示。圖7-23 修改工作流變量名圖7-24 重新選擇任務(wù)ID綁定到的變量Step8 添加審批完成后的處理邏輯。再添加一個工作流步驟,名稱為“審批完成”,如圖7-25所示。圖7-25 添加審批完成步驟Step9 添加判斷條件。經(jīng)理審批同意時需要批準列表項,并且將請假休息添加進日程列表中,首先需要添加判斷經(jīng)理審批是否同意的條件,查找到審批任務(wù)
18、列表項的是否同意字段,進行判斷即可。從“條件”菜單中選擇“比較任意數(shù)據(jù)源”,如圖7-26和圖7-27所示。圖7-26 添加比較任意數(shù)據(jù)源條件圖7-27 比較任意數(shù)據(jù)源比較任意數(shù)據(jù)源條件是“如果值等于值”的形式,第一個值可以綁定到當前列表項的任意字段,或者是其他列表項的字段。這里我們要把它綁定到任務(wù)列表的“是否同意”字段。單擊“值”,再單擊“綁定”圖標,在定義工作流查找窗口中,選擇數(shù)據(jù)源為“任務(wù)”,選擇域為“是否同意”,設(shè)置匹配值為任務(wù)ID匹配工作流變量中的“請假審批任務(wù)ID”,如圖7-28所示。圖7-28 綁定到是否同意字段設(shè)置條件為任務(wù)的“是否同意”字段值
19、等于“批準”,如圖7-29所示。圖7-29 設(shè)置判斷條件為“批準”Step10 添加列表項審批操作。在“操作”中選擇“設(shè)置容審批狀態(tài)”,并將容審批狀態(tài)設(shè)置為“已批準”,如圖7-30所示。圖7-30 添加審批操作Step11 創(chuàng)建日歷信息。添加一個“創(chuàng)建列表項”操作,選擇列表為“個人日歷”(若不存在,則先創(chuàng)建此日歷列表),將日歷的標題設(shè)置為“請假”,將開始時間和結(jié)束時間綁定到當前列表項的相應(yīng)字段,如圖7-31所示。圖7-31 創(chuàng)建日歷項Step12 添加批準未通過的操作。添加一個Else If條件分支,添加設(shè)置容審批狀態(tài)操作,將容審批狀態(tài)設(shè)置為“已拒絕”,添加
20、一個發(fā)送操作,給啟動流程的用戶發(fā)送一封提醒,如圖7-32所示。圖7-32 添加容審批為“拒絕”和發(fā)送操作SharePoint Designer設(shè)計的工作流的使用和7.1.3節(jié)描述的操作方式基本是一樣的。不同的是,單擊任務(wù)首先進入的任務(wù)查看頁面,在任務(wù)查看頁面中單擊“編輯項目”后才會轉(zhuǎn)到任務(wù)編輯頁面,如圖7-33,圖7-34和圖7-35所示。圖7-33 任務(wù)列表圖7-34 任務(wù)查看頁面圖7-35 任務(wù)編輯7.2.2 SharePoint Designer工作流的遷移SharePoint Designer設(shè)計工作流的功能是提供給最終用戶使
21、用的,就如同用SPD定制站點頁面一樣,并沒有提供專門的流程遷移工具。最終用戶可以直接在生產(chǎn)環(huán)境中設(shè)計流程。對開發(fā)人員來說,如果在開發(fā)環(huán)境中設(shè)計好了一個比較復(fù)雜的流程,需要遷移到生產(chǎn)環(huán)境,必須手工操作,可以參考如下步驟。Step1 確保生產(chǎn)環(huán)境已經(jīng)建好了相應(yīng)的列表,并確保列表的配置跟開發(fā)環(huán)境完全一致,包括列表名稱、列表的所有欄。Step2 用SharePoint Designer打開生產(chǎn)環(huán)境的站點,新建一個與開發(fā)環(huán)境名稱一樣的流程,綁定到同名稱的列表,直接保存。Step3 SharePoint Designer打開開發(fā)環(huán)境的站點,將工作流的所有文件復(fù)制到生產(chǎn)環(huán)
22、境。Step4 打開所有工作流的文件,將其中所有的列表項ID替換成生產(chǎn)環(huán)境相應(yīng)的列表項ID。7.3 SharePoint Designer工作流的擴展SharePoint Designer提供了常用的很多條件和活動,但是這些條件和活動并不能滿足所有需要。本節(jié)就來講述SPD動作和條件的擴展。7.3.1 動作的擴展SPD工作流的動作是一個普通的WF活動類。WF活動類開發(fā)好以后,部署到GAC中,然后修改SPD工作流的配置文件,注冊新開發(fā)的活動。SPD工作流配置文件路徑為C:Program FilesCommon FilesMicrosoft Sharedweb s
23、erver extensions12TEMPLATE2052Workflow,2052表示中文語言,英文語言的配置文件路徑為C:Program FilesCommon FilesMicrosoft Sharedweb server extensions12TEMPLATE1033 Workflow,在這個路徑下,有個WSS.ACTIONS文件,這是一個XML文件,這個文件里面配置了所有系統(tǒng)自帶的動作和條件。WSS.ACTIONS在Actions節(jié)點下聲明了所有的動作。SDP工作流是基于規(guī)則來定義的。在ACTIONS配置文件中,將動作類的屬性與各種規(guī)則設(shè)計器關(guān)聯(lián)。以下是“從用戶處收集數(shù)據(jù)”動作的
24、聲明。<Action Name="從用戶處收集數(shù)據(jù)" ClassName="Microsoft.SharePoint.WorkflowActions.CollectDataTask" Assembly="Microsoft.SharePoint.WorkflowActions, Version=, Culture=neutral, PublicKeyToken=71e9bce111e9429c" Ap
25、pliesTo="all" CreatesTask="true" Category="任務(wù)操作"> <RuleDesigner Sentence="從 %2 處收集 %1 (輸出到 %3)"> <FieldBind Field="Title,ContentTypeId" Des
26、ignerType="Survey" Text="數(shù)據(jù)" Id="1"/> <FieldBind Field="AssignedTo" DesignerType="SinglePerson" Text="此用戶" Id="2"/> <FieldBind Field="TaskId" DesignerType
27、="ParameterNames" Text="collect" Id="3"/> </RuleDesigner> <Parameters> <Parameter Name="_Context" Type="Microsoft.SharePoint.WorkflowActions.WorkflowContext,
28、 Microsoft.SharePoint.WorkflowActions" Direction="In" /> <Parameter Name="ContentTypeId" Type="System.String, mscorlib" Direction="In" /> <Parameter Name="
29、;AssignedTo" Type="System.String, mscorlib" Direction="In" /> <Parameter Name="Title" Type="System.String, mscorlib" Direction="In" /> <Parameter Nam
30、e="TaskId" Type="System.Int32, mscorlib" Direction="Out" /> </Parameters> </Action>以下是對配置文件中主要元素的說明。l ClassName和Assembly分別是動作類的全名和所在的程序集。l
31、160; AppliesTo指定動作是應(yīng)用到文檔庫還是列表,允許的值為list和all。l CreatesTask指定是否需要創(chuàng)建任務(wù)項。l Parameters節(jié)點中聲明了WF活動類需要跟上下文數(shù)據(jù)進行綁定或進行設(shè)置的屬性。在Parameter節(jié)點中,Name為WF活動類的屬性名,Type為屬性的類型,Direction聲明屬性是需要賦值的還是對外提供值,有3個可選值:In、Ou
32、t、Optional,指定In時必須給屬性賦值,指定Out時必須將屬性跟某個工作流變量進行綁定,Optional表示可選項,指定Optional時可以不對屬性進行操作。以下為3個特殊的Parameter。l _Context:當Action類需要訪問工作流數(shù)據(jù)時,必須聲明此屬性,類型是Microsoft.SharePoint.WorkflowActions.WorkflowContext。l _ListI
33、d:當需要訪問工作流關(guān)聯(lián)的列表時,需要指定此屬性。l _ItemID:當需要訪問工作流關(guān)聯(lián)的列表項時,需要指定此屬性。以上的3個屬性定義在Action類中,然后聲明在配置文件中,工作流運行時引擎會自動為其賦值。RuleDesigner節(jié)點聲明了對Action類屬性的設(shè)計規(guī)則。Sentence指定了設(shè)計時顯示的提示信息,其中的占位符號與RuleDesigner中的FieldBind的ID屬性配置,F(xiàn)ieldBind定義了對某個屬性的設(shè)計規(guī)則。Field為屬性的名字,Text為占位符處顯示的文本,ID跟
34、占位符前的數(shù)字對應(yīng)。DesignerType指定了對屬性應(yīng)用的設(shè)計器,系統(tǒng)支持如下的設(shè)計器。l Survey:生成收集數(shù)據(jù)的表單,表單對應(yīng)的容類型ID和標題需要分別映射到兩個屬性中。l SinglePerson:單個用戶或用戶組。l Person:多個用戶或用戶組。l
35、0; ParameterNames:工作流變量。l StringBuilder:生成可以跟當前工作流數(shù)據(jù)混合的字符串。l Operator:選項,用Option指定可選值。如:<FieldBind Field="TaskMode" DesignerType="Operator" Text="此模式&qu
36、ot; Id="3"> <Option Name="RequireOne" Value="RequireOne"/> <Option Name="RequireAll" Value="RequireAll"/> </FieldBind&
37、gt;l fieldNames:列表欄,采用此設(shè)計器將工作流關(guān)聯(lián)列表的某個欄和Action類的屬性綁定。l E-mail:設(shè)計器,設(shè)計的標題、容和收件人等,需要將收件人、抄送人、標題、容4個屬性分別綁定,如:<RuleDesigner Sentence="電子 %1"> <FieldB
38、ind Field="To,CC,Subject,Body" Text="此電子" DesignerType="Email" Id="1"/> </RuleDesigner> <Parameters> <P
39、arameter Name="Body" Type="System.String, mscorlib" Direction="Optional" /> <Parameter Name="To" Type="System.Collections.ArrayList, mscorlib" Direction="In" />
40、; <Parameter Name="CC" Type="System.Collections.ArrayList, mscorlib" Direction="Optional" /> <Parameter Name="Subject" Type="System.String, mscorlib" Direction="In" /> &
41、#160; </Parameters>7.3.2 動作擴展示例自定義E-mail活動系統(tǒng)默認的發(fā)送動作只能發(fā)送簡單的文本,很多時候,用戶希望審批任務(wù)的提醒中帶一個,可以直接到任務(wù)操作頁面。本節(jié)我開發(fā)一個可以發(fā)送任務(wù)的E-mail活動,這個E-mail活動具有系統(tǒng)發(fā)送動作的所有功能,可以動態(tài)綁定收件人、指定主題等,如圖7-36所示。唯一跟系統(tǒng)默認功能的區(qū)別就是:在發(fā)送出去的容中帶有任務(wù)操作。圖7-36 發(fā)送動作Step1 新建一個工作流活動項目,如圖7-37所示。將默認產(chǎn)生的Activity1類改名為“MailW
42、ithTaskLinkActivity”。圖7-37 新建工作流活動項目Step2 添加Microsoft.SharePoint.dll和microsoft.sharepoint.WorkflowActions.dll兩個程序集的引用。這兩個程序集位于服務(wù)器上的C:Program FilesCommon FilesMicrosoft Sharedweb server extensions12ISAPI目錄中。Step3 切換到代碼視圖,將MailWithTaskLinkActivity的基類由SequenceActivity改為Activity。復(fù)核活動可以
43、從SequenceActivity類繼承,但是MailWithTaskLinkActivity并不需要使用子活動(也就是不是一個復(fù)核活動),所有應(yīng)該從基本的Activity類繼承。Step4 添加對SharePoint API主要名稱空間的引用,代碼如下所示。using Microsoft.SharePoint;using Microsoft.SharePoint.Utilities;using Microsoft.SharePoint.Workflow;using Microsoft.SharePoint.WorkflowActions;namespace CodeArt.Sha
44、rePoint.WorkflowActions public class MailWithTaskLinkActivity : Activity public MailWithTaskLinkActivity()
45、; Step5 希望MailWithTaskLinkActivity部署成SharePoint Designer的動作之后,依然具有系統(tǒng)自帶的發(fā)送活動的功能可以動態(tài)綁定到收件人、指定主題等,所以需要給MailWithTaskLinkActivity添加相應(yīng)的屬性。添加一個_Context屬性,代碼如下所示。public static DependencyProperty _ContextProperty =
46、60; DependencyProperty.Register("_Context", typeof(WorkflowContext), typeof(SendMail); Browsable(true), ValidationOption(ValidationOption.Required), DesignerSerializationVisibility(DesignerSerializationVisibility.Visible), Descrip
47、tion("Context") public WorkflowContext _Context get
48、60; return (WorkflowContext)base.GetValue(_ContextProperty); set &
49、#160; base.SetValue(_ContextProperty, value); _Context屬性用來綁定到工作流的上下文,以便獲取工作流
50、運行環(huán)境的集、等信息。這個屬性的名稱是不能變的,后面的步驟會講述如何在配置文件中配置這個屬性。添加一個_ListId屬性,代碼如下所示。public static DependencyProperty _ListIdProperty = DependencyProperty.Register("_ListId", typeof(string), typeof(MailWithTaskLinkActivity); ValidationOption(ValidationOption.Requir
51、ed) public string _ListId get
52、; return (string)base.GetValue(_ListIdProperty); set
53、 base.SetValue(_ListIdProperty, value); _ListId屬性用來綁定到工作流的關(guān)聯(lián)的列表ID。添加一個_ListItem屬性,代碼如下所示。public static Dependency
54、Property _ListItemProperty = DependencyProperty.Register("_ListItem", typeof(int), typeof(MailWithTaskLinkActivity); ValidationOption(ValidationOption.Required) public int _ListItem &
55、#160; get return (int)base.GetValue(_ListItemProperty);
56、60; set base.SetValue(
57、_ListItemProperty, value); _ListItem屬性用來綁定到工作流的關(guān)聯(lián)的列表項ID。添加一個To屬性,代碼如下所示。public static DependencyProperty ToProperty = DependencyProperty.Register("To", typeof(ArrayList), typeof(Mai
58、lWithTaskLinkActivity); ValidationOption(ValidationOption.Required) public ArrayList To get
59、0; return (ArrayList)base.GetValue(ToProperty);
60、; set base.SetValue(ToProperty, value); &
61、#160; To屬性是一個ArrayList類型的集合,在SharePoint Designer進行設(shè)計的時候可以直接綁定到用戶。同樣,添加的抄送(CC)、暗送(BCC)、主題(Subject)、容(Body)4個屬性代碼如下所示。public static DependencyProperty CCProperty = DependencyProperty.Register("CC", typeof(ArrayList), typeof(MailWithTaskLinkActivity);
62、 /抄送 ValidationOption(ValidationOption.Optional) public ArrayList CC get
63、; return (ArrayList)base.GetValue(CCProperty);
64、 set base.SetValue(CCProperty, value);
65、160; public static DependencyProperty BCCProperty = DependencyProperty.Register("BCC", typeof(ArrayList), typeof(MailWithTaskLinkActivity); /暗送 V
66、alidationOption(ValidationOption.Optional) public ArrayList BCC get
67、60; return (ArrayList)base.GetValue(BCCProperty); set
68、 base.SetValue(BCCProperty, value);
69、0; public static DependencyProperty SubjectProperty = DependencyProperty.Register("Subject", typeof(String), typeof(MailWithTaskLinkActivity); /主題 ValidationOption(ValidationOption.Required)
70、0; public string Subject get
71、 return (string)base.GetValue(SubjectProperty); set &
72、#160; base.SetValue(SubjectProperty, value); public static DependencyProperty BodyProperty = D
73、ependencyProperty.Register("Body", typeof(String), typeof(MailWithTaskLinkActivity); /容 ValidationOption(ValidationOption.Optional) public string Body
74、160; get return (string)base.GetValue(BodyProperty);
75、 set base.
76、SetValue(BodyProperty, value); Step6 上一步把MailWithTaskLinkActivity需要的所有屬性都添加好了,下面來添加發(fā)送的處理代碼。重載Execute方法,代碼如下所示。 protected override ActivityExecu
77、tionStatus Execute(ActivityExecutionContext provider) /獲取到工作流服務(wù) ISharePointService service = (ISharePointService)provider.Get
78、Service(typeof(ISharePointService); if (service = null) throw new InvalidOper
79、ationException(); try &
80、#160; /獲取到列表 SPList list = _Context.Web.Listsnew Guid(_ListId); /獲取到列表項 &
81、#160; SPListItem item = list.GetItemById(Convert.ToInt32(_ListItem); /計算任務(wù)查看URL
82、0;string url = this._Context.Web.Url + "_layouts/codeArt/SPTaskRedirect.aspx?ListId=" + item.ParentList.ID + "&ItemId=" + item.ID;
83、160; /發(fā)送參數(shù) StringDictionary headers = new StringDictionary();
84、0; headers"to" = this.ParseSendTo(this.To); headers"subject" = this.Subject;
85、 if (null != this.CC) headers"cc" = this.ParseSen
86、dTo(this.CC); if (null != this.BCC)
87、 headers"bcc" = this.ParseSendTo(this.BCC);
88、; string body = null; if (null != this.Body)
89、60; Activity parent = provider.Activity; while (parent.Parent != null)
90、160; parent = parent.Parent; &
91、#160; /處理容中的屬性綁定,Helper是系統(tǒng)自帶的類
92、; body = Helper.ProcessStringField(this.Body, parent, this._Context); body += "<br/><a
93、href='" + url + "'><b>點擊此處查看或處理任務(wù)</b></a>" /發(fā)送 service.SendEmail(base.Workfl
94、owInstanceId, false, headers, body); return ActivityExecutionStatus.Closed; c
95、atch (Exception ex) /將異常信息記錄到日志列表 service.LogToHistor
96、yList(base.WorkflowInstanceId, SPWorkflowHistoryEventType.WorkflowError, _Context.Web.CurrentUser.ID, TimeSpan.MinValue, "MailWithTaskLinkActivity Error", ex.Message + ex.StackTrace, ""); return ActivityExecutionStatus.Faulting; 發(fā)送活動一般放置在從用戶處收集數(shù)據(jù)活動之前
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 出租車運營承包合同范本
- 住宅櫥柜訂購安裝合同范例
- 副業(yè)兼職合同范例
- 安裝的安全合同范本
- 醫(yī)院院長聘用合同范本
- 墻紙窗簾銷售合同范本
- 買賣購房定金合同范本
- 專業(yè)版租房合同范例
- 亳州預(yù)售購房合同范本
- 公布合同范例函件
- 2 找春天 公開課一等獎創(chuàng)新教學(xué)設(shè)計
- 2025年江蘇護理職業(yè)學(xué)院高職單招語文2018-2024歷年參考題庫頻考點含答案解析
- 2025年江蘇南京水務(wù)集團有限公司招聘筆試參考題庫含答案解析
- 建筑工程施工安全管理課件
- 2025年春新外研版(三起)英語三年級下冊課件 Unit2第1課時Startup
- 2025年上半年畢節(jié)市威寧自治縣事業(yè)單位招考考試(443名)易考易錯模擬試題(共500題)試卷后附參考答案
- 處方點評知識培訓(xùn)
- 2025年新合同管理工作計劃
- 2024年02月北京2024年中信銀行北京分行社會招考(0223)筆試歷年參考題庫附帶答案詳解
- 2024年高考語文備考之文言文閱讀簡答題答題指導(dǎo)
- 《中國移動公司簡介》課件
評論
0/150
提交評論