`

坚持学习WF(25):取消容器(CancellationHandlerActivity)

阅读更多

[置顶]坚持学习WF文章索引

CancellationHandlerActivity 活动包含在所有复合活动的子项活动完成执行之前所取消复合活动的清理逻辑。 在WF中比较常见的就是ListenActivity 活动,ConditionedActivityGroup 活动和ParallelActivity活动,可以具有同时执行的多个子分支活动。 在所有子活动完成执行之前,某个特定条件(如到达的消息)可以导致整个活动立即关闭。 然后,父活动取消执行所有未完成的子活动,并调用其相应的 CancellationHandlerActivity 活动,以执行其中定义的清除逻辑。

1.我们就以ParallelActivity为例来说明如何使用该活动,我们新建立一个顺序型工作流项目,工作流设计如下图:

cancel1

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.执行结果如下:
cancel2 

分享到:
评论

相关推荐

    坚持学习WF,WF学习教程

    坚持学习WF(1):从HelloWorld开始 本文主要通过实现了一个可以接受参数...坚持学习WF(25):取消容器(CancellationHandlerActivity) 说明了WF如果捕获和处理异常,并介绍了CancellationHandlerActivity活动的基本使用。

    WF教程_坚持学习WF

    坚持学习WF(1):从HelloWorld开始 本文主要通过实现了一个可以接受参数的HelloWorld程序来了解WF。 坚持学习WF(2):WF创作模式和设计时工具 坚持学习WF(3):WF框架概览 2.3两篇主要全面的阐述了WF框架和Visual ...

    坚持学习WF

    坚持学习WF(1):从HelloWorld开始 ... 坚持学习WF(24):WF中的异常处理 坚持学习WF(25):取消容器(CancellationHandlerActivity) 说明了WF如果捕获和处理异常,并介绍了CancellationHandlerActivity活动的基本使用。 .

    坚持学习WF(1):从HelloWorld开始 源码

    在本篇“坚持学习WF(1):从HelloWorld开始”的源码分析中,我们将深入理解WF的基础知识和创建第一个工作流的步骤。 首先,让我们了解WF的基本概念。WF提供了一种模型化业务流程的方式,通过活动(Activities)来表示...

    坚持学习WF(5):自定义活动(CustomActivity) 源码

    在Windows Workflow Foundation (WF)中,自定义活动(CustomActivity)是开发人员根据特定业务需求创建的自定义...通过对`CaryActivity`源码的学习和分析,我们可以更好地理解WF的工作原理,提高我们的工作流开发能力。

    WF4 自定义容器活动

    自定义容器活动是在WF4中创建自己的复合活动,可以包含其他活动,类似于在流程图中使用一个形状来封装多个子步骤。下面我们将深入探讨如何实现WF4自定义容器活动,并在自定义活动中添加其他活动。 一、理解WF4...

    wf工作流资料<转自网上的笔记>

    "坚持学习WF(12)使用EventHandlingScopeActivity活动"更进一步,专门讲解EventHandlingScopeActivity,这是一种处理多个事件的容器活动。 "坚持学习WF(15)状态机工作流"介绍了状态机模型,这是一种常见于状态变化...

    Apress - Beginning WF: Windows Workflow in .NET 4.0 Mar 2010

    ### 关于《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

    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 ...

    WF工作流学习资料

    9. **WF的挑战与最佳实践**:尽管WF提供了强大的工作流支持,但理解和应用WF需要一定的学习曲线。最佳实践包括合理设计活动结构、充分利用持久化机制以及适当地使用跟踪和诊断功能。 通过深入学习WF工作流,开发者...

    (2007 Apress)Pro WF Windows Workflow in .NET3.0.pdf

    根据提供的文件信息,本书《Pro WF: Windows Workflow in .NET 3.0》由Bruce Bukovics撰写,是一...通过学习本书,读者不仅可以掌握WF的核心概念和技术要点,还能了解到如何将其应用于实际项目中,解决复杂的业务问题。

    pro wf windows workflow in dot net 3.5

    《Pro WF:Windows Workflow in .NET 3.5》是一本深入探讨Windows Workflow Foundation (WF) 技术的专业书籍,该技术是微软.NET Framework 3.5中的一个重要组成部分。WF提供了一种在应用程序中实现工作流逻辑的方式...

    Beginning WF Windows Workflow in .NET 4.0

    通过学习本书,读者将能够深入了解WF的核心概念和技术细节,掌握如何设计、实现和优化工作流应用,从而提高软件项目的质量和效率。无论是初学者还是有经验的开发者,都能从这本书中获得宝贵的见解和实用的技能。

    WF40 实战:实现自动访问网站机器人.doc

    WF40 实战:实现自动访问网站机器人 本文介绍了使用 WF4.0 实现自动访问网站机器人的方法,通过四个流程,实现机器人登录、机器人回帖、机器人推荐文章、机器人定时回帖和机器人定时推荐文章等功能。文章还提供了...

    WF学习从入门到提高

    "WF学习从入门到提高"的主题涵盖了从基础知识到高级技巧的全面学习路径,适合对WF感兴趣或需要在工作中应用WF技术的初学者和进阶者。 在WF的学习过程中,首先要理解的是WF的基本概念。WF提供了一种模型化的方式来...

    【翻译】WF从入门到精通(第一章):WF简介源代码下载

    本章将带你入门WF,了解其基本概念、设计原则以及如何通过源代码下载进行学习。 WF的核心概念包括活动(Activity)、工作流(Workflow)、运行时(Runtime)和持久化(Persistence)。活动是WF中最基本的构建块,它...

    Pro.WF.Windows.Workflow.in.NET.4.0.pdf

    总之,《Pro.WF.Windows.Workflow.in.NET.4.0》的配套代码库为学习和掌握WF提供了宝贵的资源,通过实践和调试这些代码,读者可以深化对WF的理解,从而在.NET开发中充分利用WF来构建高效、灵活的业务流程系统。

Global site tag (gtag.js) - Google Analytics