1. 程式人生 > >SharePoint 2010工作流解決方案之將SharePoint Designer可重用工作流導

SharePoint 2010工作流解決方案之將SharePoint Designer可重用工作流導

在 SharePoint Designer 中建立的工作流(即,宣告性工作流)由 XML 語句組成,而非由程式碼組成。 SharePoint Designer 2010 引入了可重用工作流,它們是可由 SharePoint 站點中的不同列表使用的可移植的宣告性工作流。

在 Visual Studio 2010 中建立的工作流(如順序工作流和狀態機工作流)稱為“程式碼工作流”。 程式碼工作流由 XML 檔案和程式碼模組組成,使用者可以在這些檔案和模組中自定義工作流的行為。

通過 Visual Studio 2010,您可以匯入在 SharePoint Designer 2010 中建立的可重用工作流,並將其轉換為程式碼工作流,以便在 SharePoint 站點中使用。  

建立目標 SharePoint 子站點

首先建立兩個新的 SharePoint 子站點:一個用於承載來自 SharePoint Designer 的可重用工作流,另一個用於承載轉換後的工作流。

1.在 SharePoint Designer 2010 中,單擊“檔案”選單上的“開啟站點”。

537x214

2.在“開啟站點”對話方塊中,瀏覽至要在其中建立工作流的 SharePoint 站點,或者使用預設值 http://系統名稱/,然後單擊“開啟”。

5.在“指定您的網站位置”框中,用 SPD1 替換 URL 中的“子網站”一詞,然後單擊“確定”。

這將在 SharePoint Designer 中開啟新的子站點。 關閉此 SharePoint Designer 例項並返回到第一個例項(首要站點)。

6.重複步驟 3 至步驟 5 以建立第二個子站點,這次將用 SPD2 替換 URL 中的“子網站”一詞。

建立 SharePoint Designer 可重用工作流

由於 SharePoint 不包括可用於此示例的任何可重用工作流,因此您將建立一個可重用工作流。 在此簡單工作流中,當某個使用者在“任務”列表中輸入某個具有特定標題的新任務時,將向該使用者分配此任務。

1.在“子站點”部分中單擊“SPD1”站點以對其進行修改。

2.單擊功能區上的“可重用工作流”。

471x99

將出現“建立可重用工作流”嚮導。

3.在“名稱”框中,鍵入“SPD 任務工作流”。 在“內容型別”框中,單擊“任務”,再單擊“確定”。

該工作流將在 SharePoint Designer 工作流設計器中開啟。

538x365

7.單擊條件語句下面的行,再單擊功能區上的“操作”按鈕,然後從操作列表中選擇“設定當前專案中的域”。

588x152

8.單擊“將域設定為值”操作中的“域”連結,然後選擇“分配物件”。

9.單擊“將域設定為值”操作中的“值”連結,從現有使用者和組的列表中選擇“建立當前專案的使用者”,單擊“新增”按鈕,再單擊“確定”。

480x328

操作語句現在顯示為“將分配物件設定為當前專案:建立者”。

590x153

儲存並部署可重用工作流

由於 Visual Studio 只能匯入 .wsp 檔案,因此必須先將可重用工作流另存為 .wsp 檔案,並將其部署到 SharePoint,然後

能將其匯入 Visual Studio 中。

1.單擊 SharePoint Designer 頂部的“儲存”按鈕儲存您的進度,然後單擊“釋出”按鈕將工作流部署到 SharePoint 站點“SPD1”。

2.在導航窗格中單擊“工作流”。

3.單擊“可重用工作流”下的“SPD 任務工作流”。

4.在功能區中,單擊“另存為模板”,以將工作流另存為 .wsp 檔案。

707x102

5.在瀏覽器中,開啟“SPD1”SharePoint 站點,檢視 SharePoint 中的 .wsp 檔案。

6.在快速啟動欄上單擊“庫”。

7.在“文件庫”部分中單擊“網站資產”。

877x177

“SPD 任務工作流”檔案將與其他站點資產一起列出。

552x90

8.在列表中單擊其名稱,這將顯示“檔案下載”對話方塊。

9.在“檔案下載”對話方塊中單擊“儲存”按鈕,將 .wsp 檔案儲存到系統上。

4.確保選中步驟 1 並單擊功能區上的“條件”按鈕,然後從條件列表中選擇“如果當前專案域等於值”。

條件語句現在顯示為“如果當前項:標題等於新任務”。

590x147

6.單擊“如果欄位等於值”條件中的“值”連結。 在框中輸入“新任務”。

589x148

5.單擊“如果欄位等於值”條件中的“域”連結。 單擊“標題”

589x147

593x369

這將新增名為“如果域等於值”的新條件。

4.在“新建”對話方塊中,選擇左窗格中的“SharePoint 模板”,再選擇右窗格中的“工作組站點”。

614x414

3.在“子站點”部分中,單擊“新建”。

