У меня была такая же проблема, и я разговаривал с некоторыми модельными людьми и Эдом Мерксом.
Общий подход состоит в том, чтобы статически создавать все возможные типы и использовать их без изменений. Динамические модели (то есть модели EMF, которые изменяются во время выполнения) не очень распространены, поэтому нет достаточных знаний о том, как лучше всего их реализовать.
Некоторые проблемы, с которыми вы столкнетесь: Загрузка и сохранение классов вашей модели во время выполнения. Вам лучше убедиться, что классы модели имеют как минимум одинаковых атрибутов при повторной загрузке модели.
Обычно это означает, что вы должны сохранить метамодель EMF вместе с самой моделью.
Что касается подклассов и редактирования: думайте об EMF как о подобном Reflection API. На самом деле это просто API для описания классов Java, для создания экземпляров, для изменения этих экземпляров и сохранения.
Так что, если вам нужно решить, какой путь лучше, спросите себя, как бы вы решили это без EMF (т. Е. На обычной Java при использовании Reflection).