WorkFlow入门Step.6—Building a Console Application -For-WF4.0

 

开篇

       之前我们讲述了控制流与WF4.0的基础。下面我们来看看如何使用控制台的形式来使用WF4.0、比如我们有时候不能通过设计器来设计工作流时,如何通过代码

的方式,来构建WF4.0应用程序,可能这就会为我们自定义工作流设计器等方面提供帮助。下面我们就开始吧。

摘要

         WorkFlow是最近比较流行的一门技术,其实WF起源于20世纪70年代中期的办公化自动领域,自1993年8月,WFMC(工作流管理联盟)成立,1994年制定了一

系列的关于工作流的标准。进入21世纪工作流被越来越多的学者关注,该项技术越发走向成熟。当然我也是必须跟上时代的步伐,所以也加入工作流的大军,希望能

够跟上前人的脚步。当然也希望感兴趣的朋友,加入工作流的讨论群中来。具体群号:120661978。

目前,我们已经在AgileEAS.平台中陆续集成了,界面设计器+工作流的内容,当然工作流目前还不算太成熟,还不方便放出来,本文只是抛砖引玉,还希望

大家多多重视工作流的内容。

大纲

一、开篇

二、摘要

三、WF4.0的控制台程序

控制台程序

之前的几篇文章,我们已经把WF中的基础控制流信息差不多说完了,关于具体的应用我们后面会说明,更多内容请查看上篇《

WorkFlow入门Step.5—Adding Procedural Elements-For-WF4.0-(后续)

下面我们就来看看如何通过代码的形式来创建工作流流程,达到与设计器同样的目标。

1、新建一个Winform控制台应用程序。

image

2、添加程序集引用“system.Activities”:

image

3、在Main函数中添加如下代码:

image

4、修改上方的“CreateWorkFlow方法”:

image

5、运行上述程序,查看运行结果。

image

下面我们来在该代码构建一个带有IF控制流的活动吧,看看是如何构建的。

1、在上面的基础上,我们来新修改上述“CreateWorkFlow方法的内容”:

        private static System.Activities.Activity CreateWorkFlow()
        {
            //创建新的工作流活动
            Variable<DateTime> nows = new Variable<DateTime>()
            {
                Name = "DateTime",
                Default = DateTime.Now
            };

            return new Sequence()
            {
                DisplayName = "test",
                Activities=
                {
                    new WriteLine()
                    {
                        DisplayName="Write1",
                        Text="Hello World!"
                    }
                }
            };
        }

上面是之前的输出HelloWord的不带复杂的条件的简单输出的节点,我们将上述的代码修改如下:

先定义一个该顺序控制流范围内的变量“Contion1”条件变量,作为IF条件的判定

Variable<int> contion1 = new Variable<int>()
                    {
                        Name = "int1",
                        Default = 1
                    };

返回一个顺序控制流

return new Sequence()
           {
               Variables=
               {
                   contion1
               },
               DisplayName = "test",
               Activities =
               {
                   //输出工作流执行的开始日期
                   new WriteLine()
                   {
                       DisplayName="Write1",
                       Text=System.DateTime.Now.ToString()
                   },

                   new If()
                   {
                       DisplayName="test2", Condition=ExpressionServices.Convert<bool>(env=>contion1.Get(env)>0),
                       Then=new WriteLine(){
                           DisplayName="Then",
                           Text="Then"
                       },Else=new WriteLine(){
                           DisplayName="Else",
                           Text="Else"
                       }
                   },
                   //输出工作流执行的完成日期
                   new WriteLine()
                   {
                       DisplayName="Write2",
                       Text=System.DateTime.Now.ToString()
                   }
               }
           };

2、我们来解释下上面的定义说明信息:

image

3、其他内容:

image

4、运行后,查看结果如下:

image

5、IF条件中的写法与Condition的解析,我们这里来简单的说明下:、

image

 

基于上面的形式,我们能够写出所有我们基于设计器来完成的代码,当然掌握这样的控制台的形式,对我们结合一些相关开发平台或者业务代码的时候,

更方便和容易,可能给予控制台的方式,会感觉比较的难以书写。

例如我们在上面的基础上,在then中完成赋值操作。

我们在then中对变量contion1赋值为2。

并打印出来。

1、修改上述的Sequece中的代码:

image

上面就完成了,IF活动内部的过程的修改。

2、运行后,查看运行的效果:

image

源码下载

download233

更多交流

官方博客:http://www.smarteas.net/

官方网站:http://www.agilelab.cn/

如果您在使用AgileEAS.NET开发平台中有什么问题,请使用如下几种联系方式或者沟通方式。

1、电话-邮箱方式:

何戈洲hegezhou_hot@163.com 手机:18691480181 博客:http://www.cnblogs.com/hegezhou_hot/

2、QQ交流群:

QQ:308961614    网名:H.O.T

AgileEAS.NET平台交流群:120661978(超级群)[新建]

posted @ 2011-06-13 12:32  hotdefans  阅读(6268)  评论(5编辑  收藏  举报