Mechanics Studio .NET
www.VMKfree.narod.ru
Проект системы "Mechanics Studio .NET" 
   Хранение данных механизма 
Описание сайта
Теория механизмов
Проект системы
   Описание проблемы
   Требования к системе
   Средства разработки
   Модули системы
   Диаграммы классов
   Стр-ра данных мех-ма
   Аналог структ. схем
   Прогр-е 3D графики
   Хранение Данных
Описание GUI
Дополнение

   Обновление: 12.02.06
© EasyStudio: 01.09.05
easystd@gmail.com


      Одной из базовых возможностей любой системы автоматизированного проектирования являются возможности сохранения данных проектируемого объекта и его последующей загрузки в систему. Обычно сохранение производится в файл на диск компьютера, но в современных системах часто бывает реализована возможность работы с некоторой специально-развёрнутой на сервере базой данных. Возможность хранения данных в базе даёт ряд преимуществ: доступ к общим данным с любого компьютера, подключённого к сети; централизованное управление данными; повышенная надёжность и др. В связи со всем сказанным в данной программе планируется реализовать оба способа хранения данных.

      Платформа .NET Framework предоставляет разработчикам удобные средства (класс DataSet и др.) для работы с базами данных и XML-файлами, которые фактически позволяют абстрагироваться от способа хранения данных - в файл или базе. Таким образом для того чтобы реализовать сохранение механизмов в XML-файл или базу, необходимо пррежде всего спроектировать структуру хранимых данных в форме таблиц и связей между ними по ключам. На рисунке ниже приведена диаграмма описывающая структуру данных для хранения механизмов:

Диаграмма таблиц и связей базы данных механизмов
Рисунок: Диаграмма таблиц и связей базы данных механизмов

Cоответствие числовых идентификаторов, используемых в таблицах и реальных их значений:

MechView3D.ViewType:

  • 0 = Top;
  • 1 = Bottom;
  • 2 = Left;
  • 3 = Right;
  • 4 = Front;
  • 5 = Back;
  • 6 = Perspective;

MechPair.Type:

  • 0 = SphericMPair;
  • 1 = RotateMPair;
  • 2 = CrawlerMPair;
  • 3 = OnwardMPair;

MechLink.Type:

  • 0 = HolderMLink;
  • 1 = LinearMLink;
  • 2 = CrawlerMLink;
  • 3 = OnwardMLink;
  • 4 = CompoundMLink;

MechSubLink.Type:

  • 0 = SubGeometry;
  • 1 = SubCompound;
  • 2 = SubEndPoint;

GeomObject.Type::

  • 0 = GeomHoldObject;
  • 1 = GeomCylObject;
  • 2 = GeomCrawObject;
  • 3 = GeomOnwObject;
  • 4 = GeomSphObject;
  • 5 = GeomRotObject;

      Каждая таблица на представленной диаграмме соответствует некоторому классу, описывающему элемент структуры механизма, который имеет методы сохранения и загрузки данных из соответствующей таблицы. Такая структура талиц позволяет хранить в одном XML-файле или базе данных множество механизмов с информацией о настройках стилей отображения и видов.

      Сохранение и загрузку данных из таблиц поддерживают следующие классы программы:

Таблица 6: Соответствие классов и таблиц базы данных 
Название класса Таблицы с которыми
работает класс
PropObjManager MechProject
StylesManager Styles
MechView3D MechView3D
Mechanism Mechanism,
MechanismGroupsList
MechPGroup MechPGroup,
MechPGroupPairsList
MechPair MechPair
MechLink MechLink,
MechSubLinksList
MechSubLink MechSubLink
GeomObject GeomObject
GeomPoint GeomPoint

      Для реализации функиональности сохранения и загрузки данных из таблиц, в каждом из перечисленных классов были реализованы следующие методы:

  • Базовые методы сохранения/загрузки:
    • Конструктор, выполняющий загрузку из источника по переданному ID записи в соответствующей классу таблице;
    • SaveToDataSet - метод сохраняющий объект в DataSet и возвращающий ID созданной записи в соответствующей классу таблице;
  • Вспомогательные методы:
    • PrepareForSaving - метод подготовки объекта к сохранению (производит обнуление вспомогательных идентификаторов и флагов перед сохранением);
    • Get[TableName]Table - по данному объекту DataSet возвращает содержащуюся в нём соответствующую таблицу или создающий эту таблицу, в случае её отсутствия;

      Кроме того, в процессе сохранения/загрузки задействован дополнительный вспомогательный класс - LoadManager. Этот класс хранит данные, необходимые для передачи между объектами в течении процесса сохранения/загрузки и реализует методы, используемые для работы со всем DataSet в целом, а не с отдельными таблицами. Центральное место в классе занимает специльное поле - двумерный "словарь", позволляющий по имени таблицы и числовому идентификатору записи получить ссылку на объект, который был сохранён в эту запись. Это поле используется при сохранении и загрузке данных для восстановления ссылок между объектами по связям между таблицами через числовые идентификаторы. Этот класс так же имеет методы загрузки и сохранения данных в DataSet для XML файлов и базы данных.

Хостинг от uCoz