Добавляю новый класс в котором прописываю ссылку на FunctionlCI через externalKey. А как теперь отобразить обратную ссылку, т.е. на форме FunctionalCI связанные объекты нового класса?
Через новый AttributeLinkedSet в FunctionalCI.
А iTOP поймёт, что это я прописываю аттрибут дла отображения той же самой связи? Т.е. если я её буду устанавливать в КЕ своего класса, она будет автоматом отображаться в FunctionalCI?
Поймет конечно, вы же ему ext_key_to_me
зададите.
Сделал AttributeLinkedSets. Добавил на фррму, добавилось, но отдельной вкладкой, т.е. связь получилась один ко многим. Можно ли её определить как один к одному? Это где-то настраивается?
Нет, один к одному из AttributeLinkedSets не получится, он на то и Set. Если нужен строго один к одному, добавьте в FunctionalCI встречный AttributeExternalKey
на новый класс, через <filter>
выберете только свободные объекты, а при сохранении программно установите обратную связь.
Спасибо за пояснение.
Жаль, что нет такого типа связи, делать две связи это конечно не удобное решение, чревато ошибками в дальнейшем.
Чтобы избежать ошибок, можно использовать <uniqueness_rules> (начиная с 2.6), в котором определить, что для данного класса значение functionalci_id
должно быть уникальным. Таким образом на каждую FunctionalCI сможет ссылаться только один объект вашего нового класса.
На самом деле сделать такой (да и любой другой) атрибут не сильно сложно – достаточно расширить наиболее подходящий класс атрибутов из существующих и переопределись нужные методы. Если описывать классы КЕ на чистом PHP, то новый атрибут будет работать без бубнов. А если хочется добавлять его в КЕ через XML, придется немного подправить класс Compiler. Кстати, среди параметров AttributeLinkedSet
даже есть зачатки похожей функциональности в виде тегов count_min
и count_max
, но они уже долго “unused yet”.