Windows Workflow Foundation(第一章)- Windows Workflow Foundation 概述

工作流概述

活动(Activity)是工作流的基本单元,用于描述实际进程。工作流(workflow)提供了一种方法,用于描述多项短期运行或长期运行的工作之间的执行顺序和依赖关系。此工作从头到尾地贯穿模型,并且活动可以人工执行或由系统功能执行。

工作流运行时引擎

每个正在运行的工作流实例(instance)都是由进程中 “工作流运行时(workflowruntime)”引擎创建和维护的。在一个应用程序域中可以有多个工作流运行时引擎,并且运行时引擎的每个实例均可支持多个并发运行的工作流实例。

工作流模型经过编译后,可以在包括控制台应用程序、基于窗体的应用程序、Windows 服务、ASP.NET 网站和 Web 服务在内的任意 Windows 进程中执行。由于工作流是在进程中承载,因此工作流可以轻松地与其主机应用程序通信。

下面的插图显示了如何在一个主机应用程序的进程中同时承载工作流、活动和工作流运行时引擎。

活动概述

活动(Activity)是工作流的基本单元。以编程方式将活动添加到工作流中,与向根节点添加 XML DOM 子节点的方式类似。当给定流路径中的所有活动都完成运行时,工作流实例即完成。

活动可以执行单个操作,如向数据库写入值,也可以执行复合活动并包含一组活动。活动有两种行为类型:运行时(runtime)和设计时(design)。运行时行为在执行时指定操作。设计时行为控制在设计器中显示的活动的外观及其交互。

Windows Workflow Foundation 包括一个标准活动库,并为您提供创建自己的活动的机制即自定义活动,以便工作流之间的扩展性和可重用性。

服务概述

当工作流实例运行时,工作流运行时引擎使用多种服务。Windows Workflow Foundation 提供可满足多种应用程序需要的运行时服务的默认实现,例如在 SQL 数据库中存储工作流实例的执行详细信息的持久性(persistence)服务。这些服务组件是可插拔得的,这样,应用程序就可以以特定于执行环境的方式提供这些服务。运行时引擎使用的其他类型服务包括计划(planing)服务、事务(transaction)服务和跟踪(tracking)服务。

通过从基服务类派生可以创建自定义服务以扩展 Windows Workflow Foundation 平台。使用 XML 文件而不使用数据库进行存储的持久性服务就属于这种情况。

补偿概述

补偿(compensation)是由于工作流中其他位置发生异常而做出的一种行为,这种行为撤消由成功完成的可补偿活动所执行的任何操作。

本地通信和关联概述

宿主(承载工作流运行的应用程序)进程可以通过借助自定义本地通信服务交换数据来与工作流进行通信。这些本地通信服务实现具有以下作用的用户定义的接口:定义将在工作流和宿主进程之间进行传递的方法和事件。

通过使用在宿主进程和工作流之间作为事件参数传递的唯一 ID,宿主进程还可以在特定的工作流实例中与特定的活动进行交互。这称为“关联(correlation)”。

持久性概述

Windows Workflow Foundation 简化了有状态的、长期运行的持久性工作流应用程序的创建过程。工作流运行时引擎管理工作流的执行情况,而且允许工作流长期保持活动状态并在应用程序重新启动之后存在。这种持久性是 Windows Workflow Foundation 的关键原则。它意味着可以在等待输入时从内存中卸载工作流,而且工作流可以序列化为持久性存储(如 SQL 数据库或 XML 文件)。只要收到了输入,工作流运行时引擎就会将工作流状态信息重新加载到内存中并继续执行工作流。

Windows Workflow Foundation 提供的 SQL持久化服务(SqlWorkflowPersistenceService )可以与 Microsoft SQL Server 2005 Express、SQL Server 2000(或更高版本)或 SQL Server 2000 Desktop Engine (MSDE) 很好地集成,以便方便而又高效地保持工作流信息。您还可以通过从 持久化服务(WorkflowPersistenceService) 基类派生来创建自己的持久性服务,以便按照所需的方式存储工作流状态信息。

跟踪概述

