我已经阅读过关于我们可以在业务流程中提升财产的内容。以下是我的步骤 -
我没有收到任何错误。但我希望如果“StudentID”为7则应该订阅。
问题 - 我认为它不会检查“StudentID”的值,因为消息文件总是在out文件夹中删除。
我错过了什么吗?
答案 0 :(得分:1)
你可能会遗漏几件事
如果接收端口上的消息具有具有相同提升属性并且正确StudentID为7的消息,则业务流程和发送端口都将订阅该消息。因此,如果您在Orchestration中将StudentID设置为其他内容,则您通过发送端口发送的消息实际上并未通过Orchestration,而是直接来自接收端口。
修复:将收到的消息的值设置为其他值
或者没有入站消息中的提升属性。
您已在业务流程中指定了“稍后指定”的逻辑端口,然后将其绑定到“发送端口”。默认情况下,发送端口始终订阅其唯一ID。当Orchestration通过绑定到发送端口的逻辑端口发布消息时,它会在发布消息时设置并提升该ID。即使添加订阅规则也意味着它会将其视为BTS.SPID = {id} OR {your rule}
。这意味着即使StudentID与发送端口上的订阅规则不匹配,它也将与SPID匹配并仍然将其取出。
修复:将业务流程中的逻辑端口更改为直接绑定。
第三种可能性是,在Orchestration中,您发布的消息实际上具有7的StudentID。
修复:检查构造形状(地图和分配)以确保您实际将其设置为其他值。确保Send Shape中指定的消息实际上是使用新值构造的消息。
分析问题的方法是查看通过发送端口的消息的上下文属性,方法是在管道之前启用跟踪属性,或者通过停止(但不是Unenlisting)发送端口并查看在暂停消息的上下文属性中。
如果通过发送端口的消息的StudentID = 7,则表示您已完成#3或#1,请参阅下文。
如果消息包含接收端口的详细信息以及StudentID,则它根据#1直接来自接收端口。但是,我希望Orchestration在尝试发布具有不同StudentID的消息时会看到错误,除非Orchestration甚至没有运行(查看跟踪的实例)或者见下文。
如果通过发送端口的消息具有BTS.SPID的提升属性,则逻辑端口将按照#2绑定到发送端口。
如果您为每个人输入了两条消息,那么您将拥有上述每条消息中的一条并完成#1& #2。
在摘要中,只要消息没有以您期望的方式路由,请始终检查消息的上下文属性。