WF4.0-工作流服务异常处理

使用ReceiveAndSendReply活动模板和WorkflowServiceHost可以很容易地创建一个工作流服务。它可以像一个普通 WCF服务一样与其他应用程序进行通信。大部分的配置也相当简单。选择Receive活动并加以配置,和SendReply活动类似。大部分的工作用在设置OperationContract或者ServiceContract上面。

出现了错误该怎么办

事实上是没有任何属性可以用来指定返回的错误。

抛出FaultException

当Workflow服务抛出一个FaultException的时候,非常期待它被及时处理。异常能被当作SOAP错误被发送到客户端,假设客户端也是.NET,可以将它作为一个FaultException进行捕获。

抛出FaultException<T>

通常,当您想给异常添加一些额外的信息,您就需要创建一个额外的类,并用FaultContract属性声明服务契约,来指定返回的错误。在客户端需要添加服务元数据,做一个添加服务引用来创建所需的类型。但是,对于工作流服务,没有用于添加属性的服务契约类。就没有属性给我们使用来实现这些目的。那么,我们如何指定与工作流服务交互的异常契约呢?

解决方案

窍门是给工作流上相关的Receive活动添加第二个SendReply。第二个SendReply活动返回错误契约。添加第二个SendReply活动很简单,只需右键单击Receive活动,并选择创建SendReply活动就行了。下一步创建一个变量来保存的错误信息。


我使用的FaultDetail很简单,它将所有收到的数据发送回客户端。

1  using System.Runtime.Serialization;
2  namespace ServicesAndFaults{
3  [DataContract]
4  public class FaultDetail
5  {
6  [DataMember]
7  public int Data { get; set; }
8  }
9  }
10 

对于第二个SendReply活动,创建和抛出一个FaultException。工作流流程图如下所示:

时间: 2024-08-03 17:35:58

WF4.0-工作流服务异常处理的相关文章

WF4.0工作流设计器

在WF3.0里面,就能将工作流设计器宿主到你自己的应用程序中,但是除了做 一些基本的操作,做一些复杂的操作将非常的难. 在WF4.0中应用移植性变得更好,只需200行代码就能创建一个功能完全也非 常有用的工作流设计器.

WF4.0实战(三):WCF服务

这篇文章,通过一个简单的WCF交互,讲解一下WF4.0中一组重要活动:Messaging,它包括:Receive.ReceiveAndSendReply.Send. SendAndReceiveReply.这里将详细讲解ReceiveAndSendReply和SendAndReceiveReply两个活动的配置以及使用,以及它与普通的WCF的区别 . 如果你了解WCF,你一定知道WCF可以缩略为ABC.A :Address (服务在哪里?),B: Binding (怎么才能访问服务?),C: C

WF4.0实战(二十三):自定义工作流活动的外观的两种方式

经常有童鞋在群里面问同样一个问题:如何自定义WF4.0活动的外观.其实一共有两种方式去实现自定义WF4.0活动的外观:一种方式我 在以前的博文上实现过,见:WF4.0实战(十一):邮件通知:另外一种方式我将在这里讲述它的实现.故这篇文章中,我将分别用这两种 方式去一个最简单的WF4.0自定义活动外观的例子. 第一种方式:使用[Designer]属性.命名空间为:using System.ComponentModel;代码如下: [Designer(typeof(CustomWriteLineDe

WF4.0实战

WF4.0实战(二十四) WF4定制个性化的WebService WF4.0实战(二十三):自定义工作流活动的外观的两种方式 WF4.0实战(二十二):一个实际生活中状态机的例子 WF4.0实战(二十一):Windows Server AppFabric中宿主WF4.0应用 WF4.0实战(二十):Windows Server AppFabric介绍 WF4.0实战(十九):Silverlight+WCF+WF+Linq结合的一个示例 WF4.0实战(十八):模拟asp.net生命周期 WF4.

WF4.0实战(十四):ASP.NET结合WF4.0完整示例

有网友问如何在web中使用WF.今天我将实现一个完整的示例.这个示例将包括WF4.0的大部分知识点.包括: 1.持久化服务 2.跟踪服务 3.自定义扩展 4.WCF Workflow Service 5.WorkflowServiceHost 6.使用Interop活动去调用WF3.0工作流程 效果: 我先描述一下这个示例的功能,然后演示一下这个示例的功能,然后进一步的说明如何去实现. 这个示例是一个任务队列,这个示例在客户端有两个aspx页面.一个是用于用户输入请求的页面,这个请求会根据你选择

WF4.0中实现子流程

工作流服务中,经常会在主流程启用一些子流程.我在审批流程中经常会使用bookmark来暂停流程,这篇文章,将结合bookmark来实现主流程启动子流程. 使用以前的一篇WF4.0自定义持久化中的自定义的持久化.不过数据表中加入了一个字段parentid,用于标识父流程: 下面用一个流程实例为例说明主流程是如何启用子流程,子流程又是如何返回主流程的,主流程如下:

【转】WF4.0实战系列索引

WF4.0实战系列索引       从WF4.0 betal1出来的时候就开始使用WF4.0,由于资料不多,学习过程也非常艰苦.今年四月份的时候打算写WF4.0实战系列,由于今年是本命年故坚持写了24篇文章.这个系列的文章都有一个特点,就是每篇文章都有一个实例,所以对初学者来说是很有帮助的.这个系列的绝大数文章和程序都是原创,少数是翻译和借鉴别人的.写一个文章索引,方便WF4的学习者查看.     WF4.0实战(一):文件审批流程     WF4.0实战(二):超市收银软件     WF4.0

WF4.0 流程设计器例子 (提供状态机模板)

WF4.0 的流程设计器,可根据流程启参数自动构建启动窗体, 根据Bookmark自动构建提交窗体,可保存,加载,调试VS2010设计的工作流文件,提供可视化的流程测试界面,可设计WF4.0的顺序工作流,FlowChar工作流,状态机工作流(注: WF4.0默认没有提供状态机,本例中的状态机是根据WF State Machine Activity Pack源代码修改实现的) 状态机模板 测试例子 打开测试流程 启动测试流程 跟踪,运行信息 本文示例源代码或素材下载

WF4.0 基础篇(三十 完) 对学习WF的一点建议

从09年10月份 NET4.0 Bata 2发布后,我就开始写[WF4.0 基础篇]这个系列,经历了5个多月终于在NET4.0正式发布前将这个系列完成了. 这段时间与一些对WF4.0感兴趣的公司与开发人员有过一些交流. 先说一下对WF感兴趣的公司,有些公司已经开始用WF4.0开发业务流程管理类软件了,这些公司与我交流的问题多是在开发中遇到的现实问题,在交流中我发现这些公司对WF4.0技术的掌握成度还欠缺些火候,但这不是太大的问题,真正让我担忧的是这些公司基本上没有业务流程管理类软件(俗称工作流)