днем все,
Я изучаю BizTalk и застрял в этой проблеме.
Есть группа выбора с телефоном или адресом.
Я могу получить некоторые поля адреса, которые будут подавлены при выводе телефона.
Чтобы упростить ситуацию, я просто расскажу о поле «CityName».
Я пробовал следующее:
Сопоставил узел «Город» (текст) во входном файле с «CityName» в выходных данных. Подключен логический функтоид Exists к узлу «Address1» на входном узле и «CityName» на выходе. Я всегда получаю название города с заполненным текстом.
Сопоставил узел "Город" во входном файле и логический функтоид Exists с Value Mapper функтоидом. Подключил функтоид Value Mapper к CityName в выходных данных. Я получаю название города в адресном узле (правильно) и пустой узел в телефонном узле (неверно).
Сопоставил узел "City" во входном файле и логический функтоид Exists с Value Mapper (Flatinting) functoid. Подключил Value Mapper (Сглаживание) функтоид к CityName на выходе. Я получаю название города в адресном узле (правильно) и пустой узел в телефонном узле (неверно).
Я думал, что один из двух последних должен был сработать, но оба дают пустой узел вместо подавленного узла. Пустые узлы не имеют атрибутов.
Узел CityName описывается этим типом схемы:
<xsd:complexType name="NameType">
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="languageID" type="xsd:language" use="optional">
</xsd:attribute>
<xsd:attribute name="sequence" type="IntegerNumericType">
</xsd:attribute>
<xsd:attribute name="sequenceName" type="StringType" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:simpleType name="IntegerNumericType">
<xsd:restriction base="xsd:integer" />
</xsd:simpleType>
<xsd:simpleType name="StringType">
<xsd:restriction base="xsd:string" />
</xsd:simpleType>
Есть ли что-то в определении типа, что заставляет создавать пустой узел?
Спасибо
РЕДАКТИРОВАТЬ: ниже неправильный вывод. Второй и третий узлы связи имеют
адрес дочернего узла и не должен.
У меня есть петлевый функтоид на телефонных номерах и первая строка адреса в плоской схеме ввода. Это производит три узла связи. Я использую функтоид Logical Existance в адресной строке для подавления информации о телефоне в первом узле. У меня есть логический Not функтоид на выходе того, который напрямую связан с узлом Address в схеме вывода. Я думал, что это должно отключить весь адресный узел, но это не так.
Я попытался добавить функтоид Value Mapping , соединенный с функтоидом Logical Existance , к элементам названия города и почтового индекса, что делает их пустыми, но они не исчезнут. ARG!
Я проверил, и все поля установлены в ноль MinOccurs, и я не верю, что им присвоено значение по умолчанию.
<ns0:Communication>
<ns0:Address>
<ns0:AddressLine sequence="1">1234 My St</ns0:AddressLine>
<ns0:AddressLine sequence="2">Apt. 2</ns0:AddressLine>
<ns0:CityName>Kansas City</ns0:CityName>
<ns0:CountrySubDivisionCode name="State">MO</ns0:CountrySubDivisionCode>
<ns0:CountrySubDivisionCode name="County">Jackson</ns0:CountrySubDivisionCode>
<ns0:CountryCode>US</ns0:CountryCode>
<ns0:PostalCode>64099</ns0:PostalCode>
</ns0:Address>
</ns0:Communication>
<ns0:Communication sequence="1">
<ns0:ChannelCode>Telephone</ns0:ChannelCode>
<ns0:UseCode>Personal</ns0:UseCode>
<ns0:DialNumber>1234567890</ns0:DialNumber>
<ns0:Address>
<ns0:CityName />
<ns0:CountryCode />
<ns0:PostalCode>64099</ns0:PostalCode>
</ns0:Address>
</ns0:Communication>
<ns0:Communication sequence="2">
<ns0:ChannelCode>Telephone</ns0:ChannelCode>
<ns0:UseCode>Business</ns0:UseCode>
<ns0:DialNumber>0987654321</ns0:DialNumber>
<ns0:Address>
<ns0:CityName />
<ns0:CountryCode />
<ns0:PostalCode>64099</ns0:PostalCode>
</ns0:Address>
</ns0:Communication>