本次学习的目标
能使用工作流完成简单的审批流程,并将同样性质的工作流进行可配置设置,让其他人可以快速的生成。
如果可以,把这个记录写的生动点。对象是同事与广大正要学习工作流的朋友。同样也是让大家交流交流这样学习是否合理。望大家指正不足缺陷!
学习者目前情况
对C#的基本知识经熟悉。
2年多学习编程,其中1年多学习.net经验。
工作中使用.net做winfrom、Webfrom与mvc开发1年多。
已经了解了一点点工作流是个什么东西。
主要参考资料
http://www.cnblogs.com/foundation/category/215023.html
来自 Windows Workflow Foundation 前辈
开始:
通读前辈 WF4.0 基础篇 (一)开始使用WF
代码需要重用,博文也一样需要,不要反复写别人写的挺好的文章了。我这里用笔记本的虚拟机进行学习,接了一个台式机的显示器,显示器看博文,虚拟机写代码。感觉还不错。
实践到这里。你们都行的。
细说刚刚建立的项目
我非常喜欢控制台程序,因为她是一个最透明的项目。你让你明白,那些复杂的项目是怎么一点点构造出来的。
一个控制台工作流就三个主要文件。
App.config 程序配置文件,里面写的是.net的版本
Workflow1.xaml
应该是描述工作流的xaml文件。点中,按F7。看内容。
xaml被微软广泛的使用来描述信息。如WPF\silverlight,xaml可以用来描述UI。这里用来描述一个工作流。
这里,我喜欢把它理解为用xaml来实例化类型。而且还会根据事先写好的解析并运行这一系列的代码。xaml最后是一定会转成C#的代码执行的。就如linq中的表达式,也是最终转成C#的代码。
就如html的<input>的元素一样。<WriteLine …/>这个节点最终会实例化出一个WriteLine类。当然,外围还有一个<Activity..</Activity>包裹着。
这些又做了什么事情,见下图应该就明白。
Program.cs 一个控制台的启动程序
让我们结合前辈使用一组图一起代码分析一下这个xaml都做了什么。
以下初始化项目时结合Workflow1.xaml 的Program.cs
以下是抛弃了Workflow1.xaml 单干的Program.cs
以下为两个项目的对比:
x:Class="WorkflowConsoleApplicationdDemo.Workflow1" 这这里被生成
这里运行了 new Workflow1,但我们没有去写这个类,交给了Xaml
VS
返回Activity类型
( 可见WorkflowInvoker 类是工作流的运行产所或者说是容器)
Activity的子节点,我们的WriteLine类就这么诞生了。但千万不要和Console.WriteLine()这个方法搞混了!
VS
实例化一个WriteLine对象,并Add到wxwinterWorkflow.Activities中
然后被WorkflowInvoker.Invoke(codeCreateWorkflow());执行了。
以上分析了xaml与代码方式运行工作流的应用程序。
下面再来一个xaml与设计界面的对比图结束本文。
VS
后序
学习技术最好能知道跟多的内部实现,因为这是一种自我的提高。
微软的技术人员,其它开源项目的开发者都是技术n方与我的人。
希望在他们做的项目中学到更多解决问题的方案。
xaml文件让我看到了一个用xml文件编写的代码。然后借助设计器分析xaml进行可视化开发。实在是太神奇了!