在我的场景中,客户端通过MLLP将HL7发送到我的BizTalk双向接收端口。BizTalk对外部服务进行web服务调用,接收响应,将其转换为HL7 ACK并将其返回给客户机,所有这些都是在同步事务中进行的。
为了实现这一点,我有一个直接绑定到消息框的业务流程,并且BTAHL7方配置被设置为不根据请求响应接收端口将ACK路由到发送管道。基本上,我将关闭默认的ACK生成,并从我的业务流程中生成一个自定义ACK。我还为我的编排添加了一个额外的筛选器--接收形状为BTAHL7Schemas.ParseError == false,以便编排不会接收坏消息,在接收到的消息与架构不匹配的情况下。
一切都很好。在我的测试中,我故意发送坏的HL7消息。在这种情况下,我会得到一个挂起的路由错误报告,因为没有找到订阅者。
这种行为的原因很清楚--我没有订阅有解析错误的消息。如果出现解析错误,我希望错误ACK返回到客户端。我可以允许我的业务流程订阅带有解析错误的消息,并且只编写一个错误ACK,但是我没有任何方法返回ACK中的实际解析错误。
通常,在异步体系结构中,我会打开“路由ACK来根据请求发送管道-响应接收端口”,并让BTAHL72X接收/发送管道来处理它。然后,客户端将获得包含错误详细信息的错误ACK。
因此,我的问题是,是否有任何方法获得接收管道原始ACK并从我的业务流程返回它?
发布于 2013-12-18 14:27:39
是的,你想要的当然是可行的。我现在没有一个HL7项目在我面前,所以我的记忆可能不是很精确,但类似于:
*非自定义管道解决方案:*
在BTAHL7配置资源管理器确认选项卡中:
它似乎得到了我想要的行为。成功的ACK不会由管道生成,让我的业务流程来处理它,但是应用程序ACK错误将被生成(AR - application拒绝),并被路由到发送管道。
https://stackoverflow.com/questions/20646957
复制相似问题