среда, 13 июня 2012 г.

И снова возвращаюсь к нашему проекту "Платон"

Всем привет.
Давно я не касался темы нашего проекта, а именно с 2010 года, когда я в последний раз выкладывал информацию в свой блог. http://vladisgol.blogspot.com/2010/02/blog-post.html
На всякий случай, вдруг кому то будет интересно, то собственно сам проект расположен вот тут: http://code.google.com/p/platon-accs/
Если кто то заинтересуется проектом, то имейте ввиду - лицензируется программа под GPL2, а значит может быть использована совершенно бесплатно.
Ну несколько слов о проекте: сегодня узнал, что оказывается проект функционально подобен, в терминологии HP, базе данных CMDB. Но есть несколько моментов, которые у нас реализованы, как мне показалось, интереснее.

Итак, вновь предлагаю краткое знакомство с нашим проектом Платон.

Суть программы - объектная база данных, настраиваемая под нужды пользователя. Теоретически в ней можно описать и обрабатывать данные из любой предметной области. Но то, что мы начали делать и на чем построена демонстрация - это база данных IT объектов.

Свое наименование программа получила от имени великого философа древней греции, который сформулировал 3-х уровневую метафизическую модель устройства мира. Боюсь ошибиться, но все таки рискну дать свою интерпретацию гения: Уровень Eidos - надфизический объект, обуславливающий свойства предметов реального мира, отражаясь в них и передавая им свои свойства. Но непосредственно Eidos не воплощается в объекты чувственного мира , именуемые Pragma, Eidos преломляется через разум творца, и входит в мир в виде множества вариантов воплощений, называемых Hypotesis.
Красиво и даже, я бы сказал, с легким налетом мистицизма. Но давайте теперь рассмотрим на  примере конкретных объектов, например легковых автомашин  - есть класс, который определят объект и его свойства, но насколько мы знаем, существует множество всевозможных легковых автомобилей, как минимум, именитых производителей - Форд, ВАЗ, Ситроен, Рено. И у каждого производителя есть целая гамма легковых автомобилей. Так вот, каждая такая марка и будет являться определенным типом машины, еще можно сказать, что тип автомобиля - это набор проектно конструкторской документации на него. Ну и третье, последнее - это сам экземпляр. Экземпляр всегда принадлежит к определенному типу автомобиля и обязательно имеет дату своего создания. Именно экземпляр автомобиля может увезти нас на дачу или сломаться по пути к ней. И если вдуматься, то по этой 3-х уровневой модели возможно описать не только объекты реального мира, но и действия, проводимые с ними и ресурсы, затраченные на выполнение этих действий.

Заканчиваю с нудной теорией и перехожу к иллюстрациям.
Вход в систему. Ничего особенного, просто хотел показать красивый Splash screen.


Главное окно программы. В окне специально раскрыты все вложенные классы объектов. Обратите внимание, что в дереве присутствуют как иерархия объектов, так и действий, ресурсов и НСИ (нормативно справочная информация). Оказывается любой из этих объектов нашел свое отражение в структуре классов.

Теперь давайте перейдем в окно определения свойств объекта или форму с поэтичным названием "Eidos студия".
Как видно из рисунка, на каждом уровне иерархии классов объектов можно добавлять свой набор дополнительных атрибутов. При этом атрибуты родительских классов наследуются классами потомков.
Атрибут может быть:

  • строкой
  • целым 
  • логическим
  • вещественным
  • датой временем
  • ссылкой на объект "тип"
  • ссылкой на объект "экземпляр"
  • функцией из динамической библиотеки


При этом любой из перечисленных видов атрибута может быть определен, как временной ряд и быть помечен обязательным к заполнению. Кроме того, на любом уровне класса у атрибута можно изменить заголовок, например в целях учета персонала, атрибут "дата создания" будет благоразумнее переименовать в "дата рождения".
Хочется отметить, что в системе можно на лету добавлять необходимые атрибуты, поскольку при этой операции метаданные таблиц не изменяются, а возможность редактирования того или иного атрибута определяется сразу, в зависимости от его фактического использования.

Ну и далее посмотрим на работу по учету объектов. Так выглядит редактирование записи одного компьютера
Если напротив атрибута нажать на кнопку с часиками, то мы увидим временной ряд изменений этого атрибута.

Ссылки на другие объекты. Это пожалуй самая интересная тема. Ссылки используются для формирования списков значений при выборе из классификатора (как например это сделано в поле "ответственное лицо"), но также используются для связи объектов с действиями и ресурсами. Для их просмотра в системе используется специальная форма для просмотра связей. Самый простой пример - давайте посмотрим, где в базе есть ссылки на запись сотрудника Головырина В.В.
Как видно, на меня назначен принтер и компьютер. Найденные объекты подкрашивают значения тех классов, в которых встречается ссылка на искомый объект. И совершенно не важно ищем мы ссылку на запись из справочника НСИ или на объекты, все они входят в единое дерево классов учета.

Всем удачи.



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

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