开篇

       之前我们讲述了控制流与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控制台应用程序。

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

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

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

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

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

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

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

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

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

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

Variable contion1 = new Variable() 
                    { 
                        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(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、我们来解释下上面的定义说明信息:

3、其他内容:

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

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

 

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

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

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

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

并打印出来。

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

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

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

×××

更多交流

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

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

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

1、邮箱方式:

魏琼东: [email protected] 手机:18629261335 博客:http://eastjade.cnblogs.com/

殷长波:[email protected] 博客: http://www.cnblogs.com/onmyway/

何戈洲:[email protected] 博客:http://www.cnblogs.com/hegezhou_hot/

2、QQ交流群:

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