372x106

將 .wsp 檔案匯入到 Visual Studio 中

使用“匯入可重用工作流”專案將 .wsp 檔案匯入到 Visual Studio 中。 此專案將工作流從一個可重用的宣告性工作流轉換為一個程式碼工作流。 轉換工作流之後,您將使用程式碼來修改其行為。

從 .wsp 檔案匯入工作流並進行修改

1.在 Visual Studio 中,通過指向“檔案”選單上的“新建”並單擊“新建專案”,顯示“新建專案”對話方塊。

2.展開“Visual C#”下的“SharePoint”節點,然後單擊“2010”。

3.在“模板”窗格中單擊“匯入可重用工作流”,將預設的名稱修改為“YunCode.Workflow.WorkflowImport”,再單擊“確定”。

954x527

這將顯示“SharePoint 自定義嚮導”。

4.在“指定用於除錯的站點和安全級別”頁上,為您先前建立的第二個 SharePoint 子站點輸入 URL:http://系統名稱/SPD2。

5.在“此 SharePoint 解決方案的信任級別是什麼?”部分中,保留選擇項為“部署為場解決方案”。

6.在“指定新專案源”頁上,瀏覽到系統上您先前儲存 .wsp 檔案的位置,然後單擊“下一步”。

7.這將顯示可匯入的可重用工作流的列表。

8.在“選擇要匯入的項”框中,選擇工作流“SPD 任務工作流”,然後單擊“完成”。

完成匯入操作後,將建立一個名為“YunCode.Workflow.WorkflowImport”的專案,其中包含一個名為“SPD_任務工作流FT”的工作流。 此資料夾中包含工作流的定義檔案 Elements.xml 和工作流設計器檔案 (.xoml)。 該設計器中包含兩個檔案:規則檔案 (.rules) 和程式碼隱藏檔案

400x104

343x136

9.將工作流專案項“YunCode.Workflow.WorkflowImport”設定為啟動項。

這將在除錯專案時立即顯示列表。

10.由於“匯入可重用工作流”不會匯入已匯入的工作流的關聯屬性值,因此您必須輸入這些值。 具體方法為:

a.在“解決方案資源管理器”中單擊“SPD_Workflow_TestFT”工作流專案項。

b.單擊“target list (目標列表)”屬性旁邊的省略號按鈕或具有省略號按鈕的任何其他屬性。

809x111

299x182

c.在“SharePoint 自定義嚮導”中填入缺少的值。 完成上述操作後,單擊“完成”。

11.右擊 .xoml 檔案並選擇“檢視設計器”,以便在工作流設計器中檢視匯入的工作流。

12.在“工具箱”的“Windows Workflow v3.0”部分中,將“程式碼”活動拖至設計器並將其放置在“SequenceActivity1”活動之下。

這將在工作流設計器中新增一個名為“CodeActivity1”的活動。 在此活動中,您將新增一個程式碼操作,當用戶啟動工作流時,該操作會在“通知”列表中建立一個公告。

13.雙擊“CodeActivity1”以生成事件處理程式並檢視程式碼。

14. 在現有using 或 Imports 語句的下方新增以下內容:

using Microsoft.SharePoint;

using System;

15.用以下內容替換 codeActivity1_ExecuteCode:

private void codeActivity1_ExecuteCode(object sender, System.EventArgs e)<br />
       {<br />
           try<br />
           {<br />
               SPSite site = new SPSite("http://win-3efv2ngqv0h");<br />
               SPWeb web = site.OpenWeb("SPD2");<br />
               SPList announcementsList = web.Lists["通知"];<br />
<br /><br />                SPListItem oListItem = announcementsList.Items.Add();<br />
               oListItem["標題"] = "在" + DateTime.Now.ToString() +"分配了一個任務";<br />
               oListItem.Update();<br />
           }<br />
           catch (Exception err)<br />
           {<br />
               Console.WriteLine("Error: " + err.ToString());<br />
           }<br />
       }

部署專案並關聯工作流

接下來,執行 YunCode.WorkFlow.WorkflowImport以將其部署到 SharePoint 站點,然後將工作流與“任務”列表關聯起來,以檢視和測試經修改的轉換後工作流。

1.在 Visual Studio 中,按 F5 以執行和部署轉換的工作流專案。

2.單擊快速啟動欄上的“任務”以顯示任務列表。

3.在“列表工具”功能區上單擊“專案”,然後單擊“新建專案”按鈕。

4.在“任務 - 新建專案”對話方塊的“標題”框中輸入“新任務”,然後單擊“儲存”。

5.此時工作流可以自動啟動,如果沒有自動啟動,可按下面步驟手動啟動。

6.單擊“新任務”旁邊的下拉箭頭,並選擇“工作流”。

7.在“開始新工作流”部分中,單擊針對“SPD任務工作流”的連結,再單擊“啟動”以啟動工作流。