第四个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#工作流实例--构建流程图工作流
posted @ 2015-08-04 15:49  倾城风云  阅读(18261)  评论(1编辑  收藏  举报