作法:建立適用於工作流程管理員 1.0 的自訂活動
發行︰ 2016年7月
活動是 WF 中的行為核心單位,也是開發人員編寫工作流程的建構元素。 在 Workflow Manager 1.0 中,自訂活動和工作流程會以 Workflow Manager 1.0 信任表面 中的類型組成,也就是編寫活動和工作流程時可以使用的受信任類型集。 在 Workflow Manager 1.0 入門教學課程 中的這個步驟中,會從裝載在 http://services.odata.org/Northwind/Northwind.svc 的 Northwind 範例資料庫中建立擷取產品的自訂活動。 接著,此活動會用於教學課程中的下列步驟。
注意 |
---|
如需觀看視訊逐步解說,或下載初學者檔案和完整的教學課程版本,請參閱 工作流程管理員 1.0 - 入門教學課程。 |
在此教學課程步驟中
建立 Visual Studio 方案以及活動程式庫專案
建立 GetProducts 活動
建立 Visual Studio 方案以及活動程式庫專案
開啟 Visual Studio 2012,並從 [檔案] 功能表中選擇 [新增]、[專案]。
在 [已安裝]、[範本] 清單中展開 [其他專案類型] 節點,並選取 [Visual Studio 方案]。
從 [Visual Studio 方案] 清單中選取 [空白方案]。 確定已在 [.NET Framework 版本] 下拉清單中選取 .NET Framework 4.5。 在 [名稱] 方塊中輸入 WFMgrGettingStarted,然後按一下 [確定]。
在 [方案總管] 中的 [WFMgrGettingStarted] 上按一下滑鼠右鍵,並選擇 [加入]、[新增專案]。
提示
若並未顯示 [方案總管] 視窗,請從 [檢視] 功能表中選取 [方案總管]。
在 [已安裝] 節點中,選取 Visual C#、[工作流程]。 確定已在 [.NET Framework 版本] 下拉清單中選取 .NET Framework 4.5。 從 [工作流程] 清單中選取 [活動程式庫]。 在 [名稱] 方塊中輸入 GetProductsActivities,然後按一下 [確定]。
注意 根據 Visual Studio 中設定為主要語言的程式設計語言而定,Visual C# 節點可能位於 [已安裝] 節點中的 [其他語言] 之下。
在 [方案總管] 中的 [Activity1.xaml] 上按一下滑鼠右鍵,並選擇 [刪除]。 按一下 [確定] 以確認。
在 [方案總管] 中的 [GetProductsActivities] 上按一下滑鼠右鍵,接著選取 [加入參考]。
按一下 [瀏覽] 按鈕,並瀏覽至 C:\Program Files\Reference Assemblies\Microsoft\Workflow Manager\1.0。
選取 Microsoft.Activities.dll,按一下 [加入],接著按一下 [確定]。
在 [方案總管] 中,展開 GetProductsActivities 專案下的 [屬性],並按兩下 AssemblyInfo.cs 以檢視節點。
使用其他 Using 陳述式 (Snippet1) 在檔案頂端新增以下 Using 陳述式。
using System.Windows.Markup;
提示
教學課程中會提供程式碼片段檔案。 若要使用它們,請從 Workflow Manager 1.0 - 入門教學課程下載教學課程初學者檔案。 在 Visual Studio 中,從 [工具] 功能表中選擇 [程式碼片段管理員]。 從 [語言] 下拉式清單中選取 Visual C#,然後按一下 [加入] 按鈕。 瀏覽至您解壓縮初學者檔案的位置並選取 Assets\WFMgrGettingStarted 資料夾。 按一下 [選取資料夾],然後按一下 [確定]。 在您的程式碼檔案中,在希望插入程式碼片段之處按一下滑鼠右鍵接著選取 [插入程式碼片段]。 向下捲動清單,並按兩下 [WFMgrGettingStarted],接著按兩下所需的程式碼片段。
在檔案結尾處新增以下程式碼行 (Snippet2)。
[assembly: XmlnsDefinition("wf://workflow.windows.net/$Current/$Activities", "GetProductsActivities")]
重要 這個步驟十分重要,且第二個參數必須符合包含自訂活動的專案命名空間。 若並未執行這些步驟,則使用此自訂活動的工作流程無法和以下例外狀況相似的例外狀況發行:
System.Xaml.XamlObjectWriterException:無法建立不明類型 '{clr-namespace:GetProductsActivities}GetProducts'。
按下 Ctrl+Shift+B 以建置方案。
建立 GetProducts 活動
在本節中,會建立 GetProducts 自訂活動。GetProducts 活動使用 HttpSend 活動來查詢裝載於 http://services.odata.org/Northwind/Northwind.svc 的 Northwind oData 服務,並將結果從服務轉換為 DynamicValue。GetProducts 活動接著會向下切入傳回的 DynamicValue 並使用 GetDynamicValueProperty<T> 活動來傳回關鍵字搜尋的結果。
在 [方案總管] 中的 GetProductsActivities 上按一下滑鼠右鍵,並選擇 [加入]、[新項目]。
在 [已安裝] 的 [Visual C# 項目] 節點中,選取 [工作流程]。 從 [工作流程] 清單中選取 [活動]。
在 [名稱] 方塊中輸入 GetProducts,然後按一下 [加入]。
若未顯示,請在 [方案總管] 中按兩下 GetProducts.xaml,以在設計工具中顯示。
在活動設計工具的左下方按一下 [引數],以顯示 [引數] 窗格。
按一下 [建立引數]。
在 [名稱] 方塊中輸入 SearchKeyword,並在 [方向] 下拉清單中選取 [內],接著在 [引數型別] 下拉式清單中選取 [字串],再按下 ENTER 以儲存引數。
按一下 [建立引數]。
在新增之 SearchKeyword 引數下的 [名稱] 方塊中輸入 ProductsData,從 [方向] 下拉式清單中選取 [外],再從 [引數型別] 下拉式清單中選取 [瀏覽型別]。
在 [型別名稱] 方塊中輸入 DynamicValue,並從結果清單中選取 [DynamicValue],再按一下 [確定]。
提示
若搜尋結果中並未出現 DynamicValue,請確定已如 建立 Visual Studio 方案以及活動程式庫專案 中所述加入對 Microsoft.Activities.dll 的參考。
從 [工具箱] 的 [控制流程] 區段中拖曳 [序列] 活動,並放置在 GetProducts 活動設計工具的 [將活動放置在這裡] 標籤上。
提示
若 [工具箱] 視窗並未顯示,請從 [檢視] 功能表中選取 [工具箱]。
從 [工具箱] 的 [訊息] 區段中拖曳 HttpSend 活動,並放置在 [序列] 活動的 [將活動放置在這裡] 標籤上。
提示
除了瀏覽 [工具箱] 尋找活動,您在 [工具箱] 頂端的 [搜尋工具箱] 方塊中輸入要尋找的活動名稱。
在工作流程設計工具中按一下 HttpSend 活動加以選取,並在 [屬性] 視窗中設定以下屬性。
屬性
值
方法
GET
URI
"http://services.odata.org/Northwind/Northwind.svc/Products?$format=application/json;odata=verbose&$filter=substringof('" + SearchKeyword + "', ProductName) eq true"
ResponseContent
ProductsData
提示
若 [屬性] 視窗並未顯示,請從 [檢視] 功能表中選取 [屬性視窗]。
從 [工具箱] 的 DynamicValue 區段中拖曳 GetDynamicValueProperty<T> 活動,並放置在 [序列] 活動中,讓其位於 HttpSend 活動之後。
在放置活動時出現的 [選取型別] 視窗中,從下拉式清單中選取 Microsoft.Activities.DynamicValue。 若 DynamicValue 不在清單中,選取 [瀏覽型別],在 [型別名稱] 方塊中輸入 DynamicValue,並從結果清單中選取 DynamicValue,再按一下 [確定]。 一旦在下拉式清單中選取了 DynamicValue,按一下 [確定]。
在工作流程設計工具中按一下 GetDynamicValueProperty<T> 活動加以選取,並在 [屬性] 視窗中設定以下屬性。
屬性
值
PropertyName
"d/results"
結果
ProductsData
來源
ProductsData
按下 CTRL+SHIFT+B 以建置方案。
若要查看完整活動的範例,以及此教學課程步驟的視訊逐步解說,請參閱工作流程管理員 1.0 - 入門教學課程
如需如何使用此活動建立工作流程的指示,請參閱教學課程中的下一步作法:建立適用於 Workflow Manager 1.0 的工作流程。