编程编的越久就发现自己以前的语文真的没学好,写个随笔取个名字都需要思考半天,以前工作的时候只是听说过工作流,知道的范围仅限于工作流在OA审批流程中用的比较多,现在自己实实在在的用工作流也做过不少项目,对工作流的理解也比原来更深入一点,由于公司一直都是做工作流开发,所以自己在学习的过程中少走了不少的弯路,自己有的时候时候在网上寻找这方面的文章要么是零零碎碎的,要么就是各种Copy换名字去链接之类的文章,实在不敢恭维,先就自己对工作流的理解写点个人的建议。
工作流(WorkFlow)发展史
WF的全称是Windows Workflow Foundation,微软在2004年推出了一个WinFx CTP版的开发包,在WinFX中提供了三个内容: Avalon(阿瓦隆同音), Indigo(英迪格同音), WinOE(注意这里不是WinPE),05年的时候微软推出了WinFx Beta1(VS2005 β2支持winFX开发的扩展),之后微软又推出了WinFx Beta2,不过遗憾的在Beta2之后就没有了然后,WinFX在2006年以Net 3.0 的方式正式发布了在NET 3.0 中:
Avalon成为了Windows Presentation Foundation 简称为WPF;Indigo成为了 Windows Communication Foundation 简称为WCF;WinOE 成为了 Windows Workflow Foundation 简称为WWF,之后微软基于WPF推出了WFP/E, WFP/E就是Silverlight的前身.
先来看一个问题,为什么现在大家都说的是WF而不是WWF,首先WWF同名的太多了,其中比较著名的包括世界自然基金会(World Wild Fund for Nature),还有一个之前的世界摔跤联盟(World Wrestling Federation)不过在微软推出WWF之前就已经改名WWE(World Wrestling Entertainment),其次还有一个原因属于叠字的原因WWF,一个技术框架的简称这么念总是有点不好(有可能是我先入为主,个人推测).
工作流的功能
WPF,WCF,WWF(简称3W),这三个哥们一直在一起也不是没有道理的,微软当时想的是WPF(silverlight)用于程序UI的展现,WCF用于程序通信,WF用于程序的逻辑控制,这种思想在微软提出WinFX到现在的NET3.x再到NET4.0都得到了很好的体现。工作流(Workflow)是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。工作流建模,即将工作流程中的工作如何前后组织在一起的逻辑和规则,可以通过恰当的模型展现出业务的需求。工作流要解决的主要问题是:为实现某个业务目标,利用计算机在多个参与者之间按某种预定规则自动传递文档、信息或者任务。应用行业:消费品行业,制造业,电信服务业,银证险等金融服务业,物流服务业,物业服务业,物业管理,大中型进出口贸易公司,政府事业机构,研究院所及教育服务业等,特别是大的跨国企业和集团公司。(其他方面还有很多,就简单描述一下,详情可搜索之)
Demo
首先我们来看一个简单的遍历字符串的代码:
1
2
3
4
5
6
|
string[] strList =
new
string[3] {
"sfm"
,
"keso"
,
"FlyElephant"
};
foreach (
var
item
in
strList)
{
Console.WriteLine(
"Name:"
+ item);
}
Console.Read();
|
通过工作流的方面实现以上代码(VS2012):
1.首先新建一个控制台项目;
2.在项目右击添加新项:
3.新建一个集成自CodeActivity名为PersonNameActivity类:
1
2
3
4
5
6
7
8
9
|
public
sealed
class
PersonNameActivity : CodeActivity
{
public
OutArgument<
string
[]> personName {
get
;
set
; }
protected
override
void
Execute(CodeActivityContext context)
{
string
[] strList =
new
string
[3] {
"sfm"
,
"keso"
,
"FlyElephant"
};
context.SetValue(
this
.personName, strList);
}
}
|
4.重新生成一下解决方案,然后打开Foreach.xaml,从工具箱中拖一个Sequence过来,再将PersonNameActivity拖过来:
4.将PersonName的值赋值给list:,然后从工具箱控制流拖一个Foreach过来:
5.从基元中拖一个Writeline过来,设置输出
6.控制台调用:
1
|
WorkflowInvoker.Invoke(
new
Foreach());
|
本来想写工作中用到的工作流的,不过发现公司那一趟要真的写起来还是挺费劲的,之前自己学习的时候也看过不少文章,有的理论的,有的是实战的,写的有点综合吧,这篇文章看起来很简单,不过没接触的过应该不算接触,其中Activity,变量和参数,Sequence可能都不是很了解,可能还不是很到位,这个小Demo可以自己玩下,有时间希望自己能补上一些关于基础的博客.
本文转自Fly_Elephant博客园博客,原文链接:http://www.cnblogs.com/xiaofeixiang/p/3952531.html,如需转载请自行联系原作者