一起学WF3.5【1】

一、第一个例子

首先我们在VS中创建一个workflow控制台程序。只有在.NET Framework3.0以后才能显示出workflow的工程模板。

我们选择.NET Framework 4,类型选Workflow ConsoleApplicaiton。

解决方案和称和工程名称随意。我分别用Chapter01和HelloWorkflow。

向设计器中先拖一个Seaquece活动,再拖一个WriteLine活动到它里面。WriteLine里写上"Helloworkflow"。F5运行。能看到控制台输出字符。

Program类中的Main函数里如下两行代码创建并启动了一个工作流。

    Activity workflow1 =newWorkflow1();

         WorkflowInvoker.Invoke(workflow1);

二、使用代码定义工作流。

首先删除xaml文件,删除上述两行代码。

在空间HelloWorkflow中定义新类,命名为HelloWorkflow,代码如下:

     public class HelloWorkflow : Activity

     {

         public HellowWorkflow()

         {

              this.Implematation=() => new Sequence()

              {

                   Activities= {

                       newWriteLine() { Text="Hello Workflow" }

              }

         }

     }

解释一下,我们将HelloWorklow类的对象的Implematation属性设为一个顺序活动,其中添加一个WriteLine活动。

Main函数中添加:

     WorkflowInvoker.Invoke(newHelloWorkflow());

运行后,效果与上一个例子相同。

三、创建另一种工作流,新建项目,选择.NET Framework 3.5,选择SequentialWorkflow Console Application, 命名PCodeWorkflow。

会看到一个设计视图。拖一个IfElse活动到起点和终点之间。

点击红色叹号,在右侧的属性中的Condition行选“Code Condition”,点Condition左侧的加号,在“Condition”行写函数名称 “EvaluatePostCode”。

在工具箱拖两个Code Activity到两个分支。分别在执行代码中写函数名PostCodeValid和PostCodeInvalid。

在Workflow1.cs中生成上述三个函数。

private voidEvaluatePostCode(object sender, ConditionalEventArgs e)

        {

            string USCode = @"^(\d{5}$)|(\d{5}$\-\d{4}$)";

            string CanadianCode = @"[ABCEGHJKLMNPRSTVXY]\D[A-Z]\d[A-Z]\d";

            e.Result = (Regex.IsMatch(_code,USCode) || Regex.IsMatch(_code, CanadianCode));

        }

 

private void PostalCodeValid(objectsender, EventArgs e)

        {

            Console.Write("The postal code{0} is valid.", _code);           

        }

private void PostalCodeInvalid(object sender, EventArgse)

        {

            Console.Write("The postal code{0} is invalid.", _code);

            Console.ReadLine();

        }

并定义如下属性:

private string _code = string.Empty;

        public string PostalCode

        {

            get

            {

                return _code;

            }

            set

            {

                _code = value;

            }

        }

 

打开program.cs,定位到WorkflowInstance instance = workflowRuntime.CreateWorkflow(typeof(PCodeFlow.Workflow1),wfArgs);

修改为

Dictionary<string,object> wfArgs = newDictionary<string, object>();

wfArgs.Add("PostalCode",args.Length > 0? args[0] : "");

WorkflowInstanceinstance = workflowRuntime.CreateWorkflow(typeof(PCodeFlow.Workflow1),wfArgs);

 

编译程序。打开cmd,定位到工程的debug目录,执行PCodeflow.exe,后边记得加上参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值