Текущее время: Пт, апр 26 2024, 21:48

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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