Данный пост о еще одном проекте Eclipse, который позволяет заменить стандартный подход
последовательных трансформаций моделей на "мгновенное" поддержание
в синхронном состоянии нескольких моделей.
Данная технология позволяет
- мгновенное выполнение пользовательских запросов к моделям
- мгновенную генерацию программного кода при редактировании модели
- мгновенное построение модели при редактировании кода
- мгновенное обновление диаграмм при изменениях в моделях
- мгновенную синхронизацию различных моделей
Например, достаточно часто используются последовательные трансформации
моделей
код -> модель кода -> компонентная модель
Для каждого перехода мы запускаем некую трансформацию, которая в batch режиме обновляет следующую модель.
Даже, если в коде добавился один аргумент операции, чтобы это обновление дошло до ТС, необходимо провести все полные трансформации.
Но это может быть сделано и по другому, так что добавление операции в коде, почти сразу" появлялась в конечной модели.
На достижение данной цели направлен проект Eclipse Viatra
Viatra реализует технологию реактивной трансформации моделей. При возникновении изменений, производится трансформация той части модели, к которой изменения относятся.
Частью проекта Viatra является технология incQuery. incQuery позволяет делать обновляемые запросы к EMF моделям. Вместо того чтобы при изменении EMF модели полностью пересчитывать весь запрос, она пересчитывает только ту часть, которая относится к изменению. Благодаря этому результаты повторных запросов доступны почти мгновенно. Данная технология основана на кэшированнии и использовании автоматических трассировочных связей между моделью и результатами запроса Благодаря этому кэшу связей может пересчитываться.
Комментариев нет:
Отправить комментарий