在 Orchestration 中提升 属性
Promoted Property in Orchestration
我读到我们可以在编排中提升 属性。以下是我的步骤 -
- 创建一个新的 "StudentID" 提升 属性。
- 更改值"MessageContextPropertyBase"。
- 更新编排中 "StudentID" 的值。
- 创建 "StudentID" 的新关联集。
- 正在初始化发送形状的相关集。
- 在 BizTalk 管理员控制台中创建发送端口。
- 设置过滤器"POC.PromotedProINOx.Schema.PropertySchema.StudentID == "7" "
我没有收到任何错误。但我希望如果 "StudentID" 是 7 那么它应该被订阅。
问题 - 我认为它没有检查 "StudentID" 的值,因为消息文件总是放在输出文件夹中。
我是不是漏掉了什么?
您可能遗漏了几件事
如果接收端口上的消息具有相同的提升 属性 且 StudentID 为 7 的消息,则编排和发送端口都将订阅它。因此,如果您将 StudentID 设置为 Orchestration 中的其他内容,则您通过发送端口发送的消息实际上并未通过 Orchestration,而是直接来自接收端口。
修复:将接收到的消息的值设置为其他值
或者在入站消息中没有提升的 属性。
您已在稍后指定的编排中指定逻辑端口,然后将其绑定到发送端口。默认情况下,发送端口始终订阅其唯一 ID。当 Orchestration 通过绑定到发送端口的逻辑端口发布消息时,它会在发布消息时设置并提升该 ID。即使添加订阅规则也只是意味着它会将其视为 BTS.SPID = {id} OR {your rule}
。这意味着即使 StudentID 与发送端口上的订阅规则不匹配,它也会与 SPID 匹配并仍然选择它。
修复:将编排中的逻辑端口更改为直接绑定。
第三种可能性是,从 Orchestration 来看,您发布的消息实际上有一个 StudentID 7。
修复:检查您构建的形状(地图和分配)以确保您实际上将其设置为另一个值。确保发送形状中指定的消息实际上是用新值构造的消息。
分析问题的方法是查看通过发送端口的消息的上下文属性,方法是在管道之前启用属性跟踪,或者停止(但不是取消登记)发送端口并查看暂停消息的上下文属性。
如果通过发送端口的消息的 StudentID = 7,那么您已经完成了#3 或#1,见下文。
如果消息包含接收端口和 StudentID 的详细信息,那么它是直接来自接收端口的 #1。但是,我希望在 Orchestration 尝试发布具有不同 StudentID 的消息时看到错误,除非 Orchestration 甚至没有 运行(查看跟踪实例)或见下文。
如果通过发送端口的消息具有 BTS.SPID 的提升 属性,则逻辑端口将根据 #2 绑定到发送端口。
如果您每输入一条消息都会收到两条消息,那么您将收到上述消息中的一条,并且已完成#1 和#2。
在摘要中,只要消息未按您预期的方式路由,请始终检查消息的上下文属性。
我读到我们可以在编排中提升 属性。以下是我的步骤 -
- 创建一个新的 "StudentID" 提升 属性。
- 更改值"MessageContextPropertyBase"。
- 更新编排中 "StudentID" 的值。
- 创建 "StudentID" 的新关联集。
- 正在初始化发送形状的相关集。
- 在 BizTalk 管理员控制台中创建发送端口。
- 设置过滤器"POC.PromotedProINOx.Schema.PropertySchema.StudentID == "7" "
我没有收到任何错误。但我希望如果 "StudentID" 是 7 那么它应该被订阅。
问题 - 我认为它没有检查 "StudentID" 的值,因为消息文件总是放在输出文件夹中。
我是不是漏掉了什么?
您可能遗漏了几件事
如果接收端口上的消息具有相同的提升 属性 且 StudentID 为 7 的消息,则编排和发送端口都将订阅它。因此,如果您将 StudentID 设置为 Orchestration 中的其他内容,则您通过发送端口发送的消息实际上并未通过 Orchestration,而是直接来自接收端口。
修复:将接收到的消息的值设置为其他值 或者在入站消息中没有提升的 属性。您已在稍后指定的编排中指定逻辑端口,然后将其绑定到发送端口。默认情况下,发送端口始终订阅其唯一 ID。当 Orchestration 通过绑定到发送端口的逻辑端口发布消息时,它会在发布消息时设置并提升该 ID。即使添加订阅规则也只是意味着它会将其视为
BTS.SPID = {id} OR {your rule}
。这意味着即使 StudentID 与发送端口上的订阅规则不匹配,它也会与 SPID 匹配并仍然选择它。
修复:将编排中的逻辑端口更改为直接绑定。第三种可能性是,从 Orchestration 来看,您发布的消息实际上有一个 StudentID 7。
修复:检查您构建的形状(地图和分配)以确保您实际上将其设置为另一个值。确保发送形状中指定的消息实际上是用新值构造的消息。
分析问题的方法是查看通过发送端口的消息的上下文属性,方法是在管道之前启用属性跟踪,或者停止(但不是取消登记)发送端口并查看暂停消息的上下文属性。
如果通过发送端口的消息的 StudentID = 7,那么您已经完成了#3 或#1,见下文。
如果消息包含接收端口和 StudentID 的详细信息,那么它是直接来自接收端口的 #1。但是,我希望在 Orchestration 尝试发布具有不同 StudentID 的消息时看到错误,除非 Orchestration 甚至没有 运行(查看跟踪实例)或见下文。
如果通过发送端口的消息具有 BTS.SPID 的提升 属性,则逻辑端口将根据 #2 绑定到发送端口。
如果您每输入一条消息都会收到两条消息,那么您将收到上述消息中的一条,并且已完成#1 和#2。
在摘要中,只要消息未按您预期的方式路由,请始终检查消息的上下文属性。