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






3.75/5 (6投票s)
本文演示了使用 ESB Toolkit 2.0 在 Microsoft BizTalk Server 2009 中处理异常是多么容易。
引言
本文演示了使用 ESB Toolkit 2.0 (ESB 门户) 在 Microsoft BizTalk Server 2009 中处理异常和查看它们是多么容易。
用例:采购订单处理

考虑一个简单的场景,需要处理采购订单 (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 门户查看传入和传出的消息。

最后,使用一个直接绑定的发送端口将此错误消息写入消息框。
ESB 门户
屏幕截图说明了 ESB 门户的各种视图

使用 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。