Использование BizTalk 2016 FP3 CU5.
У меня есть правило BRE, которое принимает 4 типизированных XML-документа и одно соединение для передачи данных.
Я настроил оркестровку, чтобы выполнить ее, используя форму правил вызова.
Я использую BizTalk Deployment Framework (BTDF) для развертывания, и это делает хорошую работу по развертыванию политик BRE для. Моя проблема в том, что в экспортированном xml для политики (с именем NotificationService.xml) есть жестко запрограммированная ссылка на базу данных, используемую в правиле, как показано ниже:
<datarow ref="db_32" server="SDEIDBTI04\CrossRef" dataset="CrossRef" table="Lookups"
Это относится к моему dev vm, но поскольку решение продвигается через тестирование и в производство, имя сервера должно измениться соответствующим образом.
Мое текущее решение этой проблемы состоит в том, чтобы использовать возможность BTDF для предварительной обработки XML-файлов и замены значением из файла Excel EnvironmentSettings, взятым из SSO. Итак, я создал «NotificationService.Dynamic.xml», в котором я изменил предыдущую строку на:
<!-- ifdef ${_xml_preprocess} -->
<datarow ref="db_32" server="${Common.Components.CrossRefDbServer}\CrossRef" dataset="CrossRef" table="Lookups" instances="16" selectivity="1" isdataconnection="true" instance="0" />
<!-- endif -->
(* есть веская причина, по которой я должен был оставить ifdefs!)
В моем файле deploy.btdfproj я добавил следующее, чтобы обеспечить развертывание предварительно обработанной политики:
<FilesToXmlPreprocess Include="NotificationService.Dynamic.xml"
Condition="'$(Configuration)' == 'Server'">
<LocationPath>..\</LocationPath>
<OutputFilename>NotificationService.Dynamic_Processed.xml</OutputFilename>
</FilesToXmlPreprocess>
<FilesToXmlPreprocess Include="NotificationService.Dynamic.xml" Condition="'$(Configuration)' != 'Server'">
<LocationPath>..\NotificationService\NotificationService.BRE</LocationPath>
<OutputFilename>NotificationService.Dynamic_Processed.xml</OutputFilename>
</FilesToXmlPreprocess>
<RulePolicies Include="NotificationService.Dynamic_Processed.xml">
<LocationPath>..\NotificationService\NotificationService.BRE</LocationPath>
</RulePolicies>
Это работает, но я не могу не думать, что слишком усложнил решение. Каждый раз, когда я экспортирую новую версию политики, мне приходится проходить через сложность создания файла NotificationService.Dynamic.xml из экспортированного файла NotificationService.xml. Как люди решают ту же проблему, когда не используют BTDF?
Если окажется, что я выбрал лучший путь, то, надеюсь, этот вопрос поможет другим в будущем - я не смогу найти ответы от Google!