共用方式為


逐步解說:將 SharePoint Designer 可重複使用的工作流程匯入 Visual Studio

本逐步解說示範如何將 SharePoint Designer 2010 中建立的可重複使用的工作流程匯入 Visual Studio SharePoint 工作流程專案。

SharePoint Designer 中建立的工作流程或「宣告式工作流程」(Declarative Workflow) 是由 XML 陳述式組成,而非程式碼所組成。 SharePoint Designer 2010 新增了「可重複使用的工作流程」(Reusable Workflow),這是可移植的宣告式工作流程,可供 SharePoint 網站中的不同清單使用。

Visual Studio 2010 中建立的工作流程 (例如循序和狀態機器工作流程) 稱為「程式碼工作流程」(Code Workflow)。 程式碼工作流程由 XML 檔案和程式碼模組所組成,使用者可以在其中自訂工作流程的行為。

Visual Studio 2010 可讓您匯入 SharePoint Designer 2010 中建立的可重複使用的工作流程,並將它們轉換成程式碼工作流程,以便在 SharePoint 網站中使用。

本逐步解說將示範下列工作:

  • 在 SharePoint Designer 中建立可重複使用的簡單工作流程。

  • 將 SharePoint Designer 可重複使用的工作流程匯出至 .wsp 檔案和 SharePoint 中。

  • 使用「匯入可重複使用的工作流程」專案,將 .wsp 檔案匯入 Visual Studio。

  • 加入程式碼來變更工作流程。

  • 在 SharePoint 網站中使用匯入的工作流程。

注意事項注意事項

您的電腦可能會在下列說明中,以不同名稱或位置顯示某些 Visual Studio 使用者介面項目。 您所擁有的 Visual Studio 版本以及使用的設定會決定這些項目。 如需詳細資訊,請參閱 Visual Studio 設定

必要條件

您需要下列元件才能完成此逐步解說:

  • 支援的 Microsoft Windows 和 SharePoint 版本。 如需詳細資訊,請參閱開發 SharePoint 方案的要求

  • Visual Studio 2010。

  • Microsoft Office SharePoint Designer 2010。

建立目標 SharePoint 子網站

首先,您會建立兩個新的 SharePoint 子網站,一個用來裝載 SharePoint Designer 建立的可重複使用的工作流程,另一個用來裝載轉換後的工作流程。

若要建立 SharePoint 子網站

  1. 在 SharePoint Designer 2010 中,按一下 [檔案] 功能表上的 [開啟網站]。

  2. 在 [開啟網站] 對話方塊中,瀏覽至您要建立工作流程的 SharePoint 網站,或使用預設值 http://system name/,然後按一下 [開啟]。

    首頁隨即出現。

  3. 在 [子網站] 區段中按一下 [新增]。

  4. 在 [新增] 對話方塊中,選取左窗格中的 [SharePoint 範本],然後選取右窗格中的 [Team 網站]。

  5. 在 [指定網站位置] 方塊中,將 URL 中的 subsite 一字取代成 SPD1,然後按一下 [確定]。

    這會在 SharePoint Designer 中開啟新的子網站。 關閉這個 SharePoint Designer 執行個體,然後回到第一個執行個體 (最上層網站)。

  6. 重複步驟 3 - 5 來建立第二個子網站,這次將 URL 中的 subsite 一字取代成 SPD2。

建立 SharePoint Designer 可重複使用的工作流程

由於 SharePoint 並未隨附任何可重複使用的工作流程可供這個範例使用,因此您將建立一個可重複使用的工作流程。 在這個簡單的工作流程中,當使用者在 [工作] 清單中輸入具有特定標題的新工作時,工作就會指派給該使用者。

