BizTalk 2010 Сообщение о назначении карты показывает все узлы

У меня есть исходная схема с меньшим количеством элементов, чем схема назначения. Когда я запускаю карту, отображаются только сопоставленные элементы в схеме назначения. Я хочу, чтобы все элементы в схеме назначения отображались, даже если они пусты. Как это сделать?


person g_eduard    schedule 12.07.2013    source источник


Ответы (2)


Установите «Значение по умолчанию» выходной схемы. Это создаст пустые узлы.

person Marvin Smit    schedule 12.07.2013
comment
Извините за поздний ответ, но для схемы нет значения по умолчанию! Когда я вхожу в выходную схему (файл xsd), а затем выбираю схему, для всей схемы такого свойства нет. - person g_eduard; 15.07.2013
comment
В программе сопоставления BizTalk есть параметр «значение по умолчанию». Выберите целевой узел, перейдите к свойствам и найдите «значение по умолчанию». - person Marvin Smit; 15.09.2013

Удобнее всего использовать для этого функтоид Inline C# Scripting.

Скриптовый функтоид:

public string GetEmptyString()
{
    return System.String.Empty;
}

Вы можете просто связать этот функтоид со всеми выходными узлами, где вы хотите видеть пустой узел.

Пример:

Входная схема:

<xs:schema xmlns="http://person" targetNamespace="http://person" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="Person">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Name" type="xs:string" />
                <xs:element name="Surname" type="xs:string" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

Выходная схема:

<xs:schema xmlns="http://employee" 
           targetNamespace="http://employee" 
           xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Employee">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="FirstName" type="xs:string" />
        <xs:element name="MidName" type="xs:string" />
        <xs:element name="LastName" type="xs:string" />
        <xs:element name="Age" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

Входное сообщение:

<ns0:Person xmlns:ns0="http://person">
  <Name>John</Name>
  <Surname>Snow</Surname>
</ns0:Person>

Ожидаемое выходное сообщение:

<ns0:Employee xmlns:ns0="http://employee">
  <FirstName>John</FirstName> 
  <MidName /> 
  <LastName>Snow</LastName> 
  <Age /> 
</ns0:Employee>

Решение:

  • Связать Person.Name с Employee.FirstName
  • Связать Person.Surname с Employee.LastName
  • Создайте скриптовый функтоид, который возвращает пустую строку
  • Связать функтоид сценариев с Employee.MidName
  • Связать функтоид сценариев с Employee.Age
person FCR    schedule 16.07.2013