• WorkFlow入门Step.6—Building a Console Application ForWF4.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(超级群)[新建]

  • CallHot

反馈文章质量,你可以通过快速通道评论:
  • 相关阅读:
    因浮动使得容器失去高度的四种处理对策
    推荐一些国内的Jquery CDN免费服务
    layer.js 贤心制作的弹出层插件-不仅仅是弹层
    jquery 页面滚动到底部自动加载插件集合
    JQ应用第3款:返回顶部、底部、微信、反馈我们共存
    jquery.nicescroll.js可全屏可改滚动条颜色的滚动条插件-推荐
    jquery-fullpage-js制作页全屏滚动插件
    headroom.js –在不需要页头时将其隐藏
    Vue中删除重复上传的文件
    面向对象设计原则
  • 原文地址:https://www.cnblogs.com/hegezhou_hot/p/2079601.html
  • Copyright © 2020-2023  润新知