EventHandlingScopeActivity活动包含一个主线子活动和一组事件处理活动(EventHandlersActivity),它的主线子活动中只能包含一个子活动。它会执行其主子活动比如SequenceActivity。 同时,可能会执行每个EventDrivenActivity,也可能不执行它们,这取决于在SequenceActivity 活动执行时是否发生了它们的事件,当主线活动执行完了整个EventHandlingScopeActivity活动也就结束了。
下面以例子来说明该活动的使用:
1.定义服务接口:
[ExternalDataExchange] public interface IScopeDemo { void Started();
event EventHandler<ExternalDataEventArgs> EventOne; event EventHandler<ExternalDataEventArgs> EventTwo; event EventHandler<ExternalDataEventArgs> EventStop; }
1.1.Started()方法会在工作流开始的时候调用。
1.2.其他三个事件会在HandleExternalEventActivity实例中调用。
2.实现服务接口:
class ScopeDemoService:IScopeDemo { private Guid instanceId; public void Started() { instanceId = WorkflowEnvironment.WorkflowInstanceId; } public event EventHandler<ExternalDataEventArgs> EventOne; public event EventHandler<ExternalDataEventArgs> EventTwo; public event EventHandler<ExternalDataEventArgs> EventStop; public void OnEventOne() { if (EventOne != null) { EventOne(null, new ExternalDataEventArgs(instanceId)); } } public void OnEventTwo() { if (EventTwo != null) { EventTwo(null, new ExternalDataEventArgs(instanceId)); } } public void OnEventStop() { if (EventStop != null) { EventStop(null, new ExternalDataEventArgs(instanceId)); } } }
3.实现工作流,如下图:
3.1.在主线子活动中使用CallExternalMethodActivity活动调用Started方法。
3.2.WhileActivity的条件为!this.IsComplete,当IsComplete为true的时候结束。
3.3.在事件处理活动中我们添加三各EventDriven,每个EventDriven中添加一个HandleExternalEventActivity来
分别调用EventOne,EventTwo和EventStop事件。
工作的完整代码如下:
public sealed partial class ScopeDemoWorkflow: SequentialWorkflowActivity { public ScopeDemoWorkflow() { InitializeComponent(); } private Boolean isComplete = false; public Boolean IsComplete { get { return isComplete; } set { isComplete = value; } } private void codeActivity1_ExecuteCode(object sender, EventArgs e) { Console.WriteLine("正在执行主线子活动....."); } private void handleExternalEventActivity1_Invoked(object sender, ExternalDataEventArgs e) { Console.WriteLine("事件响应一"); } private void handleExternalEventActivity2_Invoked(object sender, ExternalDataEventArgs e) { Console.WriteLine("事件响应二"); } private void handleExternalEventActivity3_Invoked(object sender, ExternalDataEventArgs e) { Console.WriteLine("事件响应结束");
IsComplete = true; } }
4.下面来些测试类,代码如下:
public class ScopeTest { private static ScopeDemoService scopeService; public static void Run() { using (WorkflowRuntimeManager manager = new WorkflowRuntimeManager(new WorkflowRuntime())) { AddServices(manager.WorkflowRuntime); manager.WorkflowRuntime.StartRuntime(); Console.WriteLine("开始执行工作流....."); manager.StartWorkflow(typeof(CaryScope.ScopeDemoWorkflow), null); //让主线子活动执行 Thread.Sleep(2000); scopeService.OnEventOne(); Thread.Sleep(100); scopeService.OnEventTwo(); Thread.Sleep(100); //主线子活动执行 Thread.Sleep(3000); //停止工作流 scopeService.OnEventStop(); manager.WaitAll(10000); Console.WriteLine("完成工作流...\n\r"); } } private static void AddServices(WorkflowRuntime instance) { ExternalDataExchangeService exchangeService = new ExternalDataExchangeService(); instance.AddService(exchangeService); scopeService = new ScopeDemoService(); exchangeService.AddService(scopeService); } }
5.执行结果如下图所示:
注意:如果EventHandlingScopeActivity活动的主线子活动执行完成时,已被触发的EventDriven不会因为主线子活动的完成而终止,而是会继续执行完成。
发表评论
-
平淡的2007
2007-12-24 08:04 813早上起来,送女朋友去公交车站,然后回来赶紧打开电脑,先 ... -
DreamSpark发布,高校学生免费使用Visual Studio 2008 Professional Edition 等微软软件
2008-02-20 13:23 1410今天上网无意中搜索到学生可以免费使用VS2008专业版,后来又 ... -
坚持学习WF(1):从HelloWorld开始
2008-04-04 16:30 887[置顶]坚持学习WF文章索 ... -
坚持学习WF(2):WF创作模式和设计时工具
2008-04-05 17:19 633[置顶]坚持学习WF文章索 ... -
坚持学习WF(3):WF框架概览
2008-04-08 07:27 781[置顶]坚持学习WF文章索 ... -
坚持学习WF(4):活动(Activity)和依赖属性(DependencyProperty)
2008-04-12 00:01 1141[置顶]坚持学习WF文章索引 活动(Activity) 活动 ... -
坚持学习WF(5):自定义活动(CustomActivity)
2008-04-13 15:25 918当WF提供的标准活动不能满足我们的需求的时候,我们就需要定义自 ... -
MOSS点滴(1):如何开发和部署feature
2008-04-16 21:35 834Features 是MOSS 2007以开箱即用的一套新功能, ... -
MOSS点滴(2):自定义Application Page
2008-04-19 20:07 841在MOSS中后台管理的页面都是Application Pag ... -
坚持学习WF(6):开发可复用的宿主程序
2008-04-21 21:45 692我们之前写工作流宿主 ... -
MOSS点滴(3):说说MOSS中的母版页
2008-04-25 21:15 1176MOSS中有两种页面:Site P ... -
MOSS点滴(4):实现Form认证
2008-04-29 21:12 701本文主要参考了网上的一些文章,但有些文章有些地方说的不是很明确 ... -
坚持学习WF(7):流程控制(Flow Control)
2008-04-30 18:10 828本文主要说说WF中和流 ... -
坚持学习WF(8):本地服务之调用外部方法
2008-05-09 08:17 754WF提供了一组核心服务 ... -
MOSS中的WebPart开发
2008-05-10 13:53 1054由于在asp.net1.1的时候asp.net中还没有webp ... -
坚持学习WF(9):本地服务之事件处理
2008-05-28 07:49 792[置顶]坚持学习WF文章索引 一:先来介绍两个活动 Even ... -
坚持学习WF(10):在工作流中使用关联
2008-06-01 13:03 686[置顶]坚持学习WF文章索 ... -
坚持学习WF(11):工作流通信与队列
2008-06-07 15:45 729[置顶]坚持学习WF文章索引 WF 提供的通信模型是构建于 ... -
MOSS中创建自定义内容类型
2008-06-12 20:23 1098一:简要介绍 某类内容 ... -
.NET中IDisposable接口的基本使用
2008-06-15 12:01 944首先来看MSDN中关于这个接口的说明: [ComVisible ...
相关推荐
坚持学习WF(12):使用EventHandlingScopeActivity活动 EventHandlingScopeActivity活动包含一个主线子活动和一组事件处理活动(EventHandlersActivity),它的主线子活动中只能包含一个子活动。它会执行其主子活动比如...
坚持学习WF(4):活动(Activity)和依赖属性(DependencyProperty) 坚持学习WF(5):自定义活动(CustomActivity) 4.5两篇对主要对活动(Actibity)的介绍和依赖属性(DependencyObject)和DependencyProperty事件的使用。 ...
坚持学习WF(12):使用EventHandlingScopeActivity活动 EventHandlingScopeActivity活动包含一个主线子活动和一组事件处理活动(EventHandlersActivity),它的主线子活动中只能包含一个子活动。它会执行其主子活动比如...
在本篇“坚持学习WF(1):从HelloWorld开始”的源码分析中,我们将深入理解WF的基础知识和创建第一个工作流的步骤。 首先,让我们了解WF的基本概念。WF提供了一种模型化业务流程的方式,通过活动(Activities)来表示...
在Windows Workflow Foundation (WF)中,自定义活动(CustomActivity)是开发人员根据特定业务需求创建的自定义工作流组件。本篇文章将深入探讨如何利用C#编程语言创建自定义活动,并通过源码分析来理解其工作原理。...
"坚持学习WF(12)使用EventHandlingScopeActivity活动"更进一步,专门讲解EventHandlingScopeActivity,这是一种处理多个事件的容器活动。 "坚持学习WF(15)状态机工作流"介绍了状态机模型,这是一种常见于状态变化...
自定义容器活动是在WF4中创建自己的复合活动,可以包含其他活动,类似于在流程图中使用一个形状来封装多个子步骤。下面我们将深入探讨如何实现WF4自定义容器活动,并在自定义活动中添加其他活动。 一、理解WF4...
本教程针对WF初学者,将深入探讨WF中的各种活动及其使用实例。 ### 一、WF基础概念 1. **活动(Activity)**: 在WF中,活动是最基本的构建块,代表了工作流中的一个操作或一组操作。活动可以是内置的,如顺序执行...
本书《Beginning WF: Windows Workflow in .NET 4.0》是一本详细介绍如何在.NET 4.0环境中使用Windows Workflow Framework(WF)进行应用开发的专业指南。本书由Mark J. Collins撰写,于2010年3月19日由Apress出版社...
6. **发布和使用**:完成自定义活动后,可以将其打包成.dll文件,然后在其他WF项目中引用。这样,自定义活动就可供整个团队使用,提高了代码复用和一致性。 在"Chapter13"压缩包文件中,很可能是包含了本章的所有源...
3. **WF活动**:WF的核心是活动,它们是工作流中的最小执行单元。活动可以是内置的,如If条件判断、Assign赋值,也可以是自定义的,满足特定业务需求。活动可以通过组合和嵌套形成复杂的工作流逻辑。 4. **WF生命...
本文介绍了使用 WF4.0 实现自动访问网站机器人的方法,通过四个流程,实现机器人登录、机器人回帖、机器人推荐文章、机器人定时回帖和机器人定时推荐文章等功能。文章还提供了详细的代码实现和流程图,供读者参考。 ...
- **示例1:订单处理**:使用WF设计一个订单处理工作流,包括接收订单、库存检查、发货通知等多个步骤。 - **示例2:请假申请审批**:构建一个请假申请的审批流程,涉及提交申请、部门经理审批、人力资源审核等环节...
2. **活动设计**:详细讲解了如何设计自定义活动,包括使用代码活动、XAML活动,以及复合活动。这涵盖了从简单的控制流程活动到复杂的业务规则活动的创建方法。 3. **工作流生命周期**:涵盖工作流的创建、启动、...
例如,你可能会学习如何在Visual Studio中创建第一个WF项目,如何使用各种内置活动,以及如何处理错误和异常。随着深入,你可能还会接触到高级主题,如自定义活动的开发,工作流服务(WCF Workflow Services)的实现...
1. **活动设计**:理解如何定义和使用内置及自定义活动。 2. **工作流设计**:学习如何组合活动创建工作流,包括顺序、状态机、事务和并行工作流。 3. **工作流服务**:如果打算集成WF到WCF(Windows Communication ...
《在.NET 4.0中开始使用WF Windows工作流》一书由Mark J. Collins撰写,深入探讨了在.NET框架4.0版本中如何利用Windows Workflow(WF)技术来构建和管理复杂的工作流程。该书作为一本入门指南,旨在帮助读者理解和...
爱普生WF7710说明书是关于爱普生WF7710打印机的使用手册,涵盖了打印机的基本操作、网络设置、安全警告等方面的内容。 基本使用 在使用爱普生WF7710打印机之前,需要了解打印机的基本组件和功能。包括控制面板、...
除了使用内置的基本活动外,WF还允许开发者创建自定义活动,以满足特定的业务需求。通过查看和分析提供的源码,你可以学习如何扩展WF,定义自己的活动类,并集成到工作流程中。 5. **活动设计与执行** 学习如何在...