iTop ITSM & CMDB по-русски

Обратная ссылка


#1

Добавляю новый класс в котором прописываю ссылку на FunctionlCI через externalKey. А как теперь отобразить обратную ссылку, т.е. на форме FunctionalCI связанные объекты нового класса?


#2

Через новый AttributeLinkedSet в FunctionalCI.


#3

А iTOP поймёт, что это я прописываю аттрибут дла отображения той же самой связи? Т.е. если я её буду устанавливать в КЕ своего класса, она будет автоматом отображаться в FunctionalCI?


#4

Поймет конечно, вы же ему ext_key_to_me зададите.


#5

Сделал AttributeLinkedSets. Добавил на фррму, добавилось, но отдельной вкладкой, т.е. связь получилась один ко многим. Можно ли её определить как один к одному? Это где-то настраивается?


#6

Нет, один к одному из AttributeLinkedSets не получится, он на то и Set. Если нужен строго один к одному, добавьте в FunctionalCI встречный AttributeExternalKey на новый класс, через <filter> выберете только свободные объекты, а при сохранении программно установите обратную связь.


#7

Спасибо за пояснение.
Жаль, что нет такого типа связи, делать две связи это конечно не удобное решение, чревато ошибками в дальнейшем. :frowning:


#8

Чтобы избежать ошибок, можно использовать <uniqueness_rules> (начиная с 2.6), в котором определить, что для данного класса значение functionalci_id должно быть уникальным. Таким образом на каждую FunctionalCI сможет ссылаться только один объект вашего нового класса.

На самом деле сделать такой (да и любой другой) атрибут не сильно сложно – достаточно расширить наиболее подходящий класс атрибутов из существующих и переопределись нужные методы. Если описывать классы КЕ на чистом PHP, то новый атрибут будет работать без бубнов. А если хочется добавлять его в КЕ через XML, придется немного подправить класс Compiler. Кстати, среди параметров AttributeLinkedSet даже есть зачатки похожей функциональности в виде тегов count_min и count_max, но они уже долго “unused yet”. :frowning: