Как автоматически связывать типы шаблонов в Enterprise Architect, когда класс реализует универсальный интерфейс - PullRequest
0 голосов
/ 29 августа 2018

Я определил универсальный интерфейс с помощью Enterprise Architect (см. Рисунок ниже). enter image description here

Теперь я хотел бы указать следующую реализацию:

class AircraftsTypesRepository implements Repository<AircraftTypes, Integer>

Есть ли способ для EA автоматически связывать типы и сигнатуры методов с общими типами, которые я указал в базовом интерфейсе. Другими словами, я хотел бы показать на диаграмме, что для класса AircraftTypesRepository, T и K и привязаны к T=AircraftTypes и K=Integer. Я также хотел бы, чтобы это отразилось на методах интерфейса

1 Ответ

0 голосов
/ 30 августа 2018

Я думал об этом и (поскольку нет встроенной поддержки) предложил бы написать это. Есть много способов, поэтому я бы взял поцелуй. Отношение Realize может быть украшено теговыми значениями с именем Bind <val> или около того, где <val> - это имя параметра шаблона (в вашем примере T или K). Эти телевизоры должны быть определены как RefGUID, который позволяет им связываться с элементом EA. Создание этих телевизоров должно быть одним сценарием, который изучает шаблонный класс. Вы найдете определение шаблона в таблице t_xref с

SELECT description FROM t_xref 
WHERE client = `<GUID of element>` AND type = `elment property`

Это будет содержать что-то вроде

@ ЭЛЕМЕНТ; GUID = {5EC3D8DF-BC37-4529-8F36-0D9BA363955D}; Имя = Е; Тип = ClassifierTemplateParameter; Поз = 0; @ENDELEMENT ;;

(Я создал пример только с T, но вы, наверное, легко его расшифруете.)

Теперь, когда в Realize установлены значения тегов, вы можете запустить второй скрипт для синхронизации определения («просто» ищите текстуально идентичные типы). Позже вы могли бы изменить телевизоры и выполнить повторную синхронизацию (AFAIK, здесь нет ловушки для изменения телевизоров, поэтому их нужно запускать вручную).

Это не полное решение, а всего лишь предложение, которое оставляет достаточно места для экспериментов (и неудач).

...