我创建了一个带有包含布尔属性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
对于我的生活,我不能弄清楚这里可能出现的问题。
答案 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”(如果它们匹配类型,则不会出现错误)