zoukankan      html  css  js  c++  java
  • 无废话 WF4.0(01)-- 芝麻开门

    本节主要介绍什么是WF,为什么需要它?从哪儿开始去学它?

    相信在企业上过班的人都报销过出差费用。有些企业的报销流程是比较复杂的,需要业务经理签字-->开发经理签字-->部门经理签字-->财务主管签字等等。

    整个报销过程,每个节点由不同的角色完成的一个活动后传递给下一个角色活动,最终完成某个员工的报销这件事情,我则称之为工作流,英文缩写为WF。

    工作流在企业OA系统中最先引入和实现。其实人类绝大部份行为都可以抽象为工作流。

    所以我先单纯地认为一系统串起来的活动,都可以用工作流解决。

    为此,我立志吃透dotnet WF4.0框架,并记录下本人的学习过程与心得体会,疑义相与析。

    开始启动Visual Studio,许多文章都是要选WF模板的项目类型,个人认为什么项目模板根本不重要,重要点只有两个:

    1、  

     2、引用

    本人用的是VS2015,我们先从一个控制台项目开始学习好了

    新建一个控制台项目,是这样子的:

    添加-->新建项,选Workflow-->活动

    下一步,在Actiivity1.xaml的布局设计器中添加一个WriteLine基元。

    这是什么意思呢,我的理解是项目添加了一个活动,该活动的内部要做什么事情由你来定义,我们先定义Activity1的活动内容就是向控制台输出这件事情好了。

     我们同样从输出Hello World开始好了。

    那么,对拖入的WriteLine基元的Text赋值为"Hello World!",如下图所示:

    OK,这样一个Activity就算定义好了。现在我们这个活动跑起来,当然需要实例化它:

    using System;
    using System.Activities;

    namespace ConsoleAppTest03
    {
      class Program
      {
        static void Main(string[] args) {
          Activity act = new Activity1();
          WorkflowInvoker.Invoke(act);
          Console.ReadKey();
        }
      }
    }

    F5运行之,你便可以看到结果了。这里就不贴图了,惊喜总是留给努力的人们。

    一般我们很少用WorkflowInvoker去运行一个Activity,因为它没指示我们Activity1啥时跑完的。

    而如果用WorkflowApplication,则可以得到更多的回馈,那么代码修改如下:

    using System;
    using System.Activities;

    namespace ConsoleAppTest03
    {
      class Program
      {
        static void Main(string[] args) {
          WorkflowApplication app = new WorkflowApplication(new Activity1());
          app.Completed = new Action<WorkflowApplicationCompletedEventArgs>(workflowCompleted);
          Console.WriteLine(app.Id);
          app.Run();
          Console.ReadKey();
        }

        static void workflowCompleted(WorkflowApplicationCompletedEventArgs e) {
          Console.WriteLine("状态:{0}", e.CompletionState.ToString());
          Console.WriteLine("实例编号:{0}", e.InstanceId);
        }
      }
    }

    本节学习到此,关于工作流的启程,Are u ready?

  • 相关阅读:
    java多线程系类:JUC原子类:01之框架
    008商城项目:商品列表查询-查出商品并且分页
    java多线程系类:基础篇:10生产者消费者的问题
    java多线程系类:基础篇:09之interrupt()和线程终止方式
    java多线程系类:基础篇:08之join
    java多线程系类:基础篇:07线程休眠
    java多线程系类:基础篇:06线程让步
    java多线程系类:基础篇:05线程的等待与唤醒
    java多线程系类:基础篇:04synchronized关键字
    面试官:说说Mysql数据库分库分表,并且会有哪些问题?
  • 原文地址:https://www.cnblogs.com/kinguru/p/7991778.html
Copyright © 2011-2022 走看看