【问题标题】:Content based routing based on calculated property in BizTalk基于 BizTalk 中计算属性的基于内容的路由
【发布时间】:2015-08-27 14:37:07
【问题描述】:

我需要根据计算的属性/字段路由消息,但我的传出架构中不存在相同的属性/元素。这可能吗?

例如。假设我收到一条包含员工姓名和出生日期的入站消息。我在编排中或在地图中使用 functoid 计算员工的年龄。现在我想根据年龄条件发送消息,但传出模式中不存在年龄属性。

那么基于内容的路由是否可以在计算的属性上实现?

【问题讨论】:

    标签: biztalk


    【解决方案1】:

    您需要一个具有名为“Age”的属性的属性架构,并确保通过更改节点 Age 的“属性”中的“属性架构基础”将此属性设置为“MessageContextPropertyBase”。拥有属性架构后,您可以在计算之后在 Orchestration 或自定义接收管道组件中提升此属性。

    1. 如果您使用编排方法,则需要使用 Age 属性创建关联类型并初始化发送形状上的关联。确保您还使用 Message_1(...) 在传出消息上设置 Age 属性。在编排中使用它之前部署属性模式。如果您在不同的程序集中创建它,请添加对它的引用。
    2. 或者您也可以创建自定义管道组件并使用 Execute 方法中的 Promote 方法提升相同的 Age 属性。

    【讨论】:

      【解决方案2】:

      我很确定提升的属性需要成为消息的一部分。但是你总是可以创建一个新的消息类型来导入原始模式,但包含你的新字段并基于它进行路由。然后,您可以在发送端口的传出映射上映射回原始消息类型。

      您当然需要确保这条新消息通过带有属性提升的管道,例如 XMLReceive。因此,您的 Orch 将需要处理该问题,或者,您可以在接收端口中映射到这条新消息,并在您所说的这个 Orch 之前进行路由。很难说出了解细节的最佳方法。

      【讨论】:

        【解决方案3】:

        是的,您可以计算年龄并使用局部变量路由入站消息。

        【讨论】:

        • 您应该更多地强调如何路由可以改善您的答案。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-09
        • 2017-11-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多