逐步解說:匯入 SharePoint Designer 可重複使用的工作流程
本逐步解說示範如何將在 SharePoint Designer 2010 中所建立的可重複使用工作流程匯入 Visual Studio SharePoint 工作流程專案。
在 SharePoint Designer 中建立的工作流程,或宣告式工作流程是由 XML 陳述式所組成,而不是程式碼。 SharePoint Designer 2010 引進可重複使用的工作流程,這些工作流程為可攜、宣告式工作流程,可供 SharePoint 網站中的不同清單使用。
在 Visual Studio 2012 中建立的工作流程 (例如循序和狀態機器工作流程) 稱為程式碼工作流程 (Code Workflow)。 程式碼工作流程是由 XML 檔案和程式碼模組所組成,使用者可以在其中自訂工作流程的行為。
Visual Studio 可讓您匯入 SharePoint Designer 2010 中建立之可重複使用的工作流程,並將它們轉換成程式碼工作流程,以便在 SharePoint 網站中使用。
本逐步解說將示範下列工作:
在 SharePoint Designer 中建立簡單且可重複使用的工作流程。
將 SharePoint Designer 可重複使用的工作流程匯出至 .wsp 檔案和 SharePoint。
使用匯入可重複使用的工作流程專案,將 .wsp 檔案匯入 Visual Studio。
藉由新增程式碼來改變工作流程。
在 SharePoint 網站中使用匯入的工作流程。
注意
在下列指示的某些 Visual Studio 使用者介面項目中,您的電腦可能會顯示不同的名稱或位置: 您所擁有的 Visual Studio 版本以及使用的設定會決定這些項目。 如需詳細資訊,請參閱將 IDE 個人化。
必要條件
您需要下列元件才能完成這個逐步解說:
支援的 Microsoft Windows 和 SharePoint 版本。
Visual Studio。
Microsoft Office SharePoint Designer 2010。
建立目標 SharePoint 子網站
首先,您會建立兩個新的 SharePoint 子網站: 一個是從 SharePoint Designer 裝載可重複使用的工作流程,另一個則是裝載已轉換的工作流程。
若要建立 SharePoint 子網站
在 SharePoint Designer 2010 中,於功能表列上選擇 [檔案]>[新增空白網站]。
在 [新增空白網站] 對話方塊中,瀏覽至您要建立工作流程的 SharePoint 網站,或使用 http://SystemName/ 的值,然後選擇 [確定] 按鈕。
[首頁] 頁面隨即出現。
在 [子網站] 區段中,選擇 [新增] 按鈕。
在 [新增] 對話方塊中,從左窗格的清單中選擇 [SharePoint 範本],然後從右窗格的清單中選擇 [小組網站]。
在 [指定網站位置] 方塊中,將 URL 中的 subsite 一字取代成 SPD1,然後選擇 [確定] 按鈕。
這會在 SharePoint Designer 中開啟新的子網站。 關閉此 SharePoint Designer 實例,並返回至第一個實例 (最上層網站)。
重複步驟 3 - 5 以建立第二個子網站,這次將 URL 中的字組 subsite 替代為 SPD2。
建立 SharePoint Designer 可重複使用的工作流程
因為 SharePoint 不包含任何可用於此範例的可重複使用工作流程,因此您將建立一個工作流程。 在這個簡單的工作流程中,當使用者在 [工作] 清單中輸入具有特定標題的新工作時,即會將工作指派至該使用者。
若要建立 SharePoint Designer 可重複使用的工作流程
在 [子網站] 區段中,選擇 [SPD1] 網站進行修改。
在功能區上,選擇 [可重複使用的工作流程] 按鈕。
建立可重複使用的工作流程精靈隨即出現。
在 [名稱] 方塊中輸入 SPD Task Workflow。
在 [內容類型] 清單中,選擇 [工作],然後選擇 [確定] 按鈕。
工作流程會在 SharePoint Designer 工作流程設計工具中開啟。
在工作流程設計工具中,選擇 [步驟 1],然後在功能區上選擇 [條件] 按鈕。
在條件清單中,選擇 [如果目前項目欄位等於值]。
這個步驟會加入名為 [如果欄位等於值] 的條件。
在 [如果欄位等於值] 條件中,選擇 [欄位] 連結。
在值清單中,選擇 [標題]。
在 [如果欄位等於值] 條件中,選擇 [值] 連結。
在方塊中,輸入新增工作。
條件陳述式現在會讀取 If Current Item:Title equals New task。
選擇條件陳述式下的那一行,接著在功能區上,選擇 [動作] 按鈕。
在動作清單中,選擇 [在目前項目中設定欄位]。
在 [將欄位設成值] 動作中,選擇 [欄位] 連結,然後在清單中選擇 [指派至]。
在 [將欄位設成值] 動作中,選擇 [值] 連結,然後在現有的使用者以及群組清單中,選擇 [建立項目的使用者]。
選擇 [新增] 按鈕,然後選擇 [確定] 按鈕。
動作陳述式現在變成 Set Assigned To Current Item:CreatedBy。
儲存及部署可重複使用的工作流程
因為 Visual Studio 只能匯入 .wsp 檔案,所以您必須將可重複使用的工作流程儲存為 .wsp 檔案,並將其部署至 SharePoint,再匯入 Visual Studio。
重要
如果您在執行下列程序時收到執行階段錯誤,則必須在有權存取 SharePoint 網站的系統上執行該程序。
若要儲存及部署可重複使用的工作流程
在 SharePoint Designer 頂端選擇 [儲存] 按鈕儲存您的進度,然後選擇 [發行] 按鈕,將工作流程部署至 [SPD1] SharePoint 網站。
在瀏覽窗格中,選擇 [工作流程] 物件。
在 [可重複使用的工作流程] 下,選擇 [SPD Task Workflow]。
在功能區上選擇 [另存範本] 按鈕,將工作流程儲存為 .wsp 檔案。
在瀏覽器中開啟 [SPD1] SharePoint 網站,以檢視 SharePoint 中的 .wsp 檔案。
在快速啟動列上,選擇 [程式庫] 連結。
在 [文件庫] 區段中選擇 [網站資產] 連結。
SPD 工作工作流程 檔案會與其他網站資產一起列出。
在檔案清單中,選擇該檔案的名稱
在 [檔案下載] 對話方塊中選擇 [儲存] 按鈕,將 .wsp 檔案儲存在本機系統上。
將 .wsp 檔案匯入 Visual Studio
使用匯入可重複使用的工作流程專案,將 .wsp 檔案匯入 Visual Studio。 此專案會將工作流程從可重複使用的宣告式工作流程轉換成程式碼工作流程。 轉換工作流程之後,您將使用程式碼來修改其行為。
從 .wsp 檔案匯入工作流程並加以修改
在 Visual Studio 的功能表列上,選擇 [檔案]>[新增]>[專案]。
在 [新增專案] 對話方塊中,展開 [Visual C#] 或 [Visual Basic] 下的 [SharePoint] 節點,然後選擇 [2010] 節點。
在 [範本] 窗格中,選擇 [匯入可重複使用的 SharePoint 2010 工作流程] 範本,專案名稱則保留為 [WorkflowImportProject1],然後選擇 [確定] 按鈕。
[SharePoint 自訂精靈] 隨即出現。
在 [指定網站和安全性層級進行偵錯] 頁面上,輸入您在先前建立之第二個 SharePoint 子網站的:http://system name/SPD2。
在 [此 SharePoint 方案的信任層級為何?] 區段中,選擇 [部署為陣列方案] 選項按鈕,然後選擇 [下一步] 按鈕。
如需有關沙箱化與伺服器陣列方案的詳細資訊,請參閱沙箱化解決方案考量。
在 [指定新專案來源] 頁面中,瀏覽至您先前在系統上儲存 .wsp 檔案的位置,然後選擇 [下一步] 按鈕。
注意
選擇 [完成] 按鈕,匯入 .wsp 檔案中所有可用的項目。
這會顯示可用於匯入的可重複使用工作流程清單。
在 [選取要匯入的項目] 方塊中,選擇 [SPD Task Workflow] 工作流程,然後選擇 [完成] 按鈕。
匯入作業完成後,即會建立名為 WorkflowImportProject1 的專案,其中包含名為 SPD_Workflow_TestFT 的工作流程。 此資料夾中包含工作流程的定義檔案 Elements.xml 和工作流程設計工具檔案 (.xoml)。 設計工具組包含兩個檔案:規則檔案 (.rules) 和程式碼後置檔案 (.cs 或 .vb,視專案的程式設計語言而定)。
在 [方案總管] 中,刪除 [其他匯入的檔案] 資料夾。
在 Elements.xml 檔案中,刪除
InstantiationURL="_layouts/IniErkflIP.sspx"
。在 [方案總管] 中,選擇 [WorkflowImportProject1],然後在功能表列上選擇 [專案]>[設定為啟始專案],將 [WorkflowImportProject1] 設定為啟始項目。
當您針對專案進行偵錯時,這會立即顯示清單。
因為 [匯入可重複使用的 SharePoint 2010 工作流程] 範本不會匯入已匯入工作流程的關聯屬性值,所以必須由您輸入。 若要這樣做:
在 [方案總管] 中,選擇 [SPD_Workflow_TestFT] 節點。
選擇其中一個清單屬性旁邊的省略符號 () 按鈕,例如 [目標清單] 屬性。
在 [SharePoint 自訂精靈] 中填入遺漏的值,然後選擇 [完成] 按鈕。
選擇 .xoml 檔案,然後在功能表列上選擇 [檢視]>[設計工具],在工作流程設計工具中檢視匯入的工作流程。
在 [工具箱] 的 [Windows Workflow v3.0] 節點中,執行下列其中一個步驟:
開啟 [程式碼] 活動的捷徑功能表,然後選擇 [複製]。 在工作流程設計工具中,開啟 [SequenceActivity1] 活動底下那一行的捷徑功能表,然後選擇 [貼上]。
從 [工具箱] 中將 [程式碼] 活動拖曳至工作流程設計工具,並將它連接至 [SequenceActivity1] 活動底下的那一行。
這會將活動新增至名為 CodeActivity1 的工作流程設計工具。 在此活動中,您將新增程式碼動作,以在使用者啟動工作流程時,於 [公告] 清單中建立公告。
請執行下列其中一組步驟:
按兩下 [CodeActivity1] 以產生事件處理常式並檢視程式碼。
在 [CodeActivity1] 的 [屬性] 視窗中,將 [ExecuteCode] 屬性值設定為 [codeActivity_ExecuteCode]。
在現有的 using 或 Imports 指示詞下新增下列項目:
將
codeActivity1_ExecuteCode
取代為下列項目: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 網站,然後將工作流程與 [工作] 清單產生關聯,以檢視及測試已修改的已轉換工作流程。
若要部署專案並建立工作流程的關聯
在 Visual Studio 中,選擇 F5 鍵執行並部署轉換後的工作流程專案。
在快速啟動列上選擇 [工作] 連結,顯示 [工作] 清單。
在 [清單工具] 索引標籤上,選擇 [項目] 按鈕,然後選擇 [新增項目] 按鈕。
[工作 - 新項目] 對話方塊隨即開啟。
在 [標題] 方塊中,輸入 New task,然後選擇 [儲存] 按鈕。
在 [清單工具] 索引標籤上,選擇 [清單] 按鈕,然後選擇 [清單設定] 按鈕。
[清單設定] 頁面隨即出現。
在 [權限與管理] 區段中選擇 [工作流程設定] 連結。
[工作流程設定] 頁面隨即出現。
選擇 [加入工作流程] 連結。
在 [工作流程] 清單中,選擇 [WorkflowImportProject1 - SPD Workflow Test]。
在 [名稱] 方塊中,輸入 SPD Workflow Test,然後選擇 [確定] 按鈕。
在快速啟動列上,選擇 [工作] 清單。
選擇 [新工作] 旁邊的箭號,然後在清單中選擇 [工作流程]。
在 [開始新工作流程] 區段中選擇 [SPD Workflow Test] 的連結,然後選擇 [開始] 按鈕啟始工作流程。
注意
或者,您可以執行工作流程設定精靈,並將工作流程設定為自動關聯,以自動建立工作流程與清單的關聯。
請注意,工作流程會執行兩個動作:您的名稱會出現在工作的 [指派至] 資料行中,而公告會出現在 [公告] 清單中。