Перейти к публикации

Получить свойства POM api


butulec

Рекомендованные сообщения

Здравствуйте!

Подскажите, как получить свойства POM и их свойства.

Я получаю объект TCComponentItemRevision,у него есть свойство с отсутствующей второй ссылкой (нет набора данных).

Пробовал getRelated() и getReferenceProperty(), но они есть только на тех объектах, у кого есть этот набор данных, а мне нужно найти именно отсутствующую (пустую) ссылку без НД. 

Ссылка на сообщение
Поделиться на других сайтах


По возможности хотелось бы все свойства взять, просто каким методом у объекта TCComponentItemRevision можно взять свойства которые справа на скриншоте

3.png

Изменено пользователем butulec
Ссылка на сообщение
Поделиться на других сайтах
1 минуту назад, lexx174 сказал:

через getTCProperty разве никак?

Через getTCProperty можно посмотреть все свойства, которые есть у объекта. Но мне нужно посмотреть именно ссылки для объекта, которые есть в ПОМ-свойствах.

Это свойство вообще может быть пустое, но в нашем случае оно пустое по ошибке, так как нет набора данных. Вот валидность проверить можно при анализе свойства, которое на скриншоте выше (Свойства (POM))

ТО есть если есть ссылка, но нет набора данных - ошибка

А если нет ссылки, свойство все равно будет (пустое) - не ошибка

 

4.png

Изменено пользователем butulec
Ссылка на сообщение
Поделиться на других сайтах

В вашей модели данных для отношения тех.требования значение массив объектов или только один объект?

Ссылка на сообщение
Поделиться на других сайтах
Только что, lexx174 сказал:

В вашей модели данных для отношения тех.требования значение массив объектов или только один объект?

Один объект, MSWord

Ссылка на сообщение
Поделиться на других сайтах
5 минут назад, lexx174 сказал:

TCProperty.getReferenceValue() пробовали?

Оказалось это отношение принимает массив объектов (выдал стек ошибок), я поправил как нужно.

Ситуация старая, если объект есть - он выводится

Если есть ссылка на объект, но набора данных нет - то массив пустой.

Но как определить есть ли сама ссылка ?

5.png

Ссылка на сообщение
Поделиться на других сайтах
Только что, lexx174 сказал:

ссылка - это объект Relation, в вашем случае именуемый Тех.требования, верно?

Верно, на первом скриншоте на выделенной ревизии, в вкладке Анализ влияния, при выборе Свойства (POM) есть перечень ссылок. Там есть ссылка на структуру, карточку-форму, а также на объекты наборов данных которые находятся в ревизии (модели или тех.требования)

Для того чтобы корректно оценить правильная ссылка или мы заходим в карточку ссылки (чтобы посмотреть свойства) и там есть первичный, вторичный объекты и их связь.

У нас бывает что вторичного объекта нет, то есть не был передан, но ссылка на ревизии весит. Вот нам необходимо анализировать такие ситуации, я так понимаю с помощью анализа этих ссылок. 

Ссылка на сообщение
Поделиться на других сайтах

Тогда чтоб получить и перебрать Relation-объекты используйте функции whereReferenced()/whereReferenced(boolean )

 

в вашем случае нужен 2й вариант функции с параметром

Изменено пользователем lexx174
Ссылка на сообщение
Поделиться на других сайтах
15 минут назад, lexx174 сказал:

Тогда чтоб получить и перебрать Relation-объекты используйте функции whereReferenced()/whereReferenced(boolean )

 

в вашем случае нужен 2й вариант функции с параметром

Мы приближаемся к истине)

1. Могли вы пояснить в чем между ними разница (whereReferenced(true) и whereReferenced(false)), у меня результаты разные, во 2 варианте перечень полный.

2. Так как результаты во 2 варианте правильные (нужные, там есть ссылка на тех.требования). Там вывод с UID, перебор ImanRelation. Как их правильно обработать могли бы подсказать? Выяснить наименование этого отношения как можно?

6.png

 

Нашел, whereReferenced.getComponent().getType(), так можно посмотреть тип отношения, но теперь вопрос, как найти вторичный объект по этому отношению?

