一:FlowChart的介绍
FlowChart是WF4.0中引入的一种全新的工作流模式,它在 Sequential 和 StateMachine 流控制模型之间提供了一个不错的折中方案。FlowChart 允许
您使用一种分步方法,它可以实现一些简单的决策和转换功能,但它也允许在工作流中返回先前的活动。对许多用户而言,流程图通常看起来更为直观。
在Visual Studio 2010 Beta1中的WF工具箱中有如下与FlowChart相关的活动:
FlowChart实际上是包含一个flow nodes的集合,这些flow node是继承自FlowNode类的,每个Flow node可以包含多个子活动。FlowChart中的对流转
的控制主要有FlowStep,FlowDecision,FlowSwitch,FlowStep就是在FlowChart中连接两个活动的线,他们都有一个Action属性和Next属性。Action
属性用于执行自活动的,Next属性用于指定下一个要执行的元素。FlowSwitch类似C#中Switch语句的功能,FlowDecision相当于IF-Else的功能,FlowChart
也是一个活动,在FlowChart的工作流中我们也可以嵌入FlowChart活动,本文我们会使用FlowChart的这三个活动来开发一个简单的猜数字游戏来认识WF4
中添加的全新的FlowChart工作流。
二:自定义活动的开发
在开发我们的工作流之前,我们需要先准备几个自定义活动,关于自定义活动的开发我们会后文细说。
1.ReadKey:读取控制台的输入的字符,并返回,代码如下:
namespace CaryGuessGame { public class ReadKey : CodeActivity<char> { protected override void Execute(CodeActivityContext context) { Result.Set(context, Console.ReadKey(true).KeyChar); } } }
2.ReadInt:读取控制台输入转换为整数值,并返回,代码如下:
namespace CaryGuessGame { public class ReadInt : NativeActivity<int> { InArgument<string> bookmarkName; public ReadInt() : base() { } public ReadInt(string bookmarkName) : this() { this.BookmarkName = bookmarkName; } public InArgument<string> BookmarkName { get { return this.bookmarkName; } set { ThrowIfOpen(); this.bookmarkName = value; } } protected override void Execute(ActivityExecutionContext context) { context.CreateNamedBookmark(BookmarkName.Get(context), new BookmarkCallback(OnReadComplete)); } void OnReadComplete(ActivityExecutionContext context, Bookmark bookmark, object state) { int Guess = Convert.ToInt32(state); this.Result.Set(context, Guess); } } }
3.Prompt.xaml
项目右键添加新项,使用WorkflowInstance=》Activity模板,
3.1.活动参数:
Name:BookmarkName Direction:In Argument Type:String
Name:Result Direction:out Argument Type:Int32
Name:Text Direction:In Argument Type:String
3.2.向Prompt.xaml中拖入一个Sequence活动,然后在Sequence活动中拖入一个WriteLine活动,并将WriteLine活动的Text属性绑定到Text参数。
在WriteLine活动下边拖入我们刚才开发的ReadInt,绑定ReadInt的BookmarkName和Result属性到参数BookmarkName和Result。
这样这个活动就完成了,如下图:
三:工作流设计
1. 工作流的变量和参数
变量:Name:Choice Type:Char Scope:FlowChart
参数:Name:MaxNumber Direction In Type:Int32
Name:Turns Direction out Type:Int32
2. 工作流设计
下面是工作流的设计,我们会使用FlowSwitch活动来让用户做不同的选择,a为游戏说明,b为开始游戏,c为退出。选择a的时候会有游戏的相关说明之
后我们将流程回退到用户选择部分,让用户从新选择相关功能。选c就结束工作流。选b就开始游戏,即下图中flowchart活动的部分,这部分主要说明
FlowSwitch活动的使用。具体看下面的图:
上面的FlowChart中在FlowSwitch活动的一个分支包含了一个FlowChart活动,该活动内部是猜数字游戏的逻辑部分,下面的变量只在这个flowChart的
Scope内可见:
变量:Name:Target type:Int32 Scope:FlowChart
Name:Guess type:Int32 Scope:FlowChart
FlowChart中的设计如下图:
这个图中就是实现我们猜数字逻辑的部分,这里有两个FlowDecision,第一判断是否猜对了,如果猜对了流程就结束了,如果猜错了就会提示用户是猜大了
还是小了,让流程回退,用户重新猜.
四:宿主程序
class Program { static void Main(string[] args) { AutoResetEvent syncEvent = new AutoResetEvent(false); var wfparams = new Dictionary<string, object>() { { "MaxNumber", 50 } }; WorkflowInstance myInstance = new WorkflowInstance(new Flowchart1(), wfparams); myInstance.OnCompleted = delegate(WorkflowCompletedEventArgs e) { int Turns = Convert.ToInt32(e.Outputs["Turns"]); if (Turns != 0) { Console.WriteLine("恭喜您猜对了,次数{0}", Turns); } syncEvent.Set(); }; myInstance.OnAborted = delegate(WorkflowAbortedEventArgs e) { Console.WriteLine(e.Reason); syncEvent.Set(); }; myInstance.OnUnhandledException = delegate(WorkflowUnhandledExceptionEventArgs e) { Console.WriteLine(e.UnhandledException.ToString()); return UnhandledExceptionAction.Terminate; }; myInstance.Run(); //syncEvent.WaitOne(); while (!syncEvent.WaitOne(10, false)) { if (myInstance.GetAllBookmarks().Count > 0) { bool validEntry = false; while (!validEntry) { int Guess; if (!Int32.TryParse(Console.ReadLine(), out Guess)) { Console.WriteLine("Please enter an integer."); } else { validEntry = true; myInstance.ResumeBookmark("EnterGuess", Guess); } } } } } }
五:运行结果如下
六:相关文章
WF4.0 Beta1之旅(1):基本介绍
WF4.0 Beta1之旅(2):异常处理
代码下载:CaryGuessGame.rar
发表评论
-
平淡的2007
2007-12-24 08:04 817早上起来,送女朋友去公交车站,然后回来赶紧打开电脑,先 ... -
DreamSpark发布,高校学生免费使用Visual Studio 2008 Professional Edition 等微软软件
2008-02-20 13:23 1415今天上网无意中搜索到学生可以免费使用VS2008专业版,后来又 ... -
坚持学习WF(1):从HelloWorld开始
2008-04-04 16:30 892[置顶]坚持学习WF文章索 ... -
坚持学习WF(2):WF创作模式和设计时工具
2008-04-05 17:19 639[置顶]坚持学习WF文章索 ... -
坚持学习WF(3):WF框架概览
2008-04-08 07:27 783[置顶]坚持学习WF文章索 ... -
坚持学习WF(4):活动(Activity)和依赖属性(DependencyProperty)
2008-04-12 00:01 1148[置顶]坚持学习WF文章索引 活动(Activity) 活动 ... -
坚持学习WF(5):自定义活动(CustomActivity)
2008-04-13 15:25 929当WF提供的标准活动不能满足我们的需求的时候,我们就需要定义自 ... -
MOSS点滴(1):如何开发和部署feature
2008-04-16 21:35 835Features 是MOSS 2007以开箱即用的一套新功能, ... -
MOSS点滴(2):自定义Application Page
2008-04-19 20:07 844在MOSS中后台管理的页面都是Application Pag ... -
坚持学习WF(6):开发可复用的宿主程序
2008-04-21 21:45 695我们之前写工作流宿主 ... -
MOSS点滴(3):说说MOSS中的母版页
2008-04-25 21:15 1187MOSS中有两种页面:Site P ... -
MOSS点滴(4):实现Form认证
2008-04-29 21:12 705本文主要参考了网上的一些文章,但有些文章有些地方说的不是很明确 ... -
坚持学习WF(7):流程控制(Flow Control)
2008-04-30 18:10 839本文主要说说WF中和流 ... -
坚持学习WF(8):本地服务之调用外部方法
2008-05-09 08:17 761WF提供了一组核心服务 ... -
MOSS中的WebPart开发
2008-05-10 13:53 1060由于在asp.net1.1的时候asp.net中还没有webp ... -
坚持学习WF(9):本地服务之事件处理
2008-05-28 07:49 800[置顶]坚持学习WF文章索引 一:先来介绍两个活动 Even ... -
坚持学习WF(10):在工作流中使用关联
2008-06-01 13:03 692[置顶]坚持学习WF文章索 ... -
坚持学习WF(11):工作流通信与队列
2008-06-07 15:45 735[置顶]坚持学习WF文章索引 WF 提供的通信模型是构建于 ... -
MOSS中创建自定义内容类型
2008-06-12 20:23 1106一:简要介绍 某类内容 ... -
.NET中IDisposable接口的基本使用
2008-06-15 12:01 950首先来看MSDN中关于这个接口的说明: [ComVisible ...
相关推荐
在这个“WF4.0 Beta1之旅(3)”中,我们将聚焦于FlowChart工作流模型的源码分析,这为我们提供了更深入理解WF4.0的工作方式和设计思想的机会。 FlowChart工作流模型是一种图形化的编程模型,它通过节点(如决策、...
WF4.0,全称Windows Workflow Foundation 4.0,是微软.NET Framework 4.0中的一个组件,用于构建业务流程应用。这个“WF4.0入门系列(五)”很可能是系列教程的一部分,旨在帮助初学者理解并掌握WF4.0的基础知识和...
3. **工作流服务**:WF4.0集成了WCF(Windows Communication Foundation),使得工作流可以作为服务对外提供。实例代码可能会涵盖如何创建和使用工作流服务,以及如何与其他服务进行交互。 4. **持久化与恢复**:WF...
【Windows Server AppFabric 与 WF4.0 应用程序宿主】 Windows Server AppFabric 是微软推出的一个中间件平台,它提供了对分布式应用程序的支持,尤其是针对Windows Workflow Foundation (WF4.0) 和 WCF(Windows ...
AppFabric Hosting Services 则专注于简化WCF(Windows Communication Foundation)服务的管理和运行,尤其是与WF(Windows Workflow Foundation)服务配合的情况。它提供了一个框架,使得在AppFabric环境中托管和...
WF4.0,全称Windows Workflow Foundation 4.0,是微软.NET Framework 4.0中的一个关键组件,用于构建业务流程和工作流应用程序。这个网络教程包含了丰富的资源和示例代码,旨在帮助开发者深入理解和掌握WF4.0的核心...
WF 4.0引入了全新的模型,包括基于活动的工作流设计、表达式支持、数据绑定以及更好的运行时性能。活动是WF 4.0的基本构建块,它们可以代表单个任务或者更复杂的工作流逻辑。开发者可以使用内置的活动库,也可以...
1. **WF4.0基础知识**:了解WF4.0的核心概念,如活动、工作流实例、触发器、变量和数据绑定。 2. **状态机工作流**:掌握状态机工作流的结构和设计原则,包括初始状态、最终状态、状态转换和事件触发。 3. **...
ASP.NET + WF4.0(Windows Workflow Foundation 4.0)数据持久化请假系统Demo是一个综合性的项目,展示了如何在Web应用中结合WF4.0技术处理业务流程,特别是请假申请这一具体场景。这个系统利用了ASP.NET作为前端...
WF4.0提供了全新的架构和设计,简化了工作流的开发过程,提高了可维护性和灵活性。在本学习笔记中,我们将探讨WF4.0的基础知识,包括如何开始使用WF4.0、活动(Activity)的介绍以及`WriteLine`活动的使用。 首先,...
1. **活动(Activity)**:这是WF 4.0的基本构建块,表示工作流中的一个操作或任务。可以是内置的简单动作,如赋值、条件判断,也可以是自定义的复杂逻辑。 2. **工作流(Workflow)**:由一系列活动组成,描述了...
1. WF4.0 的架构:WF4.0 的架构包括 Activity、Flowchart、State Machine 等多种组件。 2. Activity 设计:Activity 设计是 WF4.0 的核心内容,包括创建 Activity、设置 Activity 的属性、编写代码来实现逻辑控制。...
wf4.0应用asp.net 这个示例将包括WF4.0的大部分知识点。包括: 1、持久化服务 2、跟踪服务 3、自定义扩展 4、WCF Workflow Service 5、WorkflowServiceHost 6、使用Interop活动去调用WF3.0工作流程
.NET Framework 4.0 Beta 1是微软发布的一个重要的软件开发平台,用于构建、运行基于Windows操作系统的应用程序。这个版本的.NET Framework引入了许多新特性和改进,旨在提高开发者的工作效率和应用程序的性能。以下...
WF4.0引入了全新的设计,简化了API,提高了性能,并增强了可扩展性。以下是WF4.0的一些关键知识点: 1. **活动(Activities)**:WF4.0的核心元素是活动,它们代表了工作流中的操作或决策。活动可以是简单的原子...
[Pro.ENGINEER.Wildfire.4.0多国语言正式版].ProE_WF4.0_crack.rar
WF4.0,全称Windows Workflow Foundation 4.0,是微软.NET Framework 4.0中的一个组件,用于构建业务流程应用程序。这个源码包显然提供了关于如何设计和实现WF4.0工作流的详细示例。工作流是定义、执行和管理一系列...
WF4.0,全称Windows Workflow Foundation 4.0,是微软.NET Framework 4.0中引入的一个工作流框架,用于构建和执行流程化的应用程序。本篇将深入讲解WF4.0的基础知识,并以VS2012和C#为开发环境进行实战演示。 在WF...
[Packt Publishing] WF 4.0 经典实例 (英文版) [Packt Publishing] Microsoft Windows Workflow Foundation 4.0 Cookbook (E-Book) ☆ 出版信息:☆ [作者信息] Andrew Zhu [出版机构] Packt Publishing [出版...