Сопоставление сообщений SAP PI со списком значений - PullRequest
0 голосов
/ 21 ноября 2018

В SAP PI 7.4 я испытываю некоторые трудности при попытке сопоставить что-либо в отображении сообщения, что может показаться довольно простым.

Ввод примерно такой.

<Employee>
      <ExternalIdList>
          <ExternalId>aaa</ExternalId>
          <ExternalId>bbb</ExternalId>
          <ExternalId>ccc</ExternalId>
      </ExternalIdList>
</Employee>

Iэто нужно для сопоставления с чем-то со следующей структурой

<Newobject>
 <ExternalEmployeeList>
  <ExternalEmployee>
   <ExternalId>aaa</ExternalId>
  </ExternalEmployee>
  <ExternalEmployee>
   <ExternalId>bbb</ExternalId>
  </ExternalEmployee>
  <ExternalEmployee>
   <ExternalId>ccc</ExternalId>
  </ExternalEmployee>
 </ExternalEmployeeList>
</Newobject>

При попытке сопоставить, я бы сделал это следующим образом:

Employee -> NewObject

ExternalIdList -> ExternalEmployeeList

ExternalId -> ExternalEmployee

ExternalId -> ExternalId

При проверке сопоставления создаются 3 узла ExternalEmployee, но только первый содержит значение «aaa» вВнешний идентификатор.Другие 2 ExternalEmployee не получают ExternalId:

<Newobject>
 <ExternalEmployeeList>
  <ExternalEmployee>
   <ExternalId>aaa</ExternalId>
  </ExternalEmployee>
  <ExternalEmployee/>
  <ExternalEmployee/>
  </ExternalEmployee>
 </ExternalEmployeeList>
</Newobject>

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

Может быть, заранее добавить отображение XSLT, чтобы вставить уровень между ExternalIdList и ExternalId во входное сообщение?Кажется, для этого очень много размышлений.

Заранее спасибо, каждый совет в правильном направлении приветствуется!

1 Ответ

0 голосов
/ 22 февраля 2019

проблема должна заключаться в отсутствии изменения контекста в теге ExternalId.

попытаться исправить сопоставление следующим образом:

ExternalEmployee (target) = ExternalEmployee

ExternalId(target) = splitByValue (ExternalId)

настроить splitByValue, выбрав « Каждое значение »

ExternalIDScreenshot

Также убедитесь, что целевой ExternalEmployee имеет 1.. неограниченное вхождение!

Это результат Result

BestС уважением!

...