《WF编程》系列之24 - 基本活动:SuspendActivity & TerminateActivity & ThrowActivity
2007-07-24 14:17
417 查看
4.1.5 SuspendActivity
当工作流遇到错误而需要手工干预时,我们可以使用Suspend活动来暂时挂起工作流. Suspend活动有一个字符串类型的Error属性.宿主可以订阅工作流Runtime的WorkflowSuspended事件并通过其事件参数(WorkflowSuspendedEventArgs类型)的Error属性来获取错误信息. WorkflowSuspended事件参数还提供了一个WorkflowInstance属性.宿主可以使用WorkflowInstance类的Resume方法来使工作流恢复执行,也可以使用Terminate方法使工作流悲惨的提前结束.
4.1.6 TerminateActivity
和Suspend活动相似,Terminate活动也可以挂起工作流.不同的是,使用Terminate挂起的工作流是无法被宿主恢复执行的(从单词含义来理解会更加容易:Suspend,暂停;Terminate,终止).如果工作流已经执行到不可能继续(也不可能恢复)的地步,就让我们用这个活动来结束它吧.Terminate活动也有一个字符串类型的Error属性.宿主可以订阅Runtime的WorkflowTerminated事件.事件处理程序参数(WorkflowTerminatedEventArgs类型)的属性Exception(WorkflowTerminatedException类型)则包含了错误信息.
如果想要指定引发WorkflowTerminated事件的异常类型,应该使用Throw活动.Throw活动可以使工作流捕捉到异常并继续执行,而Terminate活动则总是抛出异常并终止工作流.
4.1.7 ThrowActivity
Throw活动和C#中的Throw语句类似-它的作用是抛出一个异常.我们可以在Code活动的ExcuteCode事件中编写代码来抛出异常,那么为什么要使用Throw活动呢? 因为Throw活动不仅可以抛出异常,还可以在工作流模型中构造一个显式的异常块.如果异常没有被处理并且传播到工作流之外,那么WF Runtime将捕获它,接着终止工作流并抛出WorkflowTerminated事件.Runtime会在WorkflowTerminated事件的参数中包含异常的信息.Throw活动的Fault属性可以引用要抛出的异常类型.我们可以绑定Fault属性到工作流的域或其它活动的属性.
我们还可以使用FaultType属性来描述并约束待抛出异常的类型.如果FaultType没有被设置,Throw活动可能抛出任何类型的异常.
相关文章推荐
- 《WF编程》系列之24 - 基本活动:SuspendActivity & TerminateActivity & ThrowActivity
- 《WF编程》系列之25 - 基本活动:InvokeWorkflowActivity 4.1.8 InvokeWorkflowActivity
- 《WF编程》系列之25 - 基本活动:InvokeWorkflowActivity
- 《WF编程》系列之27 - 基本活动:EventHandlingScopeActivity & SynchronizationScopeActivity & ReplicatorActivity
- 《WF编程》系列之23 - 基本活动:IfElseActivity & WhileActivity & SequenceActivity
- 《WF编程》系列之23 - 基本活动:IfElseActivity & WhileActivity & SequenceActivity
- 《WF编程》系列之26 - 基本活动:ParallelActivity & DelayActivity & ListenActivity
- 《WF编程》系列之27 - 基本活动:EventHandlingScopeActivity & SynchronizationScopeActivity & ReplicatorActivity
- 《WF编程》系列之26 - 基本活动:ParallelActivity & DelayActivity & ListenActivity
- 《WF编程》系列之34 - 基本活动:状态活动 到目前为止,我们所讨论的工作流都是顺序工作流,而WF还支持另外一种工作流机制-状态机(State-Machine)工作流,本节就来介绍这些在状态机工作流中工作的活动.
- 《WF编程》系列之31 - 基本活动:事务(Transactions)与补偿(Compensation)
- 《WF编程》系列之34 - 基本活动:状态活动
- 《WF编程》系列之33 - 基本活动:Web Services 4.6 Web Services
- 《WF编程》系列之32 - 基本活动:条件与规则
- 《WF编程》系列之29 - 本地通信事件:HandleExternalEventActivity & 活动生成器
- 《WF编程》系列之29 - 本地通信事件:HandleExternalEventActivity & 活动生成器 4.2.2 HandleExternalEventActivity
- 《WF编程》系列之34 - 基本活动:状态活动
- 《WF编程》系列之22 - 基本活动:CodeActivity
- 《WF编程》系列之30 - 基本活动:错误处理
- 《WF编程》系列之33 - 基本活动:Web Services