首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BizTalk + BTAHL7 MLLP -将原始nack返回给发送方

BizTalk + BTAHL7 MLLP -将原始nack返回给发送方
EN

Stack Overflow用户
提问于 2013-12-17 23:41:29
回答 1查看 757关注 0票数 0

在我的场景中,客户端通过MLLP将HL7发送到我的BizTalk双向接收端口。BizTalk对外部服务进行web服务调用,接收响应,将其转换为HL7 ACK并将其返回给客户机,所有这些都是在同步事务中进行的。

为了实现这一点,我有一个直接绑定到消息框的业务流程,并且BTAHL7方配置被设置为不根据请求响应接收端口将ACK路由到发送管道。基本上,我将关闭默认的ACK生成,并从我的业务流程中生成一个自定义ACK。我还为我的编排添加了一个额外的筛选器--接收形状为BTAHL7Schemas.ParseError == false,以便编排不会接收坏消息,在接收到的消息与架构不匹配的情况下。

一切都很好。在我的测试中,我故意发送坏的HL7消息。在这种情况下,我会得到一个挂起的路由错误报告,因为没有找到订阅者。

这种行为的原因很清楚--我没有订阅有解析错误的消息。如果出现解析错误,我希望错误ACK返回到客户端。我可以允许我的业务流程订阅带有解析错误的消息,并且只编写一个错误ACK,但是我没有任何方法返回ACK中的实际解析错误。

通常,在异步体系结构中,我会打开“路由ACK来根据请求发送管道-响应接收端口”,并让BTAHL72X接收/发送管道来处理它。然后,客户端将获得包含错误详细信息的错误ACK。

因此,我的问题是,是否有任何方法获得接收管道原始ACK并从我的业务流程返回它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-18 14:27:39

是的,你想要的当然是可行的。我现在没有一个HL7项目在我面前,所以我的记忆可能不是很精确,但类似于:

  1. 取消“重新启动ACK发送管道.”
  2. 您将需要一个自定义管道组件来促进反汇编程序输出上的BTS.InterchangeID。
  3. 在您的业务流程中,实现一个与BTS.InterchageID相关的车队。
  4. 然后,业务流程将获取HL7消息和自动生成的ACK。
  5. 你正常的处理。
  6. 决定返回哪个ACK,您的还是生成的。
  7. 将ACK返回到TwoWay端口。

*非自定义管道解决方案:*

在BTAHL7配置资源管理器确认选项卡中:

  1. 将确认类型设置为增强
  2. 将MSH15 (接受确认类型)设置为NE。
  3. 将MSH16 (应用确认类型设置为ER )
  4. 打开ACK公路,根据请求发送管道,

它似乎得到了我想要的行为。成功的ACK不会由管道生成,让我的业务流程来处理它,但是应用程序ACK错误将被生成(AR - application拒绝),并被路由到发送管道。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20646957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档