来自主题, 我有一个接收位置,当前使用sql adapter(接收端口)来调用(轮询?)存储过程。存储过程返回FOR XML结果。 接收器然后激活一个编排,该编排接收消息并将消息中的数据填充到一些变量(表达形状)中。
Orchestration看起来像:
LongScope[ AtomicScope[ Receive location -> Expression ] ][Error handling]
我尝试使用XMLpolling直接迁移到wcf-sql作为InboundOperationType,但它在变量赋值期间抛出一个空异常(我假设)。
其他细节: 我通过使用发送端口过滤pipelineName来从接收器捕获消息。 sql和wcf-sql adapter
检索的消息略有不同SQL:
<rootNode xmlns="namespace"><row data1="data1" data2 = "data2" /></rootnode>
WCF-SQL:
<rootNode xmlns="namespace"><row data1="data1" data2 = "data2" xmlns=""/></rootnode>
,那该怎么办?
我也进入了编排调试器。奇怪的是,当使用sql适配器时,消息仍然是= null,但是varibles被分配没有问题。我还尝试在接收端口之后直接添加发送端口来转储消息。什么都没出来
我将不胜感激任何信息/建议/解决方案 如果我遗漏任何信息,请告诉我。
不相关的信息: 截至本文,接收端口甚至不再触发。我不知道为什么。重启PC。 此外,我怀疑Biztalk给了我的磨牙症并导致我需要6颗牙齿填充物
答案 0 :(得分:1)
SQL中的XML与WCF-SQL之间的区别与您链接的MSDN post无关。
在第二个XML(WCF-SQL适配器)中,行节点没有命名空间。在第一个XML(SQL适配器)中,行节点继承了默认命名空间&#34; namespace&#34;来自其父母:&#39; root&#39;。
关于接收端口不再触发: 您确定您的主机实例仍在运行吗?
答案 1 :(得分:0)
我的解决方案: 我在存储过程中添加了“xmlns ='namespace'”作为“数据”。 适配器识别并删除它(因为它与父节点相同),允许我使用旧模式。
填料: 所以我使用WCF-SQL适配器的输出生成了一个模式, 但是我无法用它来替换旧的,因为表达式形状将无法识别其子元素(var = messageObject。 childElement ) 我创建了一张地图,将新地图映射回旧地图。 但这没有用,因为它们都共享相同的命名空间,而biztalk在运行时抱怨它无法决定使用哪个架构。