若要建立 SharePoint Designer 可重複使用的工作流程

  1. 按一下 [子網站] 區段中的 [SPD1] 網站來修改它。

  2. 按一下功能區上的 [可重複使用的工作流程]。

    [建立可重複使用的工作流程] 精靈隨即出現。

  3. 在 [名稱] 方塊中輸入「SPD 工作工作流程」。

  4. 在 [內容類型] 方塊中,按一下 [工作],然後按一下 [確定]。

    工作流程隨即在 SharePoint Designer 工作流程設計工具中開啟。

  5. 確定選取步驟 1,然後按一下功能區上的 [條件] 按鈕,再從條件清單中選取 [如果目前項目欄位等於值]。

    如此會加入一個名為 [如果欄位等於值] 的新條件。

  6. 按一下 [如果欄位等於值] 條件中的 [欄位] 連結。

  7. 在值清單中,選取 [標題]。

  8. 按一下 [如果欄位等於值] 條件中的 [] 連結。

  9. 在方塊中輸入新工作。

    條件陳述式現在會顯示 [如果目前項目: 標題等於新工作]。

  10. 按一下條件陳述式底下的一行,然後按一下功能區上的 [動作] 按鈕,再從動作清單中選取 [在目前項目中設定欄位]。

  11. 按一下 [將欄位設成值] 動作中的 [欄位] 連結,然後選取 [指派給]。

  12. 按一下 [將欄位設成值] 動作中的 [] 連結,從現有使用者和群組清單中選取 [建立項目的使用者],然後按一下 [加入] 按鈕,再按一下 [確定]。

    動作陳述式現在會顯示 [將指派給設成目前項目:CreatedBy]。

儲存和部署可重複使用的工作流程

由於 Visual Studio 只能匯入 .wsp 檔案,因此您必須先將可重複使用的工作流程另存為 .wsp 檔案,並將其部署至 SharePoint,然後才能將其匯入至 Visual Studio 中。

重要事項重要事項

如果您在執行下列程序時收到執行階段錯誤,表示必須在可存取 SharePoint 網站的系統上執行程序。

