воскресенье, 16 октября 2016 г.

Xtext как механизм сериализиации EMF моделей

И наконец, хочется сказать о связи Xtext с EMF моделями. 

У каждой EMF модели есть класс serializer, который определяет как загружается и как сохраняется модель в виде файла на диске. 
 
Xtext реализует serializer (XTextResource) для EMF модели, который в себя включает парсинг текста и генерацию 
 
 
Serializer XText на основе анализа текстового файла с DSL создает модель в формате EMF.
При этом, сам dsl файл - получается представлением EMF модели на диске.
 
С помощью такого механизма можно заменить формат хранения 
любой EMF модели на какой-нибудь текстовый DSL, вместо стандартно используемого XML.

После этого EMF модель будет спокойно загружаться модели из
этого DSL, производя в фоне парсинг DSL с помощью Xtext и даже не будет это знать.
 
Доступ к EMF модели для DSL из Java полностью аналогичен доступу к EMF модели для xml файла. Вот так это примерно выглядит.
 
    ResourceSet resSet = new ResourceSetImpl();
    Resource resource = resSet.getResource(URI.createURI("model/List.xmi"), true);
    EObject EMFroot = resource.getContents().get(0);


EMFroot - корневой элемент EMF модели. Его можно привести к определенному пользовательскому типу и работать с ним на уровне модели. При изменении EMF модели из программного кода изменения будут отражаться и в тексте DSL.

К данной модели EMF могут получать доступ различные редакторы:
- стандартный иерархический редактор, генерируемый EMF
- визуальные редакторы (диаграммы GMF, Sirius, ...)
- текстовый редактор Xtext
- инструменты автоматического построения диаграмм
- программные расширения через Java API EMF модели

Пользователь сам выбирать какие средства ему удобны для работы с формальной моделью.

Комментариев нет:

Отправить комментарий