接收XmlDocument的直接绑定业务流程的无法解释的路由失败

时间:2014-11-10 15:09:06

标签: biztalk subscription biztalk-2013 biztalk-orchestrations

我创建了一个带有包含布尔属性IsForFramework的属性架构的业务流程项目。我的目标是让业务流程接收所有类型为System.Xml.XmlDocument的消息,这些消息具有值为true的提升属性。

这是属性架构的一部分:

<xs:schema xmlns="http://Bakker.Framework.Orchestrations.Framework" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" targetNamespace="http://Bakker.Framework.Orchestrations.Framework" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:annotation>
    <xs:appinfo>
      <b:schemaInfo schema_type="property" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" /> 
    </xs:appinfo>
  </xs:annotation>
  <xs:element name="IsForFramework" type="xs:boolean">
    <xs:annotation>
      <xs:appinfo>
        <b:fieldInfo propertyGuid="9358dd05-92f7-4c84-8dc1-8427bea580a6" propSchFieldBase="MessageContextPropertyBase" /> 
      </xs:appinfo>
    </xs:annotation>
  </xs:element>
</xs:schema>

接收形状上的过滤器表达式:

(Bakker.Framework.Orchestrations.IsForFramework == true)

从BizTalk控制台查询的实际订阅:

http://Bakker.Framework.Orchestrations.Framework.IsForFramework == True

路由失败报告上下文中:

IsForFramework  True    Promoted    http://Bakker.Framework.Orchestrations.Framework

对于我的生活,我不能弄清楚这里可能出现的问题。

2 个答案:

答案 0 :(得分:2)

尝试过滤器表达式:

Bakker.Framework.Orchestrations.IsForFramework ==&#34; True&#34;

单引号也可能有效,Orchestration Designer中的表达式编辑器与BT Admin中的表达式编辑器不同。

答案 1 :(得分:1)

在与MDeSchaepmeester进行一些讨论之后,确定了潜在的问题是正在推广该上下文属性的Pipeline组件以及它作为字符串提升的所有其他属性,但是此上下文属性在Property Schema中被定义为布尔值。 来自IBaseMessageContext.Promote Method “如果提升属性的类型与订阅中指定的值不匹配,则比较将失败,并且不会发生消息订阅。”

在这种情况下,您有两个选项

1)在升级时确保将对象强制转换为布尔值。

2)将字段类型更改为String,并按照Johns-305的建议将过滤器表达式更改为Bakker.Framework.Orchestrations.IsForFramework ==“True”(如果它们匹配类型,则不会出现错误)