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 со следующими установленными этапами:Свойства этапа декодирования и XML-дизассемблер по умолчанию

Моя политика настроена так: PurchaseOrderRules - Политика

Все мои порты настроены правильно, используя вышеуказанный конвейер в моем ReceiveLocation.

Отправленное мною Xml-сообщение является тем, которое используется в качестве входных данных, однако выходное Xml-сообщение должно содержать значение Status "Approved", но оно остается как "Denied".

По сути, вопрос здесь заключается в том, что я делаю неправильно, что препятствует использованию моей политики на конвейере, помните, что "если условие" моей политики всегда верно.

1 ответ

Решение

Я проверял автора BRE Pipeline Framework, и это его ответ.

Я не вижу, что InstructionLoaderPolicy используется в этом вопросе вообще. Тип документа XML должен быть указан в InstructionLoaderPolicy, чтобы факты на основе XML были доступны для ExecutionPolicy. Это задокументировано здесь (после текста "Создание объекта TypedXMLDocument") - https://adventuresinsidethemessagebox.wordpress.com/2014/03/19/using-the-bre-pipeline-framework-to-assess-and-update-xml-message-content-using-xml-vocabularies/. Важно, чтобы тип сообщения, указанный в InstructionLoaderPolicy, соответствовал типу сообщения в словаре XML.

Ваше предложение для него применить параметр TrackingFolder было точным. Вероятно, он увидит, что факт XML не утвержден, и, следовательно, правило не сработало. Использование CAT-трассировки также будет очень полезно.

Другие вопросы по тегам