第四個C#工作流實例--構建流程圖工作流


新建一個Workflow Console Application,從工具箱中的FlowChart(流程圖)節點下,將一個FlowChart活動拖拽到設計器中,在Properties窗口中將DisplayName屬性值更改為容易記住的名字,注意:在FlowChart活動的右下角有一個縮放處理的圖標,可以用來增大或縮小流程圖設計器空間的尺寸,隨着活動的增多,你將需要擴大這個尺寸。
第四個C#工作流實例--構建流程圖工作流
Start圖標表示該流程圖活動的入口,在本例中它是我們放置的整個工作流中的第一個活動,並且將在使用WorkflowInvoker或WorkflowApplication類執行工作流時被觸發。你可以將這個圖標拖動到設計器的任何位置,我建議留在左上角,以便流出更多的空間。

我們的目標是通過連接多個活動將它們組裝在一起,通常在流程中要用到FlowDecision活動,我們將WriteLine活動拖拽到設計器上,將Display名稱改為GetProductName,如果現在你將鼠標停在Start圖標上,會發現四個方向都出現了對接標記,單擊並按住對接標記,然后拖動到WriteLine活動,這樣會在這兩項中出現一條連接線,這意味着工作流執行的第一個活動是GetProductName。
第四個C#工作流實例--構建流程圖工作流

我們添加了一個名為ProductName的無默認值的字符串類型的工作流參數,該參數通過自定義的Dictionary<>對象動態傳入,最后將WirteLine活動的Text屬性值為如下的代碼語句:
“產品:”&ProductName 這個語句的意思等同於我們代碼里面寫的“產品:”+ProductName,因為工作流輸入代碼條件時使用的是VB的語法,所以要這樣寫
        在設計器中再添加一個WriteLine活動,並連接到前一個WriteLine,在Text屬性中硬編碼字符串值“庫存狀態”,並將DisplayName屬性改為GetProductInventory,並添加一個參數InventoryState
第四個C#工作流實例--構建流程圖工作流

使用InvokeMethod活動
現在我們要檢查產品的庫存情況,因此我們可以很好地使用InvokeMethod活動,現在我們再添加一個WriteLine修改DisplayName屬性為:Pay Y or N 並與GetProductInventory連接
第四個C#工作流實例--構建流程圖工作流
選擇InvokeMethod活動要配置的第一個屬性為TargetType,它表示類的名稱,我們要調用的靜態成員就定義在該類中。選擇瀏覽類型(Browse for Types)選項,找到System.Console類之后,單擊OK.選擇下面的MethodName屬性設置為ReadLine,這個方法是通過鍵盤輸入的字符串。
第四個C#工作流實例--構建流程圖工作流
我們需要一種方法來得到這個返回值,接下來就將介紹這個方法。添加一個名為YesOrNo的參數string類型,點擊我們的Pay Y or N看右側的屬性窗口,里面有個Result來接收返回值。
第四個C#工作流實例--構建流程圖工作流

    使用FlowDecision活動
它提供了兩種行為,它是基於布爾類型的返回值判斷真假,來決定執行那個行為,將活動拖拽到設計器上,並與Pay Y or No相連接。
    點擊Decision看到右側屬性,我們可以直接在里面輸入YesOrNo.ToLower() = "y",注意vb語法判斷只能用一個等於號,鼠標放在Decision可以看到,true和false兩個箭頭,我們拖拽兩個Writeline一個連接true,表示可以加入購物車,一個連接false表示不能購買,顯示到貨通知。
第四個C#工作流實例--構建流程圖工作流

打開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,顯示加入購物車
第四個C#工作流實例--構建流程圖工作流
輸入:N,顯示到貨通知
第四個C#工作流實例--構建流程圖工作流


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM