Технические возможности Наши цели • • • • • • Максимальная гибкость Максимальная скорость считывания и обработки данных Стабильность работы Максимальная простота настраивания, и внедрения Единый подход принципов работы сетевой и локальной версий Максимальная открытость системы Уровни системы СУБД Модульная система Интерфейсы пользователя GUI H2 PostgreSQL Микроядро Ядро WEB 1 Файловая система Журнал 2 3 4 Уровни системы являются не только логическими. Обмен информации, между каждым уровнем может быть произведен через сеть, реализуя максимальную гибкость под конкретные нужды пользователя. В локальной версии все уровни объедены воедино. СУБД • • H2 — быстрая и небольшая по размерах база данных, поддерживает сохранение данных в оперативную память. Хорошо подходит для работы с локальной версией. PostgreSQL — высокоэффективная бесплатная база данных с открытым исходным кодом корпоративного уровня. Модульная система • • Функции ядра могут быть расширены с помощью модулей расширения. Модули расширения отвечают, например, за разные типы данных, их обработку и доступ к соответствующим функциям. Микро-ядро создаёт необходимые для модулей таблицы в СУБД, предоставляет информацию о правах доступа пользователя, реализует ограничение этих прав, предоставляет объектный доступ к таблица данных, может экспортировать и импортировать данные в файл. Ядро • • • • Отвечает за обработку данных модулями, предоставляет доступ к данным в соответствии с правилами модулей (которые при этом могут производить дополнительную обработку и проверку правильности данных). Сообщает другим компонентам системы об изменениях данных в режиме online. Ведет журнал изменений данных и может производить “откат” последних действий пользователя (локальная версия). Единый журнал может использоваться несколькими ядрами локальных версий одновременно, таким образом обеспечивая одновременный доступ к совместным данным через сеть без необходимости настройки СУБД. Локальная версия Локальная версия Преимущества: • Простота внедрения Недостатки: • Файловая система • Не позволяет одновременно использовать данные многим пользователям Не позволяет настроить разные права доступа разным пользователям Локальна версия/Сохранение в журнал Локальная версия Преимущества: • • Простота внедрения Возможность одновременной работы с одними данными разным пользователям Недостатки: • Журнал • Не позволяет настроить права доступа разным пользователям Относительно большой риск порчи данных из-за полной открытости данных Сетевая версия/СУБД PostgreSQL Сеть Сервер Микроядро Ядро Интерфейсы пользователя Клиент Преимущества: • Относительная простота настройки • Возможность работы с единой базой по сети Недостатки: • Невозможность гибкого распределения прав доступа Сетевая версия/Микро-ядро PostgreSQL Микроядро Сервер Сеть: HTTP RMI Другие протоколы Ядро Интерфейсы пользователя Клиент Преимущества: • Возможность работы с единой базой по сети • Возможность гибкой настройки прав доступа • Высокая продуктивность сервера, относительная простота настройки доступу к данным через Интернет (по протоколу HTTP) Недостатки: • Необходимость настройки сервера приложений Сетевая версия/Ядро PostgreSQL Микроядро Сеть: Ядро Сервер Интерфейсы RMI Другие протоколы, пользователя поддерживающие вызовы на стороне клиента Клиент Преимущества: • Возможность работы с единой базой по сети • Возможность гибкой настройки прав доступа • Интерактивность: все клиенты могут следить за изменениями данных в режиме online, отпадает необходимость в обновление данных пользователем (если изменения в базу данных вносятся через ядро) Недостатки: • Необходимость настройки сервера приложений • Большие нежели в предыдущем варианте нагрузки на сервер • Невозможность использовать протоколу HTTP напрямую (остается возможность использовать HTTP туннель, что существенно снижает скорость обмена данными) и большой поток трафика усложняют доступ к данным через Интернет Интерфейсы пользователя • • Модульность (добавление новых окон, редакторов атрибутов, и т.д. ...) Обмен с ядром осуществляется через так называемые callback-и (механизм обратных вызовов). Новосозданный компонент регистрируется в ядре и реагирует на важные изменения данных, при этом, ядро шлёт сообщения об изменениях всем зарегистрированным компонентам. Это в свою очередь позволяет разделить функции внесения изменений в базу данных и отображения этих изменений. Таким образом, если изменения были внесены макросом или другим компонентом, пользователь все равна сможет их отследить в режиме реального времени. Журнализация • Журнализация обеспечивает не только отмену последних действий и совместный доступ к данным, а также существенно поднимает надежность сохранения данных. Каждое действие пользователя дописывается в журнал в виде, так называемой, “транзакции пользователя”. • Таким образом если внезапно пропало питание компьютера, или роботу программы по другим причинам было прервано, все данные смогут быть не только восстановлены до последнего действия пользователя, но и останется возможность использовать историю действий пользователем, так как будто бы нечего не случилось. • Транзакции пользователя обеспечивают целостность данных, например если сбой произошел во время изменения данных макросом, данные будут восстановлены в том виде в котором они были до начала работы макроса. • На данный момент, журнализация поддерживается только в локальной версии. Формат файлов • Файл Ramus представляет собой архив с XML файлами и другими файлами, сохраненными модулями расширения (например прикрепленными к модели файлами других программ). • Файлы в основном являют собой данные таблиц и могут быть считаны и изменены другими программами. Макросы • • • • В программное обеспечение интегрирована консоль jruby Есть возможность использовать макросов на языке программирования JavaScript та Ruby Планируется добавить возможность разработки модулей расширения (как ядра так и графической части) с помощью макросов Планируется добавить возможность простого добавления поддержки разных языков программирования, которые поддерживаются официальным проектом Java Scripting (https://scripting.dev.java.net/)