本节主要介绍什么是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?