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快速入门之安全策 ...
随机推荐
- mysqldump原理1
- 熟练掌握HDFS的Shell访问
HDFS设计的主要目的是对海量数据进行存储,也就是说在其上能够存储很大量文件 (可以存储TB级的文件).HDFS将这些文件分割之后,存储在不同的DataNode上, HDFS 提供了两种访问接口:Sh ...
- C#_自动化测试3_controll IE
目前市面上有很多Web UI自动化测试框架,比如WatiN, Selinimu,WebDriver,还有VS2010中的Coded UI等等. 这些框架都可以操作Web中的控件,模拟用户输入,点击等 ...
- (转)Windows7 64位系统搭建Cocos2d-x 2.2.1最新版以及Android交叉编译环境(详细教程) .
声明:本教程在参考了以下博文,并经过自己的摸索后实际操作得出,本教程系本人原创,由于升级后的cocos2d-x有了一些变化,目前的博文还没有关于Cocos2d-x 2.2.1最新版搭建Android交 ...
- 浅谈xss攻击
近期学习过程中提到xss攻击的问题,便想要了解一下,总结如下: XSS攻击:跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, ...
- vs2010 MFC执行流程
从大学时候学过到现在可能又要用到,搞这个东西真是痛苦.不过首先把繁琐的c++函数执行流程搞明白吧,好好多设置几个断点观测一下啦. Step1.在vs2010新建MFC工程,那么对应的代码页名字为:CS ...
- linux别名
alias: alias cdn ='cd /opt/lammp' [root@besttest /]# cdn[root@besttest lampp]# 如果想永久生效写进root/.bash ...
- HDU 1003 - Max Sum(难度:*)
Problem Description Given a sequence a[1],a[2],a[3]......a[n], your job is to calculate the max sum ...
- java下实现调用oracle的存储过程和函数
在Oracle下创建一个test的账户,然后 1.创建表:STOCK_PRICES --创建表格 CREATE TABLE STOCK_PRICES( RIC VARCHAR() PRIMARY KE ...
- [Yii2]Unable to verify your data submission(你提交的资料无法被验证)
Yii2中,使用form提交数据,会提示: [yii\web\HttpException:400] exception 'yii\web\BadRequestHttpException' with m ...