“跟踪(tracking)”是一项功能,用于指定并捕获有关工作流实例的信息,并在这些实例执行时存储该信息。Windows Workflow Foundation 提供了 SqlTrackingService 这一跟踪服务,该服务使用 SQL 数据库来存储所收集的跟踪信息。您也可以编写自己的跟踪服务来收集该信息,并以您应用程序需要的任何格式将其存储下来。

创建新工作流时,该跟踪服务会请求一个要与该工作流相关联的跟踪通道。之后,会将该工作流中的所有跟踪信息发送到该跟踪通道。

该跟踪服务可以跟踪三种类型的事件:工作流实例事件、活动事件和用户事件。通过提供跟踪配置文件,您可以配置您的服务要为特定工作流实例或特定类型的工作流接收的信息类型和数量。

跟踪框架还能够在事件期间提取与活动或工作流相关的信息。如果需要跟踪活动或工作流中的特定属性或字段,您可以在跟踪配置文件的提取节中提供此信息,将在指定事件期间提取该信息。

序列化概述

对工作流、活动和规则可以进行序列化持久化服务(serialation)和反序列化。这样就可以保持它们,在工作流标记文件中使用它们,以及在工作流设计器中查看其属性、字段和事件。

Windows Workflow Foundation 为标准活动提供了默认的序列化功能,您也可以为自定义活动创建自己的序列化功能。例如,利用自定义活动序列化程序,可以决定对哪些成员进行序列化以及如何对其进行序列化。这也将确定这些成员在工作流设计器中是可见还是隐藏。

工作流更改概述

使用 Windows Workflow Foundation,可以在运行时动态更新工作流实例和声明性规则。在计划待执行的活动之前,可以更改预期行为、流控制等。使用该功能,可以修改业务处理逻辑,且不必重新编译和重新启动工作流。

“规则和条件”概述

Windows Workflow Foundation 可将业务逻辑作为规则或条件来实现。IfElseBranchActivity、ConditionedActivityGroup、WhileActivity 和 ReplicatorActivity 活动使用条件来控制活动的执行。条件可以声明方式表示,也可以在代码中定义。声明性条件以代码 DOM 语句的形式在规则的 XML 文件中创建。基于代码的条件可引用工作流的代码文件中的一个方法,该方法通过 Result 属性返回其结果。

与条件一样,规则以代码 DOM 语句的形式表示,并收集到规则的 XML 文件中。规则包含一个条件语句和一些操作集合,这些操作是根据条件的结果来执行的。规则将会收集到规则集中,规则集既支持规则的简单依序执行,也支持规则的复杂正向链接。规则集由 PolicyActivity 活动执行。

使用规则和声明性条件定义逻辑的一个主要优点是,通过使用工作流更改来执行动态更新,可在运行时修改这些规则和声明性条件。此外,规则使您可将业务逻辑与工作流分开,以便与其他工作流共享这些规则。最后,通过在规则中定义业务逻辑,可在对象模型之上构建高级工具,如依赖关系可视化工具和影响分析工具。

错误处理概述

工作流运行时引擎在一个称为“错误处理”的进程中异步处理活动中所出现的异常。异常被安排在队列中以便日后处理。如果异常类型与特定 FaultHandlerActivity 活动所处理的类型相符,则该活动将处理此异常。如果无法处理异常,则通过父活动向上冒泡,直到最终导致工作流实例终止。

工作流标记概述

基于可扩展应用程序标记语言 (XAML) 的工作流标记可以使开发人员和设计人员以声明方式为业务逻辑建模,并将其与由代码旁置文件建模的低级实现细节区分开。因为工作流可以声明方式建模,所以可以在运行时,通过直接将工作流标记文件加载到工作流运行时引擎的方式来激活工作流。

转载于:https://www.cnblogs.com/chkff_01/archive/2008/12/24/1361221.html

