1. 概述
WF(Windows Workflow Foundation)旨在为微软产品及相关应用程序提供设计平台和开发工具。工作流体现了一种不同的编程模型——可以清晰地分离工作内容和工作时间的模型。工作流通常使用一种声明性而非过程性的编程模型。
工作流是由活动组合而成的,所有活动和工作流都派生自System.Workflow.ComponentModel.Activity类。WF提供了一个核心运行时引擎WorkflowRuntime类。工作流运行时不是独立的程序,宿主应用程序必须承载这个类的实例。应用程序承载工作流运行时,运行时则承载单独的工作流实例。工作流运行时支持外部服务概念。服务是创建并在应用程序启动时注册到运行时的类的实例。每个服务实现一个预定的目的。服务分为两种:核心服务和本地服务。核心服务提供的功能由微软定义,本地服务由用户定义。工作流使用本地服务与应用程序的其它模块进行通信。
WF提供的任务实现:
- DefaultWorkflowSchedulerService(计划服务) 创建和管理自己的线程,这些线程用来执行工作流
- ManualWorkflowSchedulerService(计划服务) 允许工作流实例使用宿主应用程序提供的线程来执行
- DefaultWorkflowCommitWorkBatchService(Commit Work Batch 服务) 默认实现
- SharedConnectionWorkflowCommitWorkBatchService(Commit Work Batch 服务) 此实现用来管理跨对象关系连接数据库事务
- SqlWorkflowPersistenceService(持久性服务) 使用SQL Server数据库的持久性服务
- SqlTrackingService(跟踪服务) 使用SQL Server数据库的跟踪服务
WF程序的开发任务包括:
- 活动开发(需求的每个功能点,都是一个“活动”,通过将功能拆分实现了松散的耦合。)
- 工作流开发(业务流程的开发。)
- 宿主开发(可以使用的宿主包括:Windows控制台应用程序、Windows服务、Windows窗体、WPF应用程序、ASP.NET应用程序以及WCF服务的任何宿主。)
2. 创建WF程序
- 活动开发
活动是为实现预定义目的而设计的独立并可重用的组件。工作流中,一个活动表示一个步骤,它是用WF工作流的基本构造块。
活动分简单活动(没有能力承载其它活动)和复合活动(可以承载其它活动)。WF包含一组可以在工作流中使用的标准活动。 - 工作流开发
WF支持两种工作流类型:顺序工作流(由SequentialWorkflowActivity类派生)和状态机工作流(由StateMachineWorkflowActivity类派生)。如果你熟悉建模,你会对流程设计器很亲切,顺序工作流绘制的是流程图,而状态机工作流绘制的是状态图。 - 宿主开发
宿主应用程序负责创建工作流运行时引擎(WorkflowRuntime)。在初始化了WorkflowRuntime类的实例后,宿主会使用它来创建和启动单独的工作流实例(WorkflowInstance)。宿主还可以订阅WorkflowRuntime事件,监视每个工作流实例的执行情况。
引自:http://www.cnblogs.com/MeteorSeed/archive/2012/08/22/2645759.html