65.9K
CodeProject 正在变化。 阅读更多。
Home

如何在 BizTalk Server 2009 中使用 ESB Toolkit 2.0 处理异常

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.75/5 (6投票s)

2011 年 1 月 7 日

CPOL

2分钟阅读

viewsIcon

53377

downloadIcon

684

本文演示了使用 ESB Toolkit 2.0 在 Microsoft BizTalk Server 2009 中处理异常是多么容易。

引言

本文演示了使用 ESB Toolkit 2.0 (ESB 门户) 在 Microsoft BizTalk Server 2009 中处理异常和查看它们是多么容易。

用例:采购订单处理

ESB_Exception_Flow.jpg

考虑一个简单的场景,需要处理采购订单 (PO) 并生成 PO 确认。如果 PO 金额 (POAmt) 小于或等于零,则需要引发异常。

BizTalk ESB Toolkit 如何帮助我们?

它提供了用于处理异常并通过 ESB 门户查看失败消息的构建块。

如何编写编排以将错误消息发送到 ESB 门户?

将以下引用添加到您的编排中

  • Microsoft.Practices.ESB.ExceptionHandling
  • Microsoft.Practices.ESB.ExceptionHandling.Schemas.Faults

第 1 步:确定需要处理异常的场景

为了有效地处理异常,请集思广益所有需要处理异常的场景。

在需要处理异常的点周围放置一个“范围”形状。

第 2 步:处理异常并发送错误消息

创建一个类型为 "Microsoft.Practices.ESB.ExceptionHandling.Schemas.Faults.FaultMessage" 的错误消息,在示例中,为了简洁起见,我使用了多部分消息。

以深思熟虑的方式设置 Fault 消息属性。

// Create Fault Exception Message
FaultMsg = Microsoft.Practices.ESB.ExceptionHandling.ExceptionMgmt.CreateFaultMessage();
FaultMsg.ESBFault.FailureCategory = "POFaults";
FaultMsg.ESBFault.Scope = "local";
FaultMsg.ESBFault.FaultCode = "InvalidPO"; // a string value
FaultMsg.ESBFault.FaultDescription = 
	"This PO is invalid. See the error for more details.";
FaultMsg.ESBFault.FaultSeverity = 
	Microsoft.Practices.ESB.ExceptionHandling.FaultSeverity.Severe;

// Add each message to the Fault Message
Microsoft.Practices.ESB.ExceptionHandling.ExceptionMgmt.AddMessage(FaultMsg, POMsg);
Microsoft.Practices.ESB.ExceptionHandling.ExceptionMgmt.AddMessage(FaultMsg, POAMsg);

请注意,在本例中,每个消息 (PO 和 POA 消息) 都被添加到 Fault 消息中,这将有助于使用 ESB 门户查看传入和传出的消息。

Exception_Handling_Scope.JPG

最后,使用一个直接绑定的发送端口将此错误消息写入消息框。

ESB 门户

屏幕截图说明了 ESB 门户的各种视图

ESB_Fault_Viewer.JPG

ESB_Portal_Main.JPG

使用 ESB 异常处理框架还可以做什么?

第 1 步: 开发一个自定义的异常处理编排,其过滤器设置为可激活接收形状

(Microsoft.Practices.ESB.ExceptionHandling.Schemas.Property.FaultCode == "InvalidPO")

这将使所有 Fault 消息从消息框路由到自定义编排,并可以采取适当的操作。

第 2 步: 使用以下代码检索错误消息中的所有消息。

声明一个类型为 "Microsoft.Practices.ESB.ExceptionHandling.MessageCollection" 的变量,并将该变量分配给如下所示的代码

Microsoft.Practices.ESB.ExceptionHandling.ExceptionMgmt.GetMessages(FaultMsg);

您可以使用 ESB Toolkit 中内置的异常处理 Web 服务做什么?

任何不属于 BizTalk 的 .NET 应用程序都可以用于向异常处理 Web 服务提交“Fault”消息。

在 "https:///ESB.ExceptionHandlingServices/ExceptionHandling.asmx" 处找到此 Web 服务。请注意,默认安装还提供了此 Web 服务的 WCF 版本。

最后一个任务是通过在您的 .NET 应用程序中引用 Web 服务并使用 Web 方法 "SubmitFault" 提交此 Fault 消息来生成 Fault 消息。

可下载的示例代码

本示例使用了 BizTalk Server 2009、Visual Studio 2008 和 ESB Toolkit 2.0。

参考文献

© . All rights reserved.