Windows Workflow Foundation(1)- Windows Workflow Foundation 概述相关推荐

  1. 演练:在 Windows 窗体中承载 Windows Presentation Foundation 复合控件 【转载】

    http://msdn.microsoft.com/zh-cn/library/ms745781.aspx 更新:2007 年 11 月 本演练演示如何创建 WPF 复合控件,并通过使用 Elemen ...

  2. 背水一战 Windows 10 (9) - 资源: 资源限定符概述, 资源限定符示例

    原文: 背水一战 Windows 10 (9) - 资源: 资源限定符概述, 资源限定符示例 [源码下载] 背水一战 Windows 10 (9) - 资源: 资源限定符概述, 资源限定符示例 作者: ...

  3. Deploying Windows 7 - Part 1: Windows AIK 2.0 Enhancements

    本文出自: http://www.windowsnetworking.com/articles_tutorials/Deploying-Windows-7-Part1.html Windows 7 d ...

  4. 现在Windows Server 2012在Windows Azure 虚拟机库中可用

    就像我们过去谈论过,结合基础设施和平台服务非常适合您的业务需求,它能提供灵活的架构. 开发和部署您的应用程序和IT解决方案,这是非常适合您的业务的一种方法.不用说,我们很荣幸地向我们的 Windows ...

  5. 安装配置Windows AIK之生成Windows PE

    安装配置Windows AIK之生成Windows PE 1. 概述 Windows? 自动安装工具包可帮助您安装.自定义和部署 Microsoft Windows? 7 和 Windows Serv ...

  6. 全面了解Windows Server 2003 和 Windows XP 附带的系统服务

    简介   系统服务的处理不同于其他设置,因为所有服务的漏洞.对策及潜在影响在本质上都一样.第一次安装 Microsoft Windows Server 2003 时,系统将在启动时创建并配置默认服务. ...

  7. windows 系统无法启动windows event log 服务

    windows 系统无法启动windows event log 服务 关键词:无法启动系统事件日志 尝试解决步骤 [1]权限:把如图中logsfile文件等都给local service [2]把C: ...

  8. What’s new: Windows Phone 7 与 Windows Phone 6.5功能对比

    在engadget看到一篇Windows Phone 7和Windows Moible 6.5比较的表格,觉得挺不错,blog下来.原文见 Windows Phone 7 Series faces o ...

  9. 64位windows与32位windows的区别

    64位windows与32位windows的区别 2010-07-19 15:46 64位windows与32位windows的区别 http://www.zeroplace.cn/article.a ...

最新文章

  1. mysql导出数据库数据字典
  2. NMM3DViewer 设计
  3. 用Python实现优先级队列
  4. 最易忽视的肾虚4件事
  5. python自动化框架pytest pdf_Python 自动化测试框架 unittest 和 pytest 对比
  6. vs可以编译python_Python如何进行编译和反编译
  7. koa2 session mysql_koa2+vue+axios搭建一个博客台管理系统之session踩坑
  8. android studio 自动实现方法,Android Studio怎么自动实现所有的接口函数
  9. 蓝桥杯c语言b组试题及答案,2014蓝桥杯C语言本科B组预赛试题
  10. 中兴zxr10路由器重启命令_zxr10维护常用命令
  11. JAVA实现逆波兰转换,java实现逆波兰式
  12. 产品研发记录05:产品研发人员应当具备的特质
  13. SpringBoot集成SpringSecurity(二) 个性化登录配置(remember-me mongodb)
  14. 这个高仿小米商城项目太惊艳了
  15. 前端与u3d的联调 -前端初学者使用vue与u3d联调的摸索和踩的坑,学习记录
  16. Bebras挑战样题之四——小海狸的密码机器
  17. 如何用路由器改成WiFi Pineapple系统镜像网络流量
  18. 普联软件Java笔试题
  19. 计算方法预测蛋白质三级结构
  20. 掌上单片机实验室 - 编程环境(续)(6)

热门文章

  1. mysql笔试题15道
  2. CUDA C++ Programming Guide——编程模型
  3. 为什么ps里的液化工具里的部分功能用不了
  4. PYNQ-Z2零基础学习详解
  5. 什么是大牛,我彻底服了,大牛讲解信号与系统
  6. 新加坡设自动巡逻机器人,助力城市精细化治理
  7. 用C++完成QRCode(快速响应码)的基本逻辑实现
  8. java播放音频文件mp3
  9. oracle如何设置连接数,关于Oracle连接数设置
  10. Spring当中循环依赖很少有人讲,今天让我们来看看吧