BizTalk 业务规则引擎管道框架

BizTalk Business Rules Engine Pipeline Framework

我有这条 XML 消息:

<ns0:PurchaseOrder xmlns:ns0="http://Samples.BreFramework.Schemas.Schema1">
  <Header>
    <ReqID>ReqID_0</ReqID>
    <Date>Date_0</Date>
  </Header>
  <Item>
    <Description>Description_0</Description>
    <Quantity>400</Quantity>
    <UnitPrice>20</UnitPrice>
  </Item>
  <Status>Denied</Status>
</ns0:PurchaseOrder>

我正在使用名为 PurchaseOrder_Receive 的管道,其中设置了以下阶段:

我的政策是这样设置的:

我的所有端口都已正确配置,在我的 ReceiveLocation 中使用上述管道。

我发布的 Xml 消息被用作输入,但是,输出 Xml 消息应该包含状态值 "Approved",但它仍然是 "Denied".

基本上,这里的问题是,我做错了什么导致我的政策无法在管道上使用,请记住我的政策 "If condition" 始终是正确的。

我联系了 BRE 管道框架的作者,这是他的回复。

I do not see an InstructionLoaderPolicy being used in the question at all. The XML document type must be asserted in the InstructionLoaderPolicy for XML based facts to be accessible to the ExecutionPolicy. This is documented here (following the text "To create the TypedXMLDocument object") - https://adventuresinsidethemessagebox.wordpress.com/2014/03/19/using-the-bre-pipeline-framework-to-assess-and-update-xml-message-content-using-xml-vocabularies/. It's important that the message type specified in InstructionLoaderPolicy matches the message type in the XML vocabulary.

Your suggestion for him to apply the TrackingFolder parameter was spot on. He'd likely see the XML fact wasn't asserted and thus the rule didn't fire. Using CAT instrumentation tracing would also be very helpful.