无废话 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?

原文地址:https://www.cnblogs.com/kinguru/p/7991778.html