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-сообщение должно содержать значение 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-трассировки также будет очень полезно.