若要儲存和部署可重複使用的工作流程

  1. 按一下 SharePoint Designer 頂端的 [儲存] 按鈕來儲存進度,然後按一下 [發行] 按鈕,將工作流程部署至 [SPD1] SharePoint 網站。

  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#] 或 [Visual Basic] 底下的 [SharePoint] 節點,然後按一下 [2010]。

  3. 按一下 [範本] 窗格中的 [匯入可重複使用的工作流程],將專案名稱保留為 [WorkflowImportProject1],然後按一下 [確定]。

    [SharePoint 自訂精靈] 隨即出現。

  4. 在 [指定網站和安全性層級進行偵錯] 頁面上,輸入您在前面建立之第二個 SharePoint 子網站的 URL:http://system name/SPD2。

  5. 在 [此 SharePoint 方案的信任層級為何?] 區段中,保留 [部署為陣列方案] 的選擇。

    如需沙箱化方案與陣列方案的比較的詳細資訊,請參閱沙箱化方案考量

  6. 在 [指定新專案來源] 頁面中,瀏覽至您先前在系統上儲存 .wsp 檔案的位置,然後按 [下一步]。

    注意事項注意事項

    按一下此頁面上的 [完成],就會匯入 .wsp 檔案中所有可用的項目。

    如此會顯示可供匯入的可重複使用工作流程清單。

  7. 在 [選取要匯入的項目] 方塊中,選取工作流程 [SPD 工作工作流程],然後按一下 [完成]。

    完成匯入作業後,系統會建立名為 [WorkflowImportProject1] 的專案,其中包含名為 [SPD_Workflow_TestFT] 的工作流程。 此資料夾包含工作流程的定義檔 Elements.xml 以及工作流程設計工具檔案 (.xoml)。 設計工具包含兩個檔案:規則檔 (.rules) 和程式碼後置檔案 (.cs 或 .vb,視專案的程式語言而定)。

  8. 將工作流程專案項目 [WorkflowImportProject1] 設為啟動項目。

    如此會在偵錯專案時立即顯示清單。

  9. 因為 [匯入可重複使用的工作流程] 不會匯入已匯入工作流程的關聯屬性值,所以必須由您輸入。 如要完成這項工作:

    1. 在 [方案總管] 中,按一下 [SPD_Workflow_TestFT] 工作流程專案項目。

    2. 按一下 [目標清單] 屬性旁邊的省略符號 (ASP.NET Mobile 設計工具橢圓形) 按鈕,或有省略符號按鈕的任何其他屬性。

    3. 填寫 [SharePoint 自訂精靈] 內的遺失值。 完成後,按一下 [完成]。

  10. 以滑鼠右鍵按一下 .xoml 檔案,然後選取 [設計工具檢視],在工作流程設計工具中檢視匯入的工作流程。

  11. 在 [工具箱] 的 [Windows Workflow v3.0] 區段中,將 [程式碼] 活動拖曳至設計工具,然後放在 [SequenceActivity1] 活動底下。

    這會將名為 [CodeActivity1] 的活動加入至工作流程設計工具。 在此活動中,您將加入程式碼動作,此程式碼動作會在使用者啟動工作流程時,在 [公告] 清單中建立公告。

  12. 按兩下 [CodeActivity1],產生事件處理常式並檢視程式碼。

  13. 將下列程式碼加入至現有 using 或 Imports 陳述式底下:

    Imports Microsoft.SharePoint
    Imports System
    
    using Microsoft.SharePoint;
    using System;
    
  14. 以下列程式碼取代 codeActivity1_ExecuteCode:

    Private Sub codeActivity1_ExecuteCode(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Try
            ' Get reference to SharePoint site.
            Dim site As SPSite = New SPSite("http://MyServer")
            Dim web As SPWeb = site.OpenWeb("SPD2/")
            ' Get reference to Announcements list.
            Dim announcementsList As SPList = web.Lists("Announcements")
            ' Add announcement to Announcements list for the Task.
            Dim oListItem As SPListItem = announcementsList.Items.Add
            oListItem("Title") = ("Assigned task on " + DateTime.Now.ToString)
            oListItem.Update()
        Catch err As Exception
            Console.WriteLine(("Error: " + err.ToString))
        End Try
    End Sub
    
    private void codeActivity1_ExecuteCode(object sender, System.EventArgs e)
    {
    
        try
        {
            // Get reference to SharePoint site.
            SPSite site = new SPSite("http://MyServer");
            SPWeb web = site.OpenWeb("SPD2/");
            // Get reference to Announcements list.
            SPList announcementsList = web.Lists["Announcements"];
    
            // Add announcement to Announcements list for the Task.
            SPListItem oListItem = announcementsList.Items.Add();
            oListItem["Title"] = "Assigned task on " + DateTime.Now.ToString();
            oListItem.Update();
        }
    
        catch (Exception err)
        {
            Console.WriteLine("Error: " + err.ToString());
        }        
    }
    

部署專案並建立工作流程關聯

接下來,執行 WorkflowImportProject1 以將它部署至 SharePoint 網站,然後將工作流程與 [工作] 清單相關聯,以檢視和測試修改和轉換後的工作流程。

若要部署專案並建立工作流程關聯

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

  2. 按一下快速啟動列上的 [工作],顯示 [工作] 清單。

  3. 按一下 [清單工具] 功能區上的 [項目],然後按一下 [新增項目] 按鈕。

  4. 在 [工作 - 新項目] 對話方塊中,在 [標題] 方塊中輸入「新工作」,然後按一下 [確定]。

  5. 按一下 [清單工具] 功能區按鈕上的 [清單],然後按一下 [清單設定],顯示 [清單設定] 頁面。

  6. 按一下 [權限與管理] 區段中的 [工作流程設定] 連結。

    [加入工作流程] 網頁隨即出現。

  7. 在 [工作流程] 清單中,選取 [WorkflowImportProject1 - SPD 工作流程測試]。

  8. 在 [名稱] 方塊中,輸入「SPD 工作流程測試」,然後按一下 [確定]。

  9. 按一下快速啟動列上的 [工作]。

  10. 按一下 [新工作] 旁的下拉箭號,然後選取 [工作流程]。

  11. 按一下 [開始新工作流程] 區段中的 [SPD 工作流程測試] 連結,然後按一下 [啟動] 初始化工作流程。

    注意事項注意事項

    或者,您也可以執行工作流程設定精靈並設定工作流程自動產生關聯,以自動產生工作流程與清單之間的關聯。

    請注意,工作流程會執行兩個動作:您的名稱出現在工作的 [指派給] 資料行中,而公告出現在 [公告] 清單中。

請參閱

概念

從現有的 SharePoint 網站匯入項目

其他資源

開發 SharePoint 方案

為 Web 組件或應用程式頁面建立可重複使用的控制項