在 Orchestration 中提升 属性

Promoted Property in Orchestration

我读到我们可以在编排中提升 属性。以下是我的步骤 -

  1. 创建一个新的 "StudentID" 提升 属性。
  2. 更改值"MessageContextPropertyBase"。
  3. 更新编排中 "StudentID" 的值。
  4. 创建 "StudentID" 的新关联集。
  5. 正在初始化发送形状的相关集。
  6. 在 BizTalk 管理员控制台中创建发送端口。
  7. 设置过滤器"POC.PromotedProINOx.Schema.PropertySchema.StudentID == "7" "

我没有收到任何错误。但我希望如果 "StudentID" 是 7 那么它应该被订阅。

问题 - 我认为它没有检查 "StudentID" 的值,因为消息文件总是放在输出文件夹中。

我是不是漏掉了什么?

您可能遗漏了几件事

  1. 如果接收端口上的消息具有相同的提升 属性 且 StudentID 为 7 的消息,则编排和发送端口都将订阅它。因此,如果您将 StudentID 设置为 Orchestration 中的其他内容,则您通过发送端口发送的消息实际上并未通过 Orchestration,而是直接来自接收端口。
    修复:将接收到的消息的值设置为其他值 或者在入站消息中没有提升的 属性。

  2. 您已在稍后指定的编排中指定逻辑端口,然后将其绑定到发送端口。默认情况下,发送端口始终订阅其唯一 ID。当 Orchestration 通过绑定到发送端口的逻辑端口发布消息时,它会在发布消息时设置并提升该 ID。即使添加订阅规则也只是意味着它会将其视为 BTS.SPID = {id} OR {your rule}。这意味着即使 StudentID 与发送端口上的订阅规则不匹配,它也会与 SPID 匹配并仍然选择它。
    修复:将编排中的逻辑端口更改为直接绑定。

  3. 第三种可能性是,从 Orchestration 来看,您发布的消息实际上有一个 StudentID 7。
    修复:检查您构建的形状(地图和分配)以确保您实际上将其设置为另一个值。确保发送形状中指定的消息实际上是用新值构造的消息。

分析问题的方法是查看通过发送端口的消息的上下文属性,方法是在管道之前启用属性跟踪,或者停止(但不是取消登记)发送端口并查看暂停消息的上下文属性。

如果通过发送端口的消息的 StudentID = 7,那么您已经完成了#3 或#1,见下文。

如果消息包含接收端口和 StudentID 的详细信息,那么它是直接来自接收端口的 #1。但是,我希望在 Orchestration 尝试发布具有不同 StudentID 的消息时看到错误,除非 Orchestration 甚至没有 运行(查看跟踪实例)或见下文。

如果通过发送端口的消息具有 BTS.SPID 的提升 属性,则逻辑端口将根据 #2 绑定到发送端口。

如果您每输入一条消息都会收到两条消息,那么您将收到上述消息中的一条,并且已完成#1 和#2。

在摘要中,只要消息未按您预期的方式路由,请始终检查消息的上下文属性。