Изменено пользователем butulec
Ссылка на сообщение
Поделиться на других сайтах

true или false означает варианты просто ссылается или ссылается_POM, что не трудно догадаться (об этом написано в ява доке)

 

 

дальше просто проверяется на if( comp instanceof TCComponentTcRelation)

 

Если класса TCComponentTcRelation нет (я не помню за такой), возможно объекты Relation тогда будут просто TCComponent

чурез "object_name" можно потом отфильтровать нужное отношение

Изменено пользователем lexx174
Ссылка на сообщение
Поделиться на других сайтах
7 минут назад, lexx174 сказал:

true или false означает варианты просто ссылается или ссылается_POM, что не трудно догадаться (об этом написано в ява доке)

 

 

дальше просто проверяется на if( comp instanceof TCComponentTcRelation)

 

Если класса TCComponentTcRelation нет (я не помню за такой), возможно объекты Relation тогда будут просто TCComponent

чурез "object_name" можно потом отфильтровать нужное отношение

Спасибо, искал сегодня очень долго!!! 

Остался последний момент, как найдя нужное отношение, найти по нему вторичный объект, и если его нет, соответственно, то это тот случай который нам нужен)  

Можно конечно извратиться и зайди в TCProperty и проверить значение, но возможно есть вариант по этому пути, имея компонент Relation, или по нему нельзя выйти на вторичный объект?

Изменено пользователем butulec
Ссылка на сообщение
Поделиться на других сайтах

да скорее всего дальше просто через свойства primary_object/secondary_object

 

TCComponentTcRelation есть такой класс? У меня просто eclipse не перед глазами я не могу проверить

Ссылка на сообщение
Поделиться на других сайтах
Только что, lexx174 сказал:

да скорее всего дальше просто через свойства primary_object/secondary_object

 

TCComponentTcRelation есть такой класс? У меня просто eclipse не перед глазами я не могу проверить

Да есть такой класс, но все компоненты попали в этот if при проверке, а мне нужен был конкретный по имени)

Сделал через TCProperty при наличии отношения нужного.

А свойства primary_object/secondary_object смотреть у ревизии вы имеете ввиду? 

Ссылка на сообщение
Поделиться на других сайтах
2 минуты назад, butulec сказал:

Да есть такой класс, но все компоненты попали в этот if при проверке, а мне нужен был конкретный по имени)

Сделал через TCProperty при наличии отношения нужного.

А свойства primary_object/secondary_object смотреть у ревизии вы имеете ввиду? 

у самого отношения тех.требования

Ссылка на сообщение
Поделиться на других сайтах
15 минут назад, lexx174 сказал:

у самого отношения тех.требования

Что то я запутался.

AIFComponentContext[] whereReferenced = itemRevision.whereReferenced(false);
            for (int i = 0; i < whereReferenced.length; i++) {
                TCComponent comp = (TCComponent) whereReferenced.getComponent();
            
            
                AIFComponentContext[] whereReferenced_pr = comp.getPrimary();
                AIFComponentContext[] whereReferenced_sec = comp.getSecondary();

}

Оба массивы пустые.

 

Вот что в модели данных написано 

     <TcProperty propName="IL2_TechnicalSpec_Relation" propTypeName="Relation" propValueType="PROP_untyped_relation"
         propMaxStringLength="0" isArray="true" arrayLength="-1" description="" referencedTypeConstant=""
         referencedType=""/>

Получается тип массив, но когда я беру значение этого свойства TCProperty, то он говорит неправильный тип, как правильно взять верный тип для этого свойства?

 

org.eclipse.core.runtime.AssertionFailedException: assertion failed: Неправильный тип свойства

Можно просто вывести с помощью prop.getDisplayValue(), мне этого достаточно, но интересно, какой тип ему все таки нужен?

Изменено пользователем butulec
Ссылка на сообщение
Поделиться на других сайтах

Берите TCProperty у Relation(тех. требования)

два свойства - secondary_object и primary_object

 

то что вы привели в xml - это касатеся самого Relation а не свойств его

думаю дальше справитесь. и проверьте ЛС

Изменено пользователем lexx174
Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




×
×
  • Создать...