WF 快速入门
WF(Windows Workflow Foundation ,中文译为:Windows工作流基础)是一种基于更高级抽象概念的编程语言,适合于实现业务流程。虽然可以通过使用图形化的工具(Workflow Designer)来创建WF程序,但是开发人员可以通过XAML(Extensible Application Markup Language,可扩展应用程序标记语言),以便充分利用WF所提供的各项功能。
工作流,大家都不陌生,在OA系统当中,就广泛应用了这个技术。出于战略的考虑,微软也在.NET Framework当中集成了这一技术,但是相比较其它的系统(比如K2),WF还是比较弱一点,但是这丝毫不影响我们学习工作流技术。而且它可以与WCF等技术无缝的结合起来,开发基于分布式应用服务的工作流应用系统。可以想见,未来工作流系统开发必定会火,不仅仅应用在审批流程等方面,可以广泛的应用在各种业务系统当中。
我们先上一个hello world的示例。
在VS2012中默认集成安装了Workflow模块,点击进去可以看到:
我们选择工作流控制台应用程序。
创建好项目后,我们看到,默认为我们打开了workflow.xaml文件,并且提示我们在此处放置活动。
而在左侧的工具箱,列出了所有和工作流相关的工具。比如:控制流、流程图、基元等等。
好,我们演示一下最简单的工作流程序。
首先我们从左侧的工具箱中拖动流程图中的Flowchart(流程图)到workflow.xaml文件的在此处放置活动区域中,会显示一个start节点。
然后继续拖动流程图中的FlowDecision(选择,true or false)到start节点下面区域。再拖动两个Flowchart分别放在FlowDecision的左右两边。
最后放一个基元中的WriteLine(输出)在最下面。并把鼠标放在各自的组件上,找到连接线把这些组件连接起来,如图所示。
按照Flowchart的提示,双击以查看,我们分别进入两个Flowchart组件的内部流程。
拖动工具箱中的基元中的Assign到指定区域,并用连接线与start相连。
然后我们在xaml文件的下面会看到变量、参数、导入这3个选择。我们先在变量中,添加一个boolFlag变量,类型为Boolean,范围为当前的Flowchart,给个默认值为true。
我们再在参数里面添加一个num,方向为输入,参数类型为int,默认值为0。
变量和参数设置好之后,我们在FlowDecision下面的两个Flowchart当中,拖动Assign组件到相应位置,并设置变量boolFlag为true。
另外一个同样拖动一个Assign并设置boolFlag为false。
还有一步操作没完成,就是没有设置Decision的Condition(如果没设置编译不通过,会提示要设置这个Condition),我们右键Flowchart上面的Decision选择属性,然后在Condtion表达式里面设置:num>0。
最后我们在最后的WriteLine组件的Text中,键入:"boolFlag:"+boolFlag.ToString()+"\t num:"+num。目的是输出boolFlag(变量)和num(传入)的值。
OK,至此我们这个简单的流程就画好了。很简单,根据输入参数num的值的不同,会进入不同的分支,设置不同的boolFlag,进行各自的操作。
这时候程序就可以运行了。我们打开Program.cs文件,找到Main函数。将原来的代码修改为:
Workflow1 workflow1 = new Workflow1();
workflow1.num = new InArgument<int>() { Expression = };//给个输入参数num的值,由于>0,按照预期boolFlag应该为true,num为12。
WorkflowInvoker.Invoke(workflow1);
WF 快速入门的更多相关文章
- Web Api 入门实战 (快速入门+工具使用+不依赖IIS)
平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html 屁话我也就不多说了,什么简介的也省了,直接简单概括+demo ...
- SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=》提升)
SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=>提升,5个Demo贯彻全篇,感兴趣的玩才是真的学) 官方demo:http://www.asp.net/si ...
- 前端开发小白必学技能—非关系数据库又像关系数据库的MongoDB快速入门命令(2)
今天给大家道个歉,没有及时更新MongoDB快速入门的下篇,最近有点小忙,在此向博友们致歉.下面我将简单地说一下mongdb的一些基本命令以及我们日常开发过程中的一些问题.mongodb可以为我们提供 ...
- 【第三篇】ASP.NET MVC快速入门之安全策略(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
- 【番外篇】ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
- Mybatis框架 的快速入门
MyBatis 简介 什么是 MyBatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果 ...
- grunt快速入门
快速入门 Grunt和 Grunt 插件是通过 npm 安装并管理的,npm是 Node.js 的包管理器. Grunt 0.4.x 必须配合Node.js >= 0.8.0版本使用.:奇数版本 ...
- 【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
- 【第四篇】ASP.NET MVC快速入门之完整示例(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
随机推荐
- fedora 20 注销
当系统只有一个用户和只有一个桌面环境时,Fedora 20将不会显示Log Out菜单. 如果你确实需要logout,可以通过执行gnome-session-quit命令来logout. 如果你确实需 ...
- Activate、Deactivate 事件 Activate ThrottleEvent;
http://help.adobe.com/zh_CN/as3/mobile/WS4bebcd66a74275c36cfb8137124318eebc6-8000.html Activate.De ...
- slf4j-simple的配置
slf4j-simple是一款日志框架 它既可通过VM arguments来配置也可通过在classpath放置simplelogger.properties文件来配置 通过VM arguments来 ...
- JAMA:Java矩阵包
原文链接:JAMA:Java矩阵包 API文档链接:线性代数Java包 JAMA jama是一个非常好用的java的线性代数软件包.适用于日常编程可能碰到的各种矩阵运算问题,提供了一个优雅的简便的解决 ...
- jQuery Mobile 连接外部连接或切换动画
jQuery Mobile不同网页之间的跳转问题 jQuery Mobile,一个新的手机终端脚本开发库,从名字可以看出,它是基于jQuery:目前支持很多种手机设备,包括IOS/Android/Bl ...
- 10891 - Game of Sum
Problem EGame of SumInput File: e.in Output: Standard Output This is a two player game. Initially th ...
- The method load(Class, Serializable) in the type HibernateTemplate is not applicable for the arguments (Class, int)
引入别人的项目发现利用HibernateTemplate的load的方法报错了.错误提示为: The method load(Class, Serializable) in the type Hibe ...
- 沈逸老师PHP魔鬼特训笔记(2)
一.这一课会学习到几个懒人函数: 1.file_put_contents (PHP 5, PHP 7) file_put_contents — 将一个字符串写入文件 说明 int file_put_c ...
- 安装Laravel之坎坷记述
写这篇文章记录以及分享我安装Laravel框架的一些经验 过程如下: 1.按照官方的描述,第一步是先安装composer来管理依赖=>composer下载传送门 下载之后点击安装,按照提示它需要 ...
- Linux下文件的三个时间(Atime,Mtime,Ctime)
文件的三个时间 我们已经很熟悉windows系统了,那么我们在windows下新建一个文件,我们知道它在保存的时候肯定是会保存一下文件的创建时间之类的信息的,那么我们来看看windows下的一个文件保 ...