SharePoint 2010 工作流解决方案:将 SharePoint Designer 可重用工作流导入 Visual Studio...
在 SharePoint Designer 中創建的工作流(即,聲明性工作流)由 XML 語句組成,而非由代碼組成。 SharePoint Designer 2010 引入了可重用工作流,它們是可由 SharePoint 站點中的不同列表使用的可移植的聲明性工作流。
在 Visual Studio 2010 中創建的工作流(如順序工作流和狀態機工作流)稱為“代碼工作流”。 代碼工作流由 XML 文件和代碼模塊組成,用戶可以在這些文件和模塊中自定義工作流的行為。
通過 Visual Studio 2010,您可以導入在 SharePoint Designer 2010 中創建的可重用工作流,并將其轉換為代碼工作流,以便在 SharePoint 站點中使用。
創建目標 SharePoint 子站點
首先創建兩個新的 SharePoint 子站點:一個用于承載來自 SharePoint Designer 的可重用工作流,另一個用于承載轉換后的工作流。?
? 2.?? 在“打開站點”對話框中,瀏覽至要在其中創建工作流的 SharePoint 站點,或者使用默認值 http://系統名稱/,然后單擊“打開”。
3.在“子站點”部分中,單擊“新建”。
在“指定您的網站位置”框中,用 SPD1 替換 URL 中的“子網站”一詞,然后單擊“確定”。
這將在 SharePoint Designer 中打開新的子站點。 關閉此 SharePoint Designer 實例并返回到第一個實例(首要站點)。
重復上面步驟以創建第二個子站點,這次將用 SPD2 替換 URL 中的“子網站”一詞。
創建 SharePoint Designer 可重用工作流
由于 SharePoint 不包括可用于此示例的任何可重用工作流,因此您將創建一個可重用工作流。在此簡單工作流中,當某個用戶在“任務”列表中輸入某個具有特定標題的新任務時,將向該用戶分配此任務。
?
???? 3.在“名稱”框中,鍵入“SPD 任務工作流”。 在“內容類型”框中,單擊“任務”,再單擊“確定”。該工作流將在 SharePoint Designer 工作流設計器中打開。
??? 4.確保選中步驟 1 并單擊功能區上的“條件”按鈕,然后從條件列表中選擇“如果當前項目域等于值”。
這將添加名為“如果域等于值”的新條件
5.?????? 單擊“如果字段等于值”條件中的“域”鏈接。 單擊“標題”
?? 單擊“如果字段等于值”條件中的“值”鏈接。 在框中輸入“新任務”。
條件語句現在顯示為“如果當前項:標題等于新任務”。
6.單擊條件語句下面的行,再單擊功能區上的“操作”按鈕,然后從操作列表中選擇“設置當前項目中的域”。
7.單擊“將域設置為值”操作中的“域”鏈接,然后選擇“分配對象”。
8.單擊“將域設置為值”操作中的“值”鏈接,從現有用戶和組的列表中選擇“創建當前項目的用戶”,單擊“添加”按鈕,再單擊“確定”。
操作語句現在顯示為“將分配對象設置為當前項目:創建者”。
?保存并部署可重用工作流
由于 Visual Studio 只能導入 .wsp 文件,因此必須先將可重用工作流另存為 .wsp 文件,并將其部署到 SharePoint,然后能將其導入 Visual Studio 中。
1.?????? 單擊 SharePoint Designer 頂部的“保存”按鈕保存您的進度,然后單擊“發布”按鈕將工作流部署到 SharePoint 站點“SPD1”。
2.在導航窗格中單擊“工作流”。
3.單擊“可重用工作流”下的“SPD 任務工作流”。
4.在功能區中,單擊“另存為模板”,以將工作流另存為 .wsp 文件。
?
5.在瀏覽器中,打開“SPD1”SharePoint 站點,查看 SharePoint 中的 .wsp 文件。
6.在快速啟動欄上單擊“庫”。
7.在“文檔庫”部分中單擊“網站資產”。
“SPD 任務工作流”文件將與其他站點資產一起列出。
8.在列表中單擊其名稱,這將顯示“文件下載”對話框。
9.在“文件下載”對話框中單擊“保存”按鈕,將 .wsp 文件保存到系統上。
?將 .wsp 文件導入到 Visual Studio 中
使用“導入可重用工作流”項目將 .wsp 文件導入到 Visual Studio 中。 此項目將工作流從一個可重用的聲明性工作流轉換為一個代碼工作流。 轉換工作流之后,您將使用代碼來修改其行為。
從 .wsp 文件導入工作流并進行修改
1.在 Visual Studio 中,通過指向“文件”菜單上的“新建”并單擊“新建項目”,顯示“新建項目”對話框。
2.展開“Visual C#”下的“SharePoint”節點,然后單擊“2010”。
3.在“模板”窗格中單擊“導入可重用工作流”,將默認的名稱修改為“YunCode.Workflow.WorkflowImport”,再單擊“確定”。
?這將顯示“SharePoint 自定義向導”。
4.在“指定用于調試的站點和安全級別”頁上,為您先前創建的第二個 SharePoint 子站點輸入 URL:http://系統名稱/SPD2。
5.在“此 SharePoint 解決方案的信任級別是什么?”部分中,保留選擇項為“部署為場解決方案”。
6.在“指定新項目源”頁上,瀏覽到系統上您先前保存 .wsp 文件的位置,然后單擊“下一步”。
7.這將顯示可導入的可重用工作流的列表。
8.在“選擇要導入的項”框中,選擇工作流“SPD 任務工作流”,然后單擊“完成”。
?完成導入操作后,將創建一個名為“YunCode.Workflow.WorkflowImport”的項目,其中包含一個名為“SPD_任務工作流FT”的工作流。 此文件夾中包含工作流的定義文件 Elements.xml 和工作流設計器文件 (.xoml)。 該設計器中包含兩個文件:規則文件 (.rules) 和代碼隱藏文件
9.由于“導入可重用工作流”不會導入已導入的工作流的關聯屬性值,因此您必須輸入這些值。 具體方法為:
????? a.在“解決方案資源管理器”中單擊“SPD_Workflow_TestFT”工作流項目項。
????? b.單擊“target list (目標列表)”屬性旁邊的省略號按鈕或具有省略號按鈕的任何其他屬性。
10.右擊 .xoml 文件并選擇“查看設計器”,以便在工作流設計器中查看導入的工作流。
?11.在“工具箱”的“Windows Workflow v3.0”部分中,將“代碼”活動拖至設計器并將其放置在“SequenceActivity1”活動之下。
這將在工作流設計器中添加一個名為“CodeActivity1”的活動。在此活動中,您將添加一個代碼操作,當用戶啟動工作流時,該操作會在“通知”列表中創建一個公告。
12.雙擊“CodeActivity1”以生成事件處理程序并查看代碼。
13.?在現有 using 或 Imports 語句的下方添加以下內容:
using Microsoft.SharePoint;
using System;
14.用以下內容替換 codeActivity1_ExecuteCode:
private void codeActivity1_ExecuteCode(object sender, System.EventArgs e)????????
{ ???????????
????? ?try? { ???????????????
?????????????? ?SPSite site = new SPSite("http://win-3efv2ngqv0h"); ???????????????
?????????????? ?SPWeb web = site.OpenWeb("SPD2"); ???????????????
?????????????? ?SPList announcementsList = web.Lists["通知"];
?
??????????????? SPListItem oListItem = announcementsList.Items.Add(); ???????????????
?????????????? oListItem["標題"] = "在" + DateTime.Now.ToString() +"分配了一個任務"; ???????????????
???????????????oListItem.Update(); ???????????
???????????? ?}?
???????????? catch (Exception err)
??????????? { Console.WriteLine("Error: " + err.ToString()); }????? ???????
}
?
部署項目并關聯工作流
?
接下來,運行 YunCode.WorkFlow.WorkflowImport以將其部署到 SharePoint 站點,然后將工作流與“任務”列表關聯起來,以查看和測試經修改的轉換后工作流。
?
?
參考連接:http://blog.csdn.net/yun_liang1028/article/details/6307533
?
?
轉載于:https://www.cnblogs.com/kengu/p/3229900.html
總結
以上是生活随笔為你收集整理的SharePoint 2010 工作流解决方案:将 SharePoint Designer 可重用工作流导入 Visual Studio...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DP_字串匹配(HDU_1501)
- 下一篇: HTTP状态码一览表(HTTP Stat