Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Biztalk 路由/筛选没有业务流程的邮件_Biztalk_Biztalk 2010 - Fatal编程技术网

Biztalk 路由/筛选没有业务流程的邮件

Biztalk 路由/筛选没有业务流程的邮件,biztalk,biztalk-2010,Biztalk,Biztalk 2010,我们的许多Biztalk用例都涉及到将HL7 2.x消息从一个系统映射到另一个系统并将其路由到另一个系统。实现映射并将其关联到发送/接收端口通常是简单的,但我们还需要在发送端执行一些基于内容的过滤 例如,如果发送设施是任意200个设施(我们组织中可能有1000个设施),我们可能只想向系统X发送ADT A04和ADT A08消息,但系统Y需要ADT A04、A05、A8用于一组完全不同的设施,并且仅用于肾脏病患 因为我们只是路由消息,而不是真正地管理业务流程,所以仅为了调用业务规则引擎而使用编排在

我们的许多Biztalk用例都涉及到将HL7 2.x消息从一个系统映射到另一个系统并将其路由到另一个系统。实现映射并将其关联到发送/接收端口通常是简单的,但我们还需要在发送端执行一些基于内容的过滤

例如,如果发送设施是任意200个设施(我们组织中可能有1000个设施),我们可能只想向系统X发送ADT A04和ADT A08消息,但系统Y需要ADT A04、A05、A8用于一组完全不同的设施,并且仅用于肾脏病患


因为我们只是路由消息,而不是真正地管理业务流程,所以仅为了调用业务规则引擎而使用编排在这里有点过火,特别是考虑到由于模式的工作方式,我们可能需要为每种ADT类型使用单独的编排。是否可以在不使用业务流程的情况下实现这样的筛选规则?发送端口的筛选器功能对于我们的需要来说似乎太初级了,但同时我不希望开发和管理业务流程。

您可以使用属性架构来实现这一点


您需要创建一个属性架构,并包含要用于路由的属性(来自其他架构)。部署架构后,这些属性将可用作发送端口中的筛选器。从开始,您应该能够在某处找到示例…

正如其他人建议的那样,您可以使用自定义管道组件来调用业务规则引擎

现在已经有了一个开源软件,名为

通过从管道调用BRE,您可以创建复杂的规则,然后设置简单的上下文属性,您可以在这些属性上路由消息


充分披露:我与该框架的作者在同一家公司工作。

我目前没有安装BizTalk,但我相信您可以在不使用业务流程的情况下,只使用发送端口筛选,完成您想要的任务。如果需要(自定义管道代码,但不是太难),您可以(我相信,已经有一段时间了)从接收端口调用bre,以获得正确的升级属性。它使用一个自定义管道组件,该组件调用BRE并升级属性以指示目标订阅者:或者,您也可以使用预卷自定义管道组件。你是对的,但是我发现如果你处理大量的过滤器,那么发送端口中的过滤器功能就很难使用了。另外,如果您考虑了一个复杂的过滤器“((这个和这个)或(这个和这个))这)据我所知,您不能通过发送端口筛选器定义该类型的逻辑。我们就是这样做的。虽然我们没有非常复杂的筛选器。这并不理想,但复杂筛选器可以通过在早期处理中为消息分配更高级别的属性来实现。例如,而不是((IsManager和IsFinance)或(IsAdmin和IsHR))和IsActive,您可以使用BRE接收管道来分配IsActiveFinanceProcessor属性。