1.WF3.5中主要使用FaultHandlerActivity来模拟TryCatch捕获异常,现在从WF4.0 beta1来看工具箱中已经没有了FaultHandlerActivity活动,顺序工作流也没有了错误处理视图,取而代之出现了Try/Catch,Catch<T>,Thorw活动,本文就介绍下这几个活动。关于WF3.5中对异常的处理方式,可以参考下文:http://www.cnblogs.com/carysun/archive/2008/10/18/WFException.html
2.我们依然使用顺序工作流模板,我们完成这样一个工作流,工作流的输入参数为UserName,输出参数为Greeting,工作流中会根据输入参数的不同而输出不同的信息,我们要处理的异常就是如果工作流没有提供输入的情况下。
3.工作流的参数如下:
UserName输入参数,Greeting输出参数,如下。
4.给做工作增加一个变量FirstWord.注意变量是有作用域的,即他的Scope属性。
5.下面我们看整个工作流的逻辑,工作流上面是try catch,下面是Assign,Assign将Greeting的值设置为FirstWord+“,”+UserName,如下图:
trycatch就是我们的逻辑部分。Try中就是我们要执行的程序,catches中捕获异常并处理,
6.我们先来看下Try中逻辑,我们根据工作流的输入参数UserName来判断其长度其否为偶数,来设置变量FirstWord的值,如下:
7.在Catches中我们来处理捕获到得异常,这个部分我们可以拖入多个Catch<T>活动,左边为异常类型,右边为相应处理的Action,拖入catch<T>会自动出现如下对话框选择异常类型。如下图:
这个例子中我们捕获异常后的处理方式是将异常再次抛出,我们加入一个Throw活动,并设置其Exception属性。如下图:
8.工作流的部分我们就完成了,下面是宿主程序:
class Program { static voidMain(string[] args) { AutoResetEvent syncEvent = newAutoResetEvent(false); Console.Write("Enter your name: "); stringuserName = Console.ReadLine(); stringgreeting = null; Dictionary<string, object> input = newDictionary<string, object>(); input.Add("UserName", userName); WorkflowInstance myInstance;
if(string.IsNullOrEmpty(userName)) { myInstance = newWorkflowInstance(newSequence1()); } else {
myInstance = newWorkflowInstance(newSequence1(), input); }
myInstance.OnCompleted = delegate(WorkflowCompletedEventArgs e) { if(e.CompletionState == ActivityInstanceState.Closed) { greeting = e.Outputs["Greeting"].ToString(); } else { Console.WriteLine("Workflow CompletionState is {0}", e.CompletionState); Console.ReadLine(); } syncEvent.Set(); }; myInstance.OnUnhandledException = delegate(WorkflowUnhandledExceptionEventArgs e) { Console.WriteLine(e.UnhandledException.ToString()); returnUnhandledExceptionAction.Terminate; }; myInstance.OnAborted = delegate(WorkflowAbortedEventArgs e)
{ Console.WriteLine(e.Reason); syncEvent.Set(); }; myInstance.Run(); syncEvent.WaitOne(); Console.WriteLine(greeting); Console.ReadLine(); } }
不论工作流是否发生异常都会执行OnCompleted事件,只不过e.CompletionState不同,有异常的时候为Fault,正常为Closed。
工作流也可以使用WorkflowInstance的OnUnhandledException事件来处理在TryCatch中没有处理的异常。
[TestMethod] public void IfElseHelloWorldTest() { Dictionary<string, object> input = new Dictionary<string, object>(); { { "UserName", "Cary" } }; var output = WorkflowInvoker.Invoke(new CaryWFDemo.Sequence1(), input); Assert.AreEqual("Hello,Cary", output["Greeting"]); } [TestMethod] [ExpectedException(typeof(ArgumentNullException))] public void ShouldHandleNullUserName() { WorkflowInvoker.Invoke(new CaryWFDemo.Sequence1()); }
发表评论
-
平淡的2007
2007-12-24 08:04 817早上起来,送女朋友去公交车站,然后回来赶紧打开电脑,先 ... -
DreamSpark发布,高校学生免费使用Visual Studio 2008 Professional Edition 等微软软件
2008-02-20 13:23 1416今天上网无意中搜索到学生可以免费使用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 836Features 是MOSS 2007以开箱即用的一套新功能, ... -
MOSS点滴(2):自定义Application Page
2008-04-19 20:07 845在MOSS中后台管理的页面都是Application Pag ... -
坚持学习WF(6):开发可复用的宿主程序
2008-04-21 21:45 696我们之前写工作流宿主 ... -
MOSS点滴(3):说说MOSS中的母版页
2008-04-25 21:15 1189MOSS中有两种页面: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 736[置顶]坚持学习WF文章索引 WF 提供的通信模型是构建于 ... -
MOSS中创建自定义内容类型
2008-06-12 20:23 1107一:简要介绍 某类内容 ... -
.NET中IDisposable接口的基本使用
2008-06-15 12:01 950首先来看MSDN中关于这个接口的说明: [ComVisible ...
相关推荐
在这个“WF4.0 Beta1之旅(3)”中,我们将聚焦于FlowChart工作流模型的源码分析,这为我们提供了更深入理解WF4.0的工作方式和设计思想的机会。 FlowChart工作流模型是一种图形化的编程模型,它通过节点(如决策、...
2. **自定义活动**: 如果预定义的活动不能满足需求,你可以创建自定义活动,扩展WF4.0的功能。 3. **配置服务**: 如果工作流需要作为WCF服务运行,你需要配置相应的服务宿主和终结点。 4. **调试与测试**: 利用VS...
2. **数据绑定与变量**:WF4.0支持数据绑定,使活动能够与外部数据源交互。实例可能展示了如何使用变量来存储和传递数据,以及如何在活动中使用表达式来处理数据。 3. **工作流服务**:WF4.0集成了WCF(Windows ...
当用户在ASP.NET客户端选择Pizza类型和数量后,数据会被发送到WF4.0服务进行处理,包括查询价格、计算总价,然后返回给客户端,用户确认后,WF4.0服务会记录订单信息。 实现WF4.0服务的关键在于定义业务流程。这里...
AppFabric Caching Services,最初被称为“Velocity”,是一个分布式缓存系统,它的主要功能是加速频繁访问数据的处理速度。这一服务通过缓存客户端与缓存服务器群集进行交互,客户端可以在群集中存储和检索数据,而...
WF4.0,全称Windows Workflow Foundation 4.0,是微软.NET Framework 4.0中的一个关键组件,用于构建业务流程和工作流应用程序。这个网络教程包含了丰富的资源和示例代码,旨在帮助开发者深入理解和掌握WF4.0的核心...
1. **WF4.0基础知识**:了解WF4.0的核心概念,如活动、工作流实例、触发器、变量和数据绑定。 2. **状态机工作流**:掌握状态机工作流的结构和设计原则,包括初始状态、最终状态、状态转换和事件触发。 3. **...
ASP.NET + WF4.0(Windows Workflow Foundation 4.0)数据持久化请假系统Demo是一个综合性的项目,展示了如何在Web应用中结合WF4.0技术处理业务流程,特别是请假申请这一具体场景。这个系统利用了ASP.NET作为前端...
WF 4.0,全称为Windows Workflow Foundation 4.0,是微软.NET Framework 4.0中的一个核心组件,用于构建工作流驱动的应用程序。它提供了强大的工具和框架,允许开发者设计、执行和管理复杂的业务流程。Activity ...
1. **活动(Activity)**:这是WF 4.0的基本构建块,表示工作流中的一个操作或任务。可以是内置的简单动作,如赋值、条件判断,也可以是自定义的复杂逻辑。 2. **工作流(Workflow)**:由一系列活动组成,描述了...
WF4.0(Windows Workflow Foundation 4.0)是微软.NET Framework 4.0中引入的一个框架,用于构建和管理工作流应用。WF4.0提供了全新的架构和设计,简化了工作流的开发过程,提高了可维护性和灵活性。在本学习笔记中...
1. **CLR(Common Language Runtime)**:.NET Framework的核心组成部分,它提供了内存管理、类型安全、异常处理和安全性等服务。在4.0版本中,CLR进行了优化,提高了应用程序的启动速度和运行时性能。 2. **C# 4.0...
wf4.0应用asp.net 这个示例将包括WF4.0的大部分知识点。包括: 1、持久化服务 2、跟踪服务 3、自定义扩展 4、WCF Workflow Service 5、WorkflowServiceHost 6、使用Interop活动去调用WF3.0工作流程
2. **持久化**:WF4.0支持在流程执行过程中保存和恢复状态,这意味着流程可以在任意时刻停止,并在稍后继续,这对于处理长时间运行的流程非常有用。 3. **规则引擎**:WF4.0集成了规则引擎,允许开发者在工作流中...
[Pro.ENGINEER.Wildfire.4.0多国语言正式版].ProE_WF4.0_crack.rar
1. **活动(Activities)**:WF4.0的核心元素是活动,它们代表了工作流中的操作或决策。活动可以是简单的原子操作,如赋值或条件判断,也可以是复杂的组合,将多个活动打包在一起。 2. **工作流设计(Workflow ...
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 [出版...
1. **WF4.0基本概念**:理解活动(Activity)、工作流(Workflow)、执行宿主(Host)等核心概念。活动是工作流的基本构建块,它们组合起来形成复杂的工作流程。 2. **WPF(Windows Presentation Foundation)**:...