Динамическая загрузка моделей ЭДС - PullRequest
0 голосов
/ 02 августа 2009

У меня есть бэкэнд-система, к которой я получаю доступ через API на основе REST, и мне возвращают ресурс. Это ресурс EMF (представление XMI). Проблема в том, что во время разработки я не могу принять метамодель для этого ресурса - так как метамодель в бэкэнд-системе может изменяться без уведомления.

Мне интересно, могу ли я сначала прочитать метамодель (файл .ecore) из бэкэнда, сгенерировать код, а затем прочитать модели. По общему признанию, это будет медленнее, но мне придется читать метамодель только один раз за сеанс, и это не заставит меня зафиксировать фиксированную метамодель. Будет ли это работать? Или есть лучший способ добиться того, чего я хочу?

Кроме того, это будет работать для пользовательского интерфейса? Могу ли я сгенерировать код редактора во время выполнения (EMF.Edit), непосредственно перед чтением модели из бэкэнда и отображением модели с соответствующей визуализацией?

Поможет ли Динамическая ЭДС решить мою проблему?

1 Ответ

2 голосов
/ 05 августа 2009

Использование EMF для генерации кода из моделей на лету звучит странно. Особенно, когда вы поворачиваетесь и запускаете его. Но я думаю, что это сработает, если вы запустите его в новом экземпляре Eclipse.

Динамическая ЭДС является возможной альтернативой. Однако приложения, использующие динамический подход, сложнее написать и, как правило, требуют больше отладки. (Используя динамическую ЭДС, вы жертвуете большей безопасностью статического типа.) И я не уверен насчет проблемы редактора моделей.

На самом деле, я немного озадачен тем, как вы будете использовать сгенерированные классы Java для экземпляра модели в памяти. Если метамодель изменяется, то так же меняются сигнатуры сгенерированных классов. Как вы можете написать код для работы с API, который постоянно меняется? Если вы говорите «Я генерирую это», учтите, что ваш генератор должен использовать динамическую ЭДС.

На вашем месте я бы спросил в списках рассылки EMF. По моему опыту, если вы зададите разумные вопросы (то есть, которые не слишком расплывчаты и / или умозрительны), вы получите разумные ответы.

...