【工作流】——工作流的基本介绍和如何创建顺序工作流

前言


    工作流框架现在越来越流行了,流行自有它流行的道理。不过每一项技术都是有好有坏,它在解决了一定问题的同时自然也有它的缺点。每一项技术都是有它适合用的地方,没有更好,只有更适合嘛。


    本篇博客就根据工作流小组研究的结果,加上小编自己的理解,介绍一下工作流的基本内容。博客中的实例开发环境为VS2012,有兴趣的小伙伴可以尝试一下。


工作流是什么


    工作流的本质是一种方法,用来归档包含在完成一个单元的工作中的活动。这句话可能有些拗口,简单来说工作流就是将工作流程化,适应于流性质的工作,比如请假或者财务审批。


工作流的来源


    工作流概念起源于生产组织和办公自动化,是针对日常工作中具有固定程序活动而提出的一个概念。就拿公司要购买器材为例,最开始的时候是一个人有这个器材的需求,然后提交书面申请,将申请一级一级上交审批。这个过程不但纸质申请容易破损和丢失,而且申请人还和各级审批人有很大的的耦合性,申请人需要操心需要交给哪个审批人,而且还要操心当前审批人的审批结果。


    为了使这种近似于固定的流程自动化,工作流就应运而生。设计这么一套流程,申请人将申请提交后,他不需要知道各级审批人是谁,因为流程已经配置好了。然后该流程就会一级一级向下流,而申请人只需要等待结果就行了。


工作流的特点


    从上面来看,可以总结工作流的特点为以下几点:


    1、极大地提高了工作效率


    2、本身只是业务逻辑决定的一个事务流程


    3、一旦启动,自动流转


    4、具有事务的特性


    5、流程节点灵活可配


    6、符合面向对象的思想


工作流的分类


    按照工作流的流转过程来分,可以将工作流分为三种,分别是顺序工作流、流程图工作流、状态机工作流。本篇博客就介绍一下顺序工作流的创建,其余两种工作流的介绍和创建,请关注接下来的博客。


顺序工作流


    顺序工作流是流转过程最简单的一种工作流,各个节点之间没有分支,只有顺序流转,节点的顺序决定了执行结果的顺序。下面展示一个小例子,实现顺序工作流。


在VS2012创建工作流控制台应用程序



    这时在新建的项目中会出现两个文件,一个是Program类,用来做工作流的入口,main方法就在Program类中;另一个是Workflow1.xaml文件,这个就是用来设计工作流的。

                                                                                                    

    下面为了分离顺序工作流和其他两种,我对Workflow1.xaml文件进行了重命名,改为Sequence.xaml。


    打开Workflow1.xaml文件,出现工作流设计页面,在工具箱内有工作流已封装好的控件,拖拽到设计页面中就可以使用。下面演示WriteLine的控件,将WriteLine拖拽到设计页面中,然后拖拽第二个放在第一个下面,然后是第三个和第四个,这四个控件就自动组成了顺序工作流,就像下图。


   

在WriteLine控件中输入要显示的内容,每一个WriteLine控件就作为一个结点来执行。

                                                                                                       

下面再来看看Program类中的代码:

namespace SequenceWorkflow
{


    class Program
    {
        static void Main(string[] args)
        {
            //实例化当前的工作流
            Activity sequence = new Workflow1();
            //执行要执行的工作流
            WorkflowInvoker.Invoke(sequence);
        }
    }
}


    如果你的项目中有其他的工作流,就将Activity sequence = new Sequence();这句代码的Sequence更换为其他工作流的名字,就可以将其他工作流设置为启动的工作流了。如果Main方法这么写的话,会有一个问题,也就是执行时Console框会闪现,也就是显示一下就自动关闭了,可以在Main方法中加一句代码,可以使Console框在工作流运行完成后停留在桌面上。

namespace SequenceWorkflow
{

    class Program
    {
        static void Main(string[] args)
        {
            //实例化当前的工作流
            Activity sequence = new Workflow1();
            //执行要执行的工作流
            WorkflowInvoker.Invoke(sequence);
<span style="white-space:pre">	</span>    //将Console框停留在桌面
            Console.ReadKey();
        }
    }
}


最后工作流的执行效果为:

                                   

    到此为止,你的顺序工作流就成功执行了。怎么样,是不是很简单,动手试一下吧。


总结


    工作流之所以称为工作,是因为它可以执行几乎一切流性质的事务。工作流启动之后,有工作流内部机制控制,各个节点会自动执行,不需要再手动完成。另外工作流也是很好地面向对象的框架,让各个节点人耦合性降低,但是一旦一个流程启动,再改动它就难了,我认为这也是一点点的小缺点。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 15
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值