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





本文转自何戈洲博客园博客,原文链接:http://www.cnblogs.com/hegezhou_hot/archive/2011/06/13/2079601.html,如需转载请自行联系原作者


目录
相关文章
SAP CRM WebClient UI Home page里Workflow task retrieve logic
SAP CRM WebClient UI Home page里Workflow task retrieve logic
SAP CRM WebClient UI Home page里Workflow task retrieve logic
ABAP Create Decision Step in Workflow
ABAP Create Decision Step in Workflow
101 0
ABAP Create Decision Step in Workflow