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?

  • 相关阅读:
    未能加载文件或程序集“System.EnterpriseServices, Version=4.0.0.0或2.0.0.0
    解决本地调用office组件成功,但是发布到IIS中出现的错误(检索COM类工厂中CLSID为{00024500-0000-0000-C000-000000000046}的组件时失败)
    未能找到类型或命名空间名称“Coco”(是否缺少 using 指令或程序集引用)
    SQL截取字段字符串的方法
    C# 128位AES 加密解密 (转)
    检索 COM 类工厂中 CLSID 为 {13C28AD0-F195-4319-B7D7-A1BDAA329FB8} 的组件时失败,原因是出现以下错误: 80040154
    js 获取时间比较全,留备用(zhuan)
    windows之如何把iso文件转换为VHD文件
    python之三行代码发送邮件
    RobotFramework第二篇之web自动化
  • 原文地址:https://www.cnblogs.com/kinguru/p/7991778.html
Copyright © 2011-2022 走看看