Текущее время: Чт, мар 19 2026, 01:28

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Контексты в мапинге
СообщениеДобавлено: Ср, окт 08 2014, 09:24 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, ноя 22 2012, 10:25
Сообщения: 322
Добрый день.

У меня вот какая проблема:

есть графический мапинг поля. пример:

Изображениеhttps://yadi.sk/i/Mj-qGBAVbsd8c

Вот в старом рабочем мапинге поле SHIP_POINT получается заменой символа в зависимости от другого поля.


Изображениеhttps://yadi.sk/i/wi0gpzy6bscrx

Результат вроде такой как надо, но если включить то, что закрашено оранжевым (висячий фрагмент) после IF
Изображениеhttps://yadi.sk/i/kiFW3izCbsdbC
, возникает проблема с контекстом результата. То есть резальтат нужен на уровне item, а поле SOURCE_STGE на более высоком уровне. Как тут согласовать контексты? Помогите, если можете ;-(

PS: Видны ли картинки?

PPS: выложил картинки на savepic


Последний раз редактировалось doleynikov Пн, окт 20 2014, 16:22, всего редактировалось 1 раз.

Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Контексты в мапинге
СообщениеДобавлено: Ср, окт 08 2014, 12:55 
Директор
Директор

Зарегистрирован:
Вт, июл 18 2006, 17:44
Сообщения: 1001
Откуда: что и все
Пол: Мужской
картинки не видны

_________________
Telegram-chat: PO, CPI-PI, java, groovy


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Контексты в мапинге
СообщениеДобавлено: Ср, окт 08 2014, 12:56 
Директор
Директор

Зарегистрирован:
Вт, июл 18 2006, 17:44
Сообщения: 1001
Откуда: что и все
Пол: Мужской
напиши текстом более краткий пример и вопрос, дерево на 2-3 поля.

_________________
Telegram-chat: PO, CPI-PI, java, groovy


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Контексты в мапинге
СообщениеДобавлено: Ср, окт 08 2014, 13:22 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, ноя 22 2012, 10:25
Сообщения: 322
ок, получается с Яндекс диска картинки не видны. жаль.

смысл вот в чем:

исходный документ:
Code:
<Сегмент>
   поле1
   поле2
   поле3
   <элемент>
      поле11
      поле12
   </элемент>
   <элемент>
      поле21
      поле22
   </элемент>
</Сегмент>

Результирующий документ
Code:
<SEGMENT>
<item>
      (Если поле1=С001 то поле1, иначе если поле11=ХХХ то поле12 иначе поле3)
</item>
<item>
      (Если поле1=С001 то поле1, иначе если поле21=ХХХ то поле22 иначе поле3)
</item>
</SEGMENT>

Вот как-то так. пока было просто
Code:
если поле21=ХХХ то поле22 иначе поле3
- все работало, а когда появляется
Code:
Если поле1=С001 то поле1, иначе...
- заполняется только первое item.

Ну в результате некоторых не совсем понятных мне махинаций, я добился нужного результата. Но это не совсем меня устраивает, так как я не понимаю почему так работает, а предыдущий вариант ошибочен. Я фиктивно добавил поле с уровня <элемент> в условие
Code:
поле1=С001 И поле11>0
так как поле11 не может быть меньше или равно нулю, эта часть не повлияет на значение, но контекст передастся в результат и поставил SplitByValue перед присвоением результата.

Но получилось так сложно!


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Контексты в мапинге
СообщениеДобавлено: Чт, окт 09 2014, 09:52 
Директор
Директор

Зарегистрирован:
Вт, июл 18 2006, 17:44
Сообщения: 1001
Откуда: что и все
Пол: Мужской
то есть для элемент[0] надо проверять поле11 а для элемент[1] -- поле21? элемент[2..n] уже неважны?

_________________
Telegram-chat: PO, CPI-PI, java, groovy


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Контексты в мапинге
СообщениеДобавлено: Чт, окт 09 2014, 11:32 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, ноя 22 2012, 10:25
Сообщения: 322
то есть, если поле1 содержит некоторое значение, то остальные условия не важны. Если нет, то вроверяем соответствующий полеХ1 (поле11, поле21,поле31 итд) если там значение соответсвует какой-то константе, то возврящаем полеХ2 (12,22,32 итд) иначе подставляем поле3 с более высокого уровня.

вот как-то так. Жаль, что картинки не цепляются


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Контексты в мапинге
СообщениеДобавлено: Пн, окт 20 2014, 10:42 
Ассистент
Ассистент

Зарегистрирован:
Пн, окт 20 2014, 10:13
Сообщения: 47
Если я правильно понял, то количество Item в выходном сообщении должно быть равно количеству элементов в исходном.

Вот такой мэппинг у меня получился:

Изображение

Контекст у FirstField и SecondField - корень (MT_Segment)

Функция FieldsGet:

Execution Type: All Values of Context,
Argument:
TopFields
ElementFields1
ElementFields2

Code:
for (int i = 0; i<ElementFields1.length;i++)
{
if (TopFields[0].equals("С001"))
{
result.addValue(TopFields[0]);
continue; // мб лишнее
}
else
if (ElementFields1[i].equals("XXX"))
{
result.addValue(ElementFields2[i]);
}
else
{
result.addValue(TopFields[2]);
}
}


В этой функции зашита вся логика работы по сути.

В item передаем element
/ns0:MT_OutputSegment/item=/ns0:MT_Segment/Element


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Контексты в мапинге
СообщениеДобавлено: Вт, окт 21 2014, 11:37 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, ноя 22 2012, 10:25
Сообщения: 322
Да, про функцию и я задумывался, но все равно остается проблема контекстов, то есть при некотором сочетании входных параметров, значение может быть неопределенным. В итоге я все-таки получил то, что мне нужно, хотя и не понял почему ;-)

Изображение
Изображение


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Контексты в мапинге  Тема решена
СообщениеДобавлено: Вт, окт 21 2014, 11:56 
Ассистент
Ассистент

Зарегистрирован:
Пн, окт 20 2014, 10:13
Сообщения: 47
doleynikov написал(а):
В итоге я все-таки получил то, что мне нужно, хотя и не понял почему ;-)


ну это нормально (с) :)


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB