Архитектура,базовые решения
Архитектура
Архитектура может быть в нескольких вариантах:
- web браузер + web сервер + приложение в CGI скриптах.
Это решение уже практически реализовано в виде модуля Mozill`а
в качестве клиента.
Не надо пугаться слов "web-браузер"
и предполагать что работать через браузер очень неудобно.
Мозилла очень мощный инструмент для отображения XML ( а не
только HTML) документов и в частности формы в формате XUL
обеспечивают пользовательский интерфейс любой сложности.
По мере появления других web-браузеров с качественным XML движком
(FireBird,Conguerr,IE) - будет появлятся их поддержка в R2D2.
В качестве web сервера можно использовать любой, который поддерживает
выполнение CGI скриптов. Не мудрствуя лукаво - используйте apache.
Все остальные действия находятся в CGI скриптах. Скрипты обеспечивают
исполнение запросов к ОБД и преобразование ответов в вид приемлемый
для web браузера: XML,RDF,XUL,XHTML.
Никакой Бизнес-логики в скриптах НЕТ, только расшифровка CGI запроса
от клиента, обращение к ОБД и формирование ответа.
- трехзвенка: спецклиент + сервер приложений + ОБД.
Этот вариант в данный момент находится в разработке совместно с
проектом E/AS.
Требования к клиенту и серверу уменьшаться, потому-что не будет
необходимости постоянно парсить XML и работать посредством CGI.
- монолит: один исполняемый модуль, в котором слинкованы все компоненты:
клиент+сервер+ОБД+логика. Этот вариант будет разрабатываться только после
разработки пользовательского интерфейса для трехзвенки.
Платформы
Мозилла имеется для множества платформ и в частности Win,MAC,Linux.
Пользователь и системный администратор может самостоятельно выбрать
платформу для конечного пользователя.
Серверная часть в данный момент в основном тестируется в операционной
системе Linux на платформе I386.
Скорее всего будет работать и на freeBsd. Остальные платформы можете
пробовать на свой страх и риск, в данный момент никто не тестировал.
Так как вся разработка ведется на языке CLIP, то разрабатываемое ПО
сможет работать везде где протестирован CLIP. В настоящий момент
таких платформ не очень много, но мы ведем работы по переносу
CLIP на WIN32, SPARC/Solaris, OpenBsd, BeOs. Следите за новостями.
Требования к аппаратной части
Вполне достаточно Cel400/64М как для Windows так и для Linux станций.
Так же можно использовать X-терминалы на базе бездисковых станций,
для которых достаточно 486/66/32М.
Или можно использвать технологию "змей-горыныч",
когда к одному системному блоку подключаются три монитора и
нужное кол-во клавиатур и мышей.
Требования к железу на сервере тоже невысокие. Мы тестируем
рабоспособность на машине Cel400/128M. Такая машина вполне выдерживает
8-10 клиентов, а может и больше при условии что она не загружена
прожорливыми процессами или несколькими Мозиллами на X-терминалах.
Бизнес-логика
Вся бизнес-логика загружена в CODB в виде метаданных. Для полноценного
понимания работы CODB необходимо прочитать
документацию .
в настоящий момент вся ОБД разделена на несколько частей/словарей:
- GBL01 - внешние справочники. Предназначен
для хранения справочной информации из внешних источников, таких как:
ГНИ, ПФ, ГосКомСтат, ЦентроБанк и другие. Эти справочники редко
изменяются и в дальнейшем планируется что эти справочники будут
автоматически обновлятся с какого-нибудь общедоступного сервера.
В настоящий момент таких справочников около 50 и их кол-во будет
расти по мере надобности примерно до 300-500.
У словаря может быть несколько депозитариев, мы их проектировали для
хранения данных разных стран или регионов: Россия,Украина,Казахстан,
Татарстан, Удмуртия, Мордовия и т.п.
- GBL02 - внутренние справочники. Предназначен
для хранения справочной информации предприятий, таких как:
план счетов, контрагенты, подразделения, товары, константы,
настройки, и т.п. Кол-во справочников не ограничено и зависит только
от особенностей учета предприятий.
- ACC00 - малоизменяемые учетные данные.
Предназначен для хранения учетной информации с небольшим кол-во изменений,
таких как: отдел кадров, основные средства, контракты, бюджеты, и т.п.
Разные депозитарии позволяют хранить данные нескольких предприятий холдинга.
- ACC01 - оперативные данные. Предназначен
для хранения оперативных данных, таких как: документы, проводки,
регистры, аналитическая информация.
Разные депозитарии позволяют хранить данные нескольких предприятий холдинга
и при необходимости данные можно разделить например по годам для
уменьшения нагрузки на ОБД.
- Находятся в разработке еще несколько словарей: склад, зарплата, ...
По мере развития словарей может стать столько сколько нужно, хоть миллион :).
Краткий принцип работы
Клиент (браузер или спец клиент) обеспечивает ввод данных в экранные
формы, передает эти данные на сервер. Сервер расшифровывает запрос клиента
и производит действия с объектами в ОБД. При наступлении события с объектами
(добавление, изменение, удаление) ОБД на основании метаданных исполняет
методы/триггера, которые и обеспечивают все остальное. Например при
добавлении документа могут автоматически сформированы проводки. Проводки
имеют несколько аналитических признаков разные по дебету и кредиту
(настраиваются через планы счетов).
На основании этих данных происходит перерасчет данных в OLAP. В
дальнейшем вся аналитическая информация достается из этого OLAP
что обеспечивает высокую скорость работы с учетной информацией.
Небольшое отступление: то что здесь названо OLAP - не совсем OLAP,
это специальное хранилище объектов, обеспечивающее
многомерное хранение накопительных данных.
Но так как специального названия такому хранилищу пока нет - мы его
называем OLAP.
Благодаря такой схеме обеспечивается актуальность балансов и
аналитической информации почти в реальном времени. Скорость обработки
проводок примерно 2/сек при БД до 50000 проводок и примерно 1/сек
при БД до 500000 проводок на железе Cel400/128.
Согласитесь, что если баланс и аналитика готовы через 1 секунду
после проведения проводки - для бухучета это вполне можно
считать реальным временем.
Причем проводки могут быть и прошедшей датой, а баланс всегда готов
на любую дату и за любой период.