У меня есть требование в карте BizTalk, где
Я сопоставлю некоторые элементы из исходной схемы в схему назначения, где значения будут назначены элементам схемы назначения на основании некоторого условия.
Если эти значения не назначены, мне нужно отправить некоторое значение по умолчанию (N / A).
Моя карта не является One-to-One, поэтому я могу использовать скриптообразный функтоид и отправлять значение по умолчанию. Кроме того, схема назначения представляет собой плоский файл, а в исходной схеме мне приходится многократно повторять цикл .
Так что любое тело может дать мне несколько советов о том, «Как установить значение по умолчанию для элемента в схеме назначения, если ничего не отображается», используя BizTalk Map / некоторые настройки в схеме.
Что я уже пробовал, так это то, что я открыл схему назначения для всех элементов, для которых я установил значение 'N / A' для свойства -> "DefaultValue", которое было на вкладке свойства, но когда ничего не отображается, значение по умолчанию не приходит. Вместо этого сам узел не создается в выходном файле.
Пожалуйста, смотрите карту ниже для хорошего понимания
альтернативный текст http://www.biztalkgurus.com/cfs-filesystemfile.ashx/__key/CommunityServer.Discussions.Components.Files/13/0131.problem.JPG
Исходная схема является схемой XML.
Схема назначения представляет собой схему плоского файла.
Теперь на приведенной выше карте в моей исходной схеме есть узел с именем F4706, который будет зацикливаться.
Когда элемент «TypeAddressNumber» в F4706 равен «1», тогда я сопоставляю оставшиеся поля этого экземпляра F4706 для «отправки в» детали в моей схеме назначения
Когда элемент "TypeAddressNumber" в F4706 равен "2", я сопоставляю остальные поля этого экземпляра F4706 с деталями "Reseller" в моей схеме назначения
Когда элемент "TypeAddressNumber" в F4706 равен "3", тогда я сопоставляю оставшиеся поля этого экземпляра F4706 с деталями "EndUser" в моей схеме назначения
Теперь, если я подключу функтоид «Логическое НЕ» к функтоиду «Логическое равенство» и назначу какое-то значение по умолчанию, то мой целевой узел будет выполнен три раза, как только один раз, когда «=» возвращает один раз true, а два раза - false. Но я хочу, чтобы, если что-то было отображено, сопоставьте его с экземпляром «F4706» или назначьте значение по умолчанию.
Найдите файл INPUT ниже
альтернативный текст http://www.biztalkgurus.com/cfs-filesystemfile.ashx/__key/CommunityServer.Discussions.Components.Files/13/5430.ip.JPG
Вывод, который я ожидаю и получаю:
альтернативный текст http://www.biztalkgurus.com/cfs-filesystemfile.ashx/__key/CommunityServer.Discussions.Components.Files/13/0724.curOP.JPG
Теперь, если входной файл подобен указанному ниже:
альтернативный текст http://www.biztalkgurus.com/cfs-filesystemfile.ashx/__key/CommunityServer.Discussions.Components.Files/13/6403.otherIP.JPG
То есть, когда у меня нет узла "F4706" с TypeAddressNumber = 2, мне нужно заполнить "N / A" в связанных с реселлером узлах в моей схеме назначения, что должно выглядеть следующим образом:
альтернативный текст http://www.biztalkgurus.com/cfs-filesystemfile.ashx/__key/CommunityServer.Discussions.Components.Files/13/0435.nextOP.JPG
Если вы идете и проверяете генерируемый XLST, он пишет xsl: foreach, поэтому, если вы используете xsl: choose /, в противном случае условия проверяются несколько раз, и мои выходные узлы дублируются.
Я также попытался использовать некоторую глобальную переменную в XLST в первом цикле и во втором цикле для доступа к нему и записи значения по умолчанию, к сожалению, это тоже не работает. Потому что переменная в XLST не является ИСТИННОЙ переменной. Я думаю, что это постоянный.
Как добиться этой ЛЮБОЙ помощи, высоко ценится.