Windows Workflow学习笔记

Workflow Runtime

ps:一个AppDomain只能有一个workflowRuntime实例。

表2-1 WorkflowRuntime的属性

属性 功能
IsStarted 用来指明workflow运行时是否已经启动并准备接受workflow实例。当宿主调用“StartRuntime”前IsStarted为False。期间它一直维持True直到宿主调用“StopRuntime”为止。需注意的是当它正在运行中你不能增加核心服务。
Name      获取或设置和WorkflowRuntime关联的名字。Workflow运行时正在运行中你不能设置这个属性(也就是说当IsStarted为True)。企图这样做的结果就是抛出一个“InvalidOperationException”异常。

表2-2 WorkflowRuntime的方法

方法 功能
AddService 为workflow运行时添加指定的服务。能添加的服务类型和时间受到种种限制。关于服务的详细信息将在第五章介绍。
CreateWorkflow 创建一个workflow实例,它包含一些指定(但可选)的参数。假如workflow运行时没有启动,该方法就调用StartRuntime方法。
GetWorkflow 通过 指明workflow实例的标识符(由一个Guid组成)来检索workflow实例。假如这个workflow实例是空闲和持久化保存的,它将被重新加载并执行。
StartRuntime 启动workflow运行时和相关服务,并引发“Started”事件。
StopRuntime 停止workflow运行时和相关服务,并引发“Stoped”事件。

表2-3 workflow运行时的相关事件描述

事件 功能
Started 当workflow运行时启动后激发。
Stopped 当workflow运行时停止后激发。
WorkflowCompleted 当一个workflow实例完成后激发。
WorkflowIdled 当一个workflow实例进入空闲状态时激发。当workflow实例进入了空闲状态后,你就有机会把他们从内存中卸载掉、存储到数据库并可在稍后的时间把它们加载进内存。
WorkflowTerminated 当一个workflow实例被终止后激发。在宿主中调用一个workflow实例的Terminate方法、或通过一个Terminate活动、或当workflow运行时产生一个未经捕获的异常时都会终止该workflow。

工作流实例
表3-1 WorkflowInstance的属性
属性 功能
InstanceId 得到workflow实例的唯一标识(一个Guid)
WorkflowRuntime 得到本workflow实例的WorkflowRuntime
    表3-2 WorkflowInstance的方法
 方法 功能
ApplyWorkflowChanges 通过WorkflowChanges对象申请对workflow实例进行更改。这允许你在workflow执行时修改它(增加、移出或更改活动),当动态的更改实施时,workflow实例会被暂停。
GetWorkflowDefinition 检索本workflow实例的根(root)活动。
Resume 恢复执行先前被暂停的workflow实例。假如workflow实例并未处于暂停状态,则不做任何事情。假如workflow实例处在暂停状态,workflow运行时就会在workflow实例刚被恢复后触发WorkflowResumed事件。
Start 启动一个workflow实例的执行,在这个workflow实例根活动上调用ExecuteActivity。假如Start发生异常,它通过调用Terminate终止这个workflow实例,并附加异常相关信息作为终止的原因。
Suspend 同步暂停本workflow实例。假如workflow实例本就处于暂停状态,则不做任何事情。假如workflow实例正在运行,则workflow运行时就暂停该实例,然后设置SuspendOrTerminateInfoProperty(说明原因)并进入Suspend,触发WorkflowSuspended事件。
Terminate 同步终止本workflow实例。当宿主需要终止workflow实例时,workflow运行时就终止这个实例并试图持久化实例的最终状态。然后WorkflowInstance设置SuspendOrTerminateInfoProperty(说明原因)并进入Terminate。最后,它触发WorkflowTerminated事件并把终止原因传到WorkflowTerminateException中的Message属性并包含到WorkflowTerminatedEventArgs事件参数中。另外,假如在持久化时发生异常,workflow运行时取而代之地就把异常传到WorkflowTerminatedEventArgs事件参数中。

ActivityExecutionStatus是一个给定的workflow实例的workflow definition(工作流实例的GetWorkflowDefiniton()方法获得)为您提供workflow的执行状态的枚举。
表3-3 ActivityExecutionStatus枚举值
属性 功能
Canceling 活动正在取消中。
Closed 活动已被关闭。
Compensating 活动处于补偿状态。
Executing 活动当前正在运行。
Faulting 活动已产生并维持一个异常。
Initialized 活动已被初始化但还未运行。

表4-1 活动(Activity)的属性
属性 功能
Description 获取或设置用户定义的关于活动的描述。
Enable 获取或设置一个指明实例能否被执行和验证的值。
ExecutionResult 获取实例最后运行的结果(ActivityExecutionResult)。(有Canceled、Compensated、Faulted、None和Succeeded)。
ExecutionStatus 得到workflow的状态,其为ActivityExecutionStatus的枚举值(Canceling、Closed、Compensating、Executing、Faulting和Initialized)之一。
Name 获取或设置活动实例的名称。
Parent 获取包含本活动的父活动。
WorkflowInstanceId 获取和该活动相关的workflow实例的标识符。

表4-2 活动(Activity)的方法
属性 功能
Cancel 取消活动的执行。
Clone 返回活动的一个深拷贝。
Execute 以同步方式运行活动。
GetActivityByName 假如在一个组合活动上执行,本方法将返回组合活动中所包含的指定名称的活动。
Load 从一个流中加载一个活动的实例。
RaiseEvent 触发一个和指定的依赖属性相关的事件。
RaiseGenericEvent<T> 触发和所引用的依赖属性相关的事件。RaiseEvent和RaiseGenericEvent的作用是一样的——第一个事件RaiseEvent直接指出DependencyPropenty,而RaiseGenericEvent则是一个泛型版本。
Save 把活动保存到流中。

表4-3 选择基本的workflow类型的判定表
workflow类型 适用条件
顺序工作流 workflow任务可以自治的执行,很少由外部进行控制。主要由workflow自身来对执行的任务进行控制。只有少量用户或没有用户来和它进行交互。它的root活动是SequentialWorkflow活动。
状态机工作流 workflow任务严重依赖外部来控制和指示其执行。预期有很多的用户交互(或其它外部控制)。对于基于状态的workflow,root活动是StateMachineWorkflow活动。
基于规则的工作流 业务逻辑中包含复杂的判断条件,既不像顺序工作流也不像状态机工作流。基于规则的工作流或者有一个顺序的root活动,或者有一个基于状态的root活动。


shore 2008-04-26 11:33 发表评论
posted on 2008-04-26 11:33  蝈蝈  阅读(1002)  评论(0编辑  收藏  举报