逐步解說:建立自訂網站工作流程活動
本逐步解說示範如何使用 Visual Studio 建立網站層級工作流程的自訂活動。 (網站層級工作流程適用於整個網站,而不只是網站上的清單。)自訂活動會建立備份公告清單,然後將公告清單的內容複寫到其中。
本逐步解說將示範下列工作:
建立網站層級工作流程。
建立自訂工作流程活動。
建立和刪除 SharePoint 清單。
將項目從一個清單複製到另一個清單。
在快速啟動列上顯示清單。
注意
在下列指示的某些 Visual Studio 使用者介面項目中,您的電腦可能會顯示不同的名稱或位置: 您所擁有的 Visual Studio 版本以及使用的設定會決定這些項目。 如需詳細資訊,請參閱將 IDE 個人化。
必要條件
您需要下列元件才能完成這個逐步解說:
支援的 Microsoft Windows 和 SharePoint 版本。
Visual Studio。
建立網站工作流程自訂活動專案
首先,建立專案來保存及測試自訂工作流程活動。
建立網站工作流程自訂活動專案
在功能表列上,選擇 [檔案] > [新增] > [專案],以顯示 [新增專案] 對話方塊。
展開 [Visual C#] 或 [Visual Basic] 底下的 [SharePoint] 節點,然後選擇 [2010] 節點。
在 [範本] 窗格中,選擇 [SharePoint 2010 專案] 範本。
在 [名稱] 文字方塊中,輸入 AnnouncementBackup,然後選擇 [確定] 按鈕。
[SharePoint 自訂精靈] 隨即出現。
在 [指定偵錯的網站和安全性層級] 上,選擇 [部署為伺服器陣列解決方案] 選項按鈕,然後選擇 [完成] 按鈕,以接受信任層級和預設網站。
此步驟會將解決方案的信任層級設定為伺服器陣列解決方案,這是工作流程專案唯一可用的選項。
在 [方案總管] 中選擇專案節點,然後在功能表列上選擇 [專案] > [新增項目]。
在 [Visual C#] 或 [Visual Basic] 底下展開 [SharePoint] 節點,然後選擇 [2010] 節點。
在 [範本] 窗格中,選擇 [循序工作流程 (僅限伺服器陣列解決方案)] 範本,然後選擇 [新增] 按鈕。
[SharePoint 自訂精靈] 隨即出現。
在 [指定工作流程名稱進行偵錯] 頁面上,接受預設名稱 (AnnouncementBackup - Workflow1)。 將工作流程範本類型變更為 [網站工作流程],然後選擇 [下一步] 按鈕。
選擇 [完成] 按鈕,以接受其餘預設設定。
新增自訂工作流程活動類別
接下來,將類別新增至專案,以包含自訂工作流程活動的程式碼。
新增自訂工作流程活動類別
在功能表列上,選擇 [專案] > [新增項目] 以顯示 [新增項目] 對話方塊。
在 [已安裝的範本] 樹狀檢視中,選擇 [程式碼] 節點,然後在專案項目範本清單中選擇 [類別] 範本。 使用預設名稱 Class1。 選擇 [ 加入 ] 按鈕。
使用下列項目取代 Class1 中的所有程式碼:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.SharePoint; namespace AnnouncementBackup { // This custom activity will back up all of the announcements in // the Announcements list on the SharePoint site. public class Class1 : System.Workflow.ComponentModel.Activity { public Class1() { } // Triggers when the activity is executed. protected override System.Workflow.ComponentModel.ActivityExecutionStatus Execute(System.Workflow.ComponentModel.ActivityExecutionContext executionContext) { try { // Get a reference to the SharePoint site. SPSite site = new SPSite("http://" + System.Environment.MachineName); SPWeb web = site.OpenWeb("/"); // Reference the original Announcements list. SPList aList = web.GetList("/Lists/Announcements"); // If the Announcements Backup list already exists, delete it. try { SPList bList = web.GetList("/Lists/Announcements Backup"); bList.Delete(); } catch { } // Create a new backup Announcements list and reference it. Guid newAnnID = web.Lists.Add("Announcements Backup", "A backup Announcements list.", SPListTemplateType.Announcements); SPList bakList = web.Lists[newAnnID]; // Copy announcements from original to backup Announcements list. foreach (SPListItem item in aList.Items) { SPListItem newAnnItem = bakList.Items.Add(); foreach (SPField field in aList.Fields) { if (!field.ReadOnlyField) newAnnItem[field.Id] = item[field.Id]; } newAnnItem.Update(); } // Put the Backup Announcements list on the QuickLaunch bar. bakList.OnQuickLaunch = true; bakList.Update(); } catch (Exception errx) { System.Diagnostics.Debug.WriteLine("Error: " + errx.ToString()); } return base.Execute(executionContext); } } }
儲存專案,然後從功能表列上選擇 [建置] > [建置解決方案]。
Class1 會在 [AnnouncementBackup 元件] 索引標籤上的 [工具箱] 中顯示為自訂動作。
將自訂活動新增至網站工作流程
接下來,將活動新增至工作流程,以包含自訂程式碼。
將自訂活動新增至網站工作流程
在設計檢視中的工作流程設計工具中開啟 Workflow1。
從 [工具箱] 拖曳 Class1,使其出現在
onWorkflowActivated1
活動底下,或開啟 Class1 的捷徑功能表,選擇 [複製],開啟onWorkflowActivated1
活動底下行的捷徑功能表,然後選擇 [貼上]。儲存專案。
測試網站工作流程自訂活動
接下來,執行專案並啟動網站工作流程。 自訂活動會建立備份公告清單,然後將目前公告清單的內容複製到其中。 程式碼也會在建立備份清單之前,檢查備份清單是否存在。 如果備份清單已經存在,則會將其刪除。 程式碼也會在 SharePoint 網站的快速啟動列上新增新清單的連結。
測試網站工作流程自訂活動
選擇 F5 鍵以執行專案,並將其部署至 SharePoint。
在快速啟動列上,選擇 [清單] 連結,以顯示 SharePoint 網站中所有可用的清單。 請注意,公告只有一個名為公告的清單。
在 SharePoint 網頁頂端,選擇 [網站工作流程] 連結。
在 [啟動新的工作流程] 區段下,選擇 [AnnouncementBackup - Workflow1] 連結。 這會啟動網站工作流程,並在自訂動作中執行程式碼。
在快速啟動列上,選擇 [公告備份] 連結。 請注意,公告清單中所包含的所有公告都已複製到這個新清單。