CancellationHandlerActivity 活动包含在所有复合活动的子项活动完成执行之前所取消复合活动的清理逻辑。 在WF中比较常见的就是ListenActivity 活动,ConditionedActivityGroup 活动和ParallelActivity活动,可以具有同时执行的多个子分支活动。 在所有子活动完成执行之前,某个特定条件(如到达的消息)可以导致整个活动立即关闭。 然后,父活动取消执行所有未完成的子活动,并调用其相应的 CancellationHandlerActivity 活动,以执行其中定义的清除逻辑。
1.我们就以ParallelActivity为例来说明如何使用该活动,我们新建立一个顺序型工作流项目,工作流设计如下图:
ParallelActivity活动有两个分支,我们在第二个分支中使用ThrowActivity活动抛出一个异常,导致整个工作流终止,此时ParallelActivity的第一个分支会执行取消操作。我们在sequenceActivity1活动中的取消处理程序中添加一个codeCancel活动来编写我们自己的逻辑处理程序,代码如下:
private void codeCancel_ExecuteCode(object sender, EventArgs e) { Console.WriteLine("取消活动执行了"); }
2.sequenceActivity1中的while的条件为true,整个工作流的代码如下:
public sealed partial class ExCancelWorkflow: SequentialWorkflowActivity { public ExCancelWorkflow() { InitializeComponent(); } private void codeCancel_ExecuteCode(object sender, EventArgs e) { Console.WriteLine("取消活动执行了"); } private void whileCon(object sender, ConditionalEventArgs e) { e.Result = true; } private void codeLeft_ExecuteCode(object sender, EventArgs e) { Console.WriteLine("左边活动执行了"); } private void codeRight_ExecuteCode(object sender, EventArgs e) { Console.WriteLine("右边活动执行了"); } }
3.宿主程序的代码如下:
class Program { static void Main(string[] args) { using(WorkflowRuntime workflowRuntime = new WorkflowRuntime()) { AutoResetEvent waitHandle = new AutoResetEvent(false); workflowRuntime.WorkflowCompleted += delegate(object sender, WorkflowCompletedEventArgs e) { waitHandle.Set(); }; workflowRuntime.WorkflowTerminated += delegate(object sender, WorkflowTerminatedEventArgs e) { Console.WriteLine("工作流终止:" + e.Exception.Message); waitHandle.Set(); }; Console.WriteLine("---开始执行工作流---"); WorkflowInstance instance = workflowRuntime.CreateWorkflow(typeof(CaryExceptionDemo.ExCancelWorkflow)); instance.Start(); waitHandle.WaitOne(); Console.WriteLine("---第一个工作流执行结束---"); Console.WriteLine(); } } } 4.执行结果如下:
发表评论
-
平淡的2007
2007-12-24 08:04 816早上起来,送女朋友去公交车站,然后回来赶紧打开电脑,先 ... -
DreamSpark发布,高校学生免费使用Visual Studio 2008 Professional Edition 等微软软件
2008-02-20 13:23 1414今天上网无意中搜索到学生可以免费使用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 928当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 837本文主要说说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 691[置顶]坚持学习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 ...
相关推荐
坚持学习WF(1):从HelloWorld开始 本文主要通过实现了一个可以接受参数...坚持学习WF(25):取消容器(CancellationHandlerActivity) 说明了WF如果捕获和处理异常,并介绍了CancellationHandlerActivity活动的基本使用。
坚持学习WF(1):从HelloWorld开始 本文主要通过实现了一个可以接受参数的HelloWorld程序来了解WF。 坚持学习WF(2):WF创作模式和设计时工具 坚持学习WF(3):WF框架概览 2.3两篇主要全面的阐述了WF框架和Visual ...
坚持学习WF(1):从HelloWorld开始 ... 坚持学习WF(24):WF中的异常处理 坚持学习WF(25):取消容器(CancellationHandlerActivity) 说明了WF如果捕获和处理异常,并介绍了CancellationHandlerActivity活动的基本使用。 .
在本篇“坚持学习WF(1):从HelloWorld开始”的源码分析中,我们将深入理解WF的基础知识和创建第一个工作流的步骤。 首先,让我们了解WF的基本概念。WF提供了一种模型化业务流程的方式,通过活动(Activities)来表示...
在Windows Workflow Foundation (WF)中,自定义活动(CustomActivity)是开发人员根据特定业务需求创建的自定义...通过对`CaryActivity`源码的学习和分析,我们可以更好地理解WF的工作原理,提高我们的工作流开发能力。
自定义容器活动是在WF4中创建自己的复合活动,可以包含其他活动,类似于在流程图中使用一个形状来封装多个子步骤。下面我们将深入探讨如何实现WF4自定义容器活动,并在自定义活动中添加其他活动。 一、理解WF4...
"坚持学习WF(12)使用EventHandlingScopeActivity活动"更进一步,专门讲解EventHandlingScopeActivity,这是一种处理多个事件的容器活动。 "坚持学习WF(15)状态机工作流"介绍了状态机模型,这是一种常见于状态变化...
### 关于《Apress - Beginning WF: Windows Workflow in .NET 4.0》的知识点解析 #### 一、概述 本书《Beginning WF: Windows Workflow in .NET 4.0》是一本详细介绍如何在.NET 4.0环境中使用Windows Workflow ...
Beginning WF: Windows Workflow in .NET 4.0 By Mark Collins Publisher: Apress 2010 | 500 Pages | ISBN: 1430224851 | PDF | 4 MB Windows Workflow Foundation is a ground-breaking addition to the core ...
9. **WF的挑战与最佳实践**:尽管WF提供了强大的工作流支持,但理解和应用WF需要一定的学习曲线。最佳实践包括合理设计活动结构、充分利用持久化机制以及适当地使用跟踪和诊断功能。 通过深入学习WF工作流,开发者...
根据提供的文件信息,本书《Pro WF: Windows Workflow in .NET 3.0》由Bruce Bukovics撰写,是一...通过学习本书,读者不仅可以掌握WF的核心概念和技术要点,还能了解到如何将其应用于实际项目中,解决复杂的业务问题。
《Pro WF:Windows Workflow in .NET 3.5》是一本深入探讨Windows Workflow Foundation (WF) 技术的专业书籍,该技术是微软.NET Framework 3.5中的一个重要组成部分。WF提供了一种在应用程序中实现工作流逻辑的方式...
通过学习本书,读者将能够深入了解WF的核心概念和技术细节,掌握如何设计、实现和优化工作流应用,从而提高软件项目的质量和效率。无论是初学者还是有经验的开发者,都能从这本书中获得宝贵的见解和实用的技能。
WF40 实战:实现自动访问网站机器人 本文介绍了使用 WF4.0 实现自动访问网站机器人的方法,通过四个流程,实现机器人登录、机器人回帖、机器人推荐文章、机器人定时回帖和机器人定时推荐文章等功能。文章还提供了...
"WF学习从入门到提高"的主题涵盖了从基础知识到高级技巧的全面学习路径,适合对WF感兴趣或需要在工作中应用WF技术的初学者和进阶者。 在WF的学习过程中,首先要理解的是WF的基本概念。WF提供了一种模型化的方式来...
本章将带你入门WF,了解其基本概念、设计原则以及如何通过源代码下载进行学习。 WF的核心概念包括活动(Activity)、工作流(Workflow)、运行时(Runtime)和持久化(Persistence)。活动是WF中最基本的构建块,它...
总之,《Pro.WF.Windows.Workflow.in.NET.4.0》的配套代码库为学习和掌握WF提供了宝贵的资源,通过实践和调试这些代码,读者可以深化对WF的理解,从而在.NET开发中充分利用WF来构建高效、灵活的业务流程系统。