跟踪从外部程序到biztalk和back的消息

时间:2008-12-03 15:24:59

标签: database biztalk

我有一个外部程序,它将从db生成一个xml文档并将其传递给BizTalk。是否可以创建事务ID或其他内容(ID中的消息,如DB中所示),以便我可以在BizTalk中跟踪消息,并将信息存储在BizTalk自定义管道中,并使用给定的事务ID进行数据库存储?

我想存储它是否存在故障,我有自定义管道来捕获这些信息进行存储。我不想依赖HAT进行错误处理。

如何跟踪BizTalk中的消息,这些消息是从需要存储有关BizTalk处理信息的外部程序发送的?任何链接/书籍提示也会有所帮助。谢谢!

3 个答案:

答案 0 :(得分:3)

从架构的角度来看,通常情况下,有几种方法可以实现您的需求,解决方案的外观将根据您的具体情况而有很大差异。

在BizTalk中,跟踪特定消息发起的流的最佳方式是交换ID。

交换ID是一种上下文属性,它在传入消息的处理过程中流动,并在整个过程中从一条消息复制到另一条消息。 从技术上讲,它是收到的消息的消息ID,它开始了交换。

如果您需要一个ID来将“所有内容”组合在一起,就可以了。

如果在您的方案中您可以选择将其返回给调用者,则可以将其链接到您需要的任何内容(进出数据库)。

如果您不能,但调用者可以将您分配给此请求的ID传递给您,则可以使用交换ID更新数据库记录以链接这两者。

随着进程的进展(成功与否),您总是可以返回并更新该记录,因为您始终可以访问BizTalk中的交换ID。

答案 1 :(得分:1)

真正想想你想要的东西可能是一件好事。您可能希望发送客户/内部系统以某种方式跟踪其消息,但状态是否必须由应用程序读取,或者是某些需要消息状态的用户?

如上所述,一种方法是给他们一个相关的交换id(在一个响应消息中),但那又是什么?设置应用程序可以查询的状态很容易维护(关于进程更改)是非常困难的。我已经构建了一个,你可以获得有关消息传递的所有实例的信息,但它不会让你的客户更“明智”,因为他们可能无法将你的编排或管道名称翻译成可以理解的东西。

另一种方法是使用BAM并建立一个客户可以用来查找其消息状态的网站,例如大多数交付公司,例如DHL。它可能需要更多的努力,但我认为最好根据需要量身定制解决方案。

使用BAM,您可以在不更改BizTalk项目的情况下提取数据。 “只是”分析您的需求,找出要在BAM-Excel中提取或聚合的数据,将其导出到BizTalk数据库,激活并将其与Tracking Profile Editor连接。

然后,您可以在网站上向客户显示重要的里程碑。我知道这并不像我上面描述的那么容易,但它会很好:)

答案 2 :(得分:0)

如果您向BizTalk发布消息,则默认情况下会返回SubmissionHandle。这是您可以从接收端口使用的Context属性。然后可以在业务流程中捕获它,并用于将错误与原始提交相关联。

或者,您可以使用双向接收HTTP端口并将您想要的任何内容发送回调用应用程序。您可以立即返回消息,也可以根据处理过程中的内容等待返回成功或失败。

祝你好运