Я собираюсь разобраться с Eclipse Modeling Framework и поделиться своими открытиями.
Первое открытие: Eclipse (3.4.2) поддерживает UML 2.1.
Первое открытие: Eclipse (3.4.2) поддерживает UML 2.1.

При импорте модель должна удовлетворять более строгим правилам, чем при создании. Поэтому в моей созданной модели обнаружились ошибки:
Здесь требуется указать тип-параметр у дженерика EEList. У меня это не получается. (Как позже выяснилось, нужно делать либо ассоциации-референсы, либо максимальную кратность атрибута *, по крайней мере в Ecore.)
Тогда, переделываю UML.
Т. к. нет простого пути указать кратность ассоциации, перехожу в ECore - модель промежуточного (канонического) формата EMF.
Тогда, переделываю UML.
Т. к. нет простого пути указать кратность ассоциации, перехожу в ECore - модель промежуточного (канонического) формата EMF.
Перегенерирую UML (через контекстное меню genmodel'и) чтобы актуализировать изменения из ECore (это не обязательно, UML использовать вообще не обязательно):

- model - это сама модель с фабриками для создания объектов
- edit - промежуточный код редактирования объектов модели
- editor - UI-код редактора модели
- tests - скелеты тестов

Можно сгенерировать отдельные плугины по соответствующим пунктам меню Generator.
Запускаем плагин editor как часть Workbench'а... Вот он:
Запускаем плагин editor как часть Workbench'а... Вот он:

Это редактор инстансов объектов нашей модели, который можно даже немного настроить при генерации и, конечно, поправить исходники.
А код модели обладает (автоматически, бесплатно и по умолчанию) функциями оповещения наблюдателей об изменениях, персистенции в ресурсы (опять же настраиваемой опциями) и своим рефлексивным API.
В общем, ищу единомышленников по освоению Eclipse Modeling Framework и связанных с ним проектов.
P. S.
Основная книга Eclipse Modeling Framework: A Developer's Guide.
Еще есть перспективный проект по модели UI для нашей прикладной модели - Eclipse Presentation Modeling Framework (PMF) (пока к сожалению медленно развивающийся). Вот пример работы фреймворка, ложащегося в основу этого проекта.
P. S.
Основная книга Eclipse Modeling Framework: A Developer's Guide.
Еще есть перспективный проект по модели UI для нашей прикладной модели - Eclipse Presentation Modeling Framework (PMF) (пока к сожалению медленно развивающийся). Вот пример работы фреймворка, ложащегося в основу этого проекта.
Странные вещи в EMF:
ОтветитьУдалить1. objectA.setField1( objectB.getField1() );
В итоге в objectA.field1 будет скопировано значение, а objectB.field1 будет записано null. Нетипично для Java, C++ и других языков.
2. EMF Factory -- это синглтон, поэтому он привязывается к ClassLoader. А это не есть хорошо.
1 У меня вроде работает как надо. этот код дает зеленую полосу:
ОтветитьУдалитьpublic void testEMFStrange1() {
Object value = new Object();
Test1 objectA = DefaultnameFactory.eINSTANCE.createTest1();
Test1 objectB = DefaultnameFactory.eINSTANCE.createTest1();
objectB.setField1(value);
objectA.setField1(objectB.getField1());
assertEquals(value, objectA.getField1());
assertNotNull(objectB.getField1());
}
Что не так?
2 В книжке написано, что можно через Registry создавать. Правда он тоже синглтон :)
Upd:
ОтветитьУдалитьОшибка валидации модели из статьи обходилась заданием типа дженерика с помощью редактора модели, который надо включить на показ их в меню Sample Ecore Editor -> Show Generics.
Если надо генерировать RCP, включается параметром в genmodel при выделенной модели, Properties - Editor / Rich Client Platform = true
Книги (и уже давно) вышла вторая редакция. http://books.google.ru/books?id=oAYcAAAACAAJ