WF(一)Runtime、实例、服务

工作流运行时引擎WorkFlowRuntime

每个正在运行的工作流实例都是由进程中运行时引擎创建和维护的,该引擎通常称为工作流运行时引擎 在一个应用程序域中可以有多个工作流运行时引擎,并且运行时引擎的每个实例均可支持多个并发运行的工作流实例。

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

下面的插图显示的是WWF的结构图

 

 
(WorkflowRuntime基本运行图)

 

 

(WorkflowRuntime与WWF的结构)

 

(WorkflowRuntime与加载服务)

日志与配置文件

 

在.NET配置文件系统中,配置节都由相应的节处理器(section handlers)来管理。WF提供了WorkflowRuntimeSection类来操作这它的专属配置节。WorkflowRuntimeSection 包含配置文件中由类型为 WorkflowRuntimeSection <section> 指定的设置。在 WorkflowRuntimeSection 中指定的配置用于初始化工作流运行时引擎。应用程序可以调用 WorkflowRuntime.WorkflowRuntime(String) 构造函数,从配置文件的适当命名的节初始化工作流运行时引擎

如果应用程序不使用配置文件,但您仍希望从 WorkflowRuntimeSection 初始化工作流运行时引擎,则可以在应用程序中配置 WorkflowRuntimeSection,并调用 WorkflowRuntime.WorkflowRuntime(WorkflowRuntimeSection) 构造函数。例如,应用程序可能在数据库中存储配置参数,或者可能在不使用配置文件的受信任环境中操作。

《WF编程》系列之41 - 承载工作流:日志和配置文件 

 

工作流实例WorkflowInstance

 

一个workflow实例由一个或多个活动组成。与工作流模版相比,最明显的区别就是一个正在执行当中,另一个不是。

WorkflowInstance相当于一个独立的workflow任务上下文(执行环境),可以使用这个对象去找到你的任务中事情是怎么执行的。

需要注意的事件,instance本身并没有事件,它只是一个上下文对象。有关流程的事件,都在WorkflowRuntime的事件中,比如,workflowAborted/Completed/Created。

说实话,这里我一直比较疑惑,我觉得WorkflowInstance和工作流模版,就相当于类(型)和实例一样,模版就相当于类型的定义,WorkflowInstance就是这个类的实例,为什么这个实例没有它自己的一些事件,比如创建、完成等?为什么是在runtime中?

 

只要创建了Runtime的实例,我们就可以使用CreateWorkflow方法创建工作流,CreateWorkflow方法返回一个WorkflowInstance对象,WorkflowInstance类用来表示一个工作流.工作流实例的Start方法将开始工作流的执行.如果发生了异常,工作流便调用Terminate方法(会导致Runtime抛出WorkflowTerminated事件),调用顺序如下图所示.

 

 

服务

 

工作流将其任务委派给了一组定义良好的运行时服务,它是可插拔的,这样,应用程序就可以以特定于执行环境的方式提供这些服务。下面是可以获得的基本工作流服务:

服务

功能

WorkflowPersistenceService

抽象基类,派生出所有持久化的服务

WorkflowQueuingService

该基类为你提供了一些方法,使你能用

来管理和一个工作流实例相关的工作流

队列。

WorkflowRuntimeService

抽象基类,派生出工作流运行时的内核

服务

WorkflowSchedulerService

所有在工作流运行时宿主上创建线程以

运行工作流实例的类的基类。

WorkflowSubscriptionService

那些管理订阅(Subscriptions)工作流运行时类的基类。

WorkflowTransactionService 

所有事务服务的基类。

TrackingService

一个抽象基类,在跟踪服务和运行时跟

踪基础结构(infrastructure)间提供

了基本的接口

 

StartRuntime被调用时,会首先检查运行时核心服务是否被添加到运行时中。核心服务即指:派生自WorkflowCommitWorkBatchService(工作流事务服务)和WorkflowSchedulerService(工作流调度服务)的计划程序服务。如果哪一个缺失,那么运行时就会为每一个服务创建一个默认的服务,即:DefaultWorkflowCommitWorkBatchService服务和DefaultWorkflowSchedulerService服务

 

参考

WXWinter

WF - 毛毛的小窝

坚持学习WF文章索引

WF学习相关BLOG和资料

一步一步学习WF索引贴

《WF编程》笔记

WF从入门到精通

posted @ 2009-05-07 23:54  碧海山城  阅读(1648)  评论(2编辑  收藏  举报