新建一個Workflow Console Application,從工具箱中的FlowChart(流程圖)節點下,將一個FlowChart活動拖拽到設計器中,在Properties窗口中將DisplayName屬性值更改為容易記住的名字,注意:在FlowChart活動的右下角有一個縮放處理的圖標,可以用來增大或縮小流程圖設計器空間的尺寸,隨着活動的增多,你將需要擴大這個尺寸。
Start圖標表示該流程圖活動的入口,在本例中它是我們放置的整個工作流中的第一個活動,並且將在使用WorkflowInvoker或WorkflowApplication類執行工作流時被觸發。你可以將這個圖標拖動到設計器的任何位置,我建議留在左上角,以便流出更多的空間。
我們的目標是通過連接多個活動將它們組裝在一起,通常在流程中要用到FlowDecision活動,我們將WriteLine活動拖拽到設計器上,將Display名稱改為GetProductName,如果現在你將鼠標停在Start圖標上,會發現四個方向都出現了對接標記,單擊並按住對接標記,然后拖動到WriteLine活動,這樣會在這兩項中出現一條連接線,這意味着工作流執行的第一個活動是GetProductName。

我們添加了一個名為ProductName的無默認值的字符串類型的工作流參數,該參數通過自定義的Dictionary<>對象動態傳入,最后將WirteLine活動的Text屬性值為如下的代碼語句:
“產品:”&ProductName 這個語句的意思等同於我們代碼里面寫的“產品:”+ProductName,因為工作流輸入代碼條件時使用的是VB的語法,所以要這樣寫
在設計器中再添加一個WriteLine活動,並連接到前一個WriteLine,在Text屬性中硬編碼字符串值“庫存狀態”,並將DisplayName屬性改為GetProductInventory,並添加一個參數InventoryState
使用InvokeMethod活動
現在我們要檢查產品的庫存情況,因此我們可以很好地使用InvokeMethod活動,現在我們再添加一個WriteLine修改DisplayName屬性為:Pay Y or N 並與GetProductInventory連接

選擇InvokeMethod活動要配置的第一個屬性為TargetType,它表示類的名稱,我們要調用的靜態成員就定義在該類中。選擇瀏覽類型(Browse for Types)選項,找到System.Console類之后,單擊OK.選擇下面的MethodName屬性設置為ReadLine,這個方法是通過鍵盤輸入的字符串。
使用FlowDecision活動
它提供了兩種行為,它是基於布爾類型的返回值判斷真假,來決定執行那個行為,將活動拖拽到設計器上,並與Pay Y or No相連接。
點擊Decision看到右側屬性,我們可以直接在里面輸入YesOrNo.ToLower() = "y",注意vb語法判斷只能用一個等於號,鼠標放在Decision可以看到,true和false兩個箭頭,我們拖拽兩個Writeline一個連接true,表示可以加入購物車,一個連接false表示不能購買,顯示到貨通知。
打開Program.cs
static void Main(string[] args)
{
Dictionary wlData = new Dictionary();
wlData.Add("ProductName", "小米手機青春版");
wlData.Add("InventoryState", "Yes,請輸入是否可以購買 Y/N");
WorkflowInvoker.Invoke(new Workflow1(), wlData);
}
運行程序:輸入Y,顯示加入購物車