Преобразование.......
От: lesha-v  
Дата: 13.04.04 16:18
Оценка:
Имеется объектная модель(набор объектов и связей между ними) описывающая некоторую систему (например, электрическую схему но в принципе не обязательно именно ее),
в процессе работы приложения необходимо преобразовать ее в другую объектную модель удобную для моделирования (например распространения сигналов в эл. схеме).

Задача сделать такую систему максимально удобной для расширения, то есть хотелось бы иметь возможность в процессе эволюции приложения достаточно безболезненно добавлять новые объекты и правила, по которым производится преобразование из первой модели во вторую.

Помогите формализовать такое преобразование и правила по которым оно будет производиться ?

Извините если не понятно формулирую вопрос. И заранее благодарен за любую помощь
Re: Преобразование.......
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 13.04.04 16:41
Оценка: +1
LV>Помогите формализовать такое преобразование и правила по которым оно будет производиться ?

Можно взять за основу xml + xslt.

На xml-е описываются модели, а xslt используется для описания правил преобразования.
Re[2]: Преобразование.......
От: lesha-v  
Дата: 13.04.04 16:46
Оценка:
Здравствуйте, DarkGray, Вы писали:

DG>Можно взять за основу xml + xslt.


DG>На xml-е описываются модели, а xslt используется для описания правил преобразования.


Я об этом уже думал, но слишком медлено получается
Re[3]: Преобразование.......
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 13.04.04 16:51
Оценка:
DG>>Можно взять за основу xml + xslt.

DG>>На xml-е описываются модели, а xslt используется для описания правил преобразования.


LV>Я об этом уже думал, но слишком медлено получается


Какой примерно объем модели, и какой объем правил?
Re[4]: Преобразование.......
От: lesha-v  
Дата: 13.04.04 17:05
Оценка:
Здравствуйте, DarkGray, Вы писали:

DG>Какой примерно объем модели, и какой объем правил?



Объектов может бытьдо нескольких тысяч (типов объектов где то 10 — 20), причем нужно обеспечить возможность добавления новых типов в процессе эволюции системы... между объектами довольно сложные связи.

В качестве примера я рисунок нарисовал с маленьким графом исходной модели и граф в который это надо преобразовать.... но что то я не знаю как его сюда вставить
Re[5]: Преобразование.......
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 13.04.04 17:12
Оценка: +1
LV>Объектов может бытьдо нескольких тысяч (типов объектов где то 10 — 20), причем нужно обеспечить возможность добавления новых типов в процессе эволюции системы... между объектами довольно сложные связи.

На такое кол-во производительности xml-преобразований должно хватать. Тем более можно попытаться оптимизовать часто встречающиеся запросы.
Re[6]: Преобразование.......
От: lesha-v  
Дата: 13.04.04 17:35
Оценка:
Здравствуйте, DarkGray, Вы писали:

DG>На такое кол-во производительности xml-преобразований должно хватать. Тем более можно попытаться оптимизовать часто встречающиеся запросы.


то есть должно хватать? возможно ли документ приблизительно такого объема преобразовать с помощью xslt.. ну скажем за время < 1 секунды ?

и как при таком подходе обстоя дела с расширяемостью? (к сожалению я c xslt почти не знаком) например что мне необходимо будет сделать для того что бы добавить в модель объект нового типа?
Re: Преобразование.......
От: _Obelisk_ Россия http://www.ibm.com
Дата: 14.04.04 07:49
Оценка: 1 (1)
Здравствуйте, lesha-v, Вы писали:


LV>Имеется объектная модель(набор объектов и связей между ними) описывающая некоторую систему (например, электрическую схему но в принципе не обязательно именно ее),

LV>в процессе работы приложения необходимо преобразовать ее в другую объектную модель удобную для моделирования (например распространения сигналов в эл. схеме).

LV>Задача сделать такую систему максимально удобной для расширения, то есть хотелось бы иметь возможность в процессе эволюции приложения достаточно безболезненно добавлять новые объекты и правила, по которым производится преобразование из первой модели во вторую.


LV>Помогите формализовать такое преобразование и правила по которым оно будет производиться ?


LV>Извините если не понятно формулирую вопрос. И заранее благодарен за любую помощь



Простейший transformation engine:

Все трансформации организуем в группы. Группа может содеражать другие группы или трансформации.
Каждая группа и трансформация имеют атрибут Enabled, показывающий включена ли данная сущаность. (Если у группы Enabled == false, то все трансформации и подгруппы в ней также считаются выключенными).
Каждая группы и трансфомация имеют имя. Это позволяет ссылаться на эти сущности по имени и хранить где-нибудь правила конфигурирования, например в таком виде:

Configure {Group1/Group2/Group3/.../GroupN/Transformation} -state enabled  // включение трансформации


Каждая трансформация имеет приоритет, трансформации применяются к модели в порядке увелечения приоритета.

Применение трансформаций: собираем все включенные в данный момент трансформации с данным приоритетом, обходим модель и применяем трансформации к каждому элементу.
Тут возникает проблема если трансформации удаляет элемент, на котором она была вызвана, или меняет модель так, что наш Visitor начинает работать неправильно. Это можно решить либо путем "не написания" таких трансформаций либо путем системы observer-ов, которые позволят всегда сохранять состояние Visitor-а корректным.

Если у нас есть метамодель, то каждую трансформацию можно прицепить к метаклассу, чтоб на данном элементе вызывались не все трансформации, а только те, которые приаттачены к метаклассу данного элемента.

Можно предусмотреть возможность динамического конфигурирования трансформаций, чтоб была возможность в процессе обхода модели динамически включать/отключать трансформации и группы на основании текущего элемента. Скажем мы должны отключать некоторые трансформации, когда обходим элемент данного метакласса.

Формализация всего этого хозяйства: ищите в инете статьи на тему graph transformation.



Душа обязана трудиться! (с) Н.Заболоцкий.
Re[2]: Преобразование.......
От: lesha-v  
Дата: 14.04.04 15:05
Оценка:
Здравствуйте, _Obelisk_, Вы писали:



_O_>Простейший transformation engine:


_O_>Формализация всего этого хозяйства: ищите в инете статьи на тему graph transformation.


Спасибо, это уже что то....
Re[7]: Преобразование.......
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 29.04.04 04:52
Оценка:
Здравствуйте, lesha-v, Вы писали:

DG>>На такое кол-во производительности xml-преобразований должно хватать. Тем более можно попытаться оптимизовать часто встречающиеся запросы.


LV>то есть должно хватать? возможно ли документ приблизительно такого объема преобразовать с помощью xslt.. ну скажем за время < 1 секунды ?


Неясно конечно что у тебя за компьютер, но несколько тысяч наверняка будут преобразовываться за куда меньшее время.

LV>и как при таком подходе обстоя дела с расширяемостью?


Зависит от xslt-процессора. Например для дотнетовского дела обстоят очено хорошо. Если же речь идет о расширяемости правил и входных/выходных данных то дело обстоит просто превосходно.

LV> (к сожалению я c xslt почти не знаком) например что мне необходимо будет сделать для того что бы добавить в модель объект нового типа?


Изменить соотв. правило.
... << RSDN@Home 1.1.3 beta 2 (mobile station) >>
AVK Blog
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.