К миллениуму у нас было с полтысячи клиентов и целое семейство разношерстных программ на все случаи бизнеса. Каждое очередное приложение создавалось фактически с нуля, имело обособленную базу данных и оригинальный пользовательский интерфейс. Файл-серверный движок Paradox трещал по швам с ростом таблиц и количества подключений. Исходный код не мог вместить специфику каждого пользователя.
Предел был близок.
Взяв чистый лист бумаги, мы сформировали три основных требования к будущей платформе:
- Единая база данных, SQL и надежный клиент-сервер
- Унифицированный объектно-ориентированный доступ к реляционным таблицам
- Возможность настройки "на лету" структуры б/д, интерфейса, алгоритмов, отчетов
В 2000-м году компания Borland открыла исходные коды сервера Interbase. Так возник Firebird — молодой проект с богатой историей — естественный и единственный выбор для платформы Гедымин.
Естественный, потому как будучи продуктом из одной компании, прекрасно интегрировался на уровне прямого обращения к функциям API с разработками на Delphi и не требовал промежуточного слоя из ODBC драйверов.
Единственный, потому как на тот момент иного бесплатного сервера с открытым исходным кодом, поддержкой транзакций, многоверсионностью данных, триггерами и хранимыми процедурами просто не существовало в природе.
Режим встроенного сервера принес всю мощь и надежность SQL даже в однопользовательские установки программ на платформе Гедымин.
В реляционной базе данных объект хранится в нескольких таблицах, связанных между собой. Например, справочник юридических лиц выглядит так:
При традиционном подходе программист обрабатывает каждую таблицу, соблюдая строгую очередность. Чем разветвленнее структура базы данных, тем сложнее программный код.
Бизнес-объект — наше изобретение — это пост-реляционная object-relational mapping (ORM) технология, которая решает следующие задачи:
- Объединяет несколько реляционных таблиц в единое целое
- Формирует SQL запросы для текущей структуры базы данных
- Управляет транзакциями и точками сохранения
- Организует пользовательский интерфейс
- Контролирует права доступа к данным и функциям
- Логирует изменения данных и действия пользователя
- Сериализует данные для записи в файл
Программист избавляется от черновой рутинной работы. Код становится проще.
Унификация пользовательского интерфейса позволяет снизить затраты на обучение пользователей и сократить срок внедрения. В Гедымине каждый бизнес-объект имеет два стандартных окна. Форма просмотра служит для отображения списка записей, фильтрации, сортировки и выбора. Диалоговое окно записи предназначено для создания/просмотра/изменения одного объекта.
Платформа включает комплект экранных элементов для отображения и редактирования наборов данных и отдельных полей бизнес-объектов.
Представление информации в табличном виде:
Поиск, выбор, создание и редактирование объекта с помощью выпадающего списка:
Выполнение вычислений непосредственно в поле ввода числовой информации:
Удобный выбор календарного периода:
Пользователю доступны пять способов поиска информации. Три выполняются на стороне клиента и два на стороне сервера. Фильтрация — самый мощный из них — позволяет оператору без знания синтаксиса SQL формировать сложные запросы. Отобразить список накладных за январь только для покупателей, которые приобретали товар в этом же месяце год назад? Легко!
Набор фундаментальных справочников и базовые типовые документы входят в ядро платформы. Все остальное — разработчик создает в процессе решения поставленной задачи. Для нового бизнес-класса необходимо:
- Создать структуры данных
- Настроить экранные формы
- Написать программный код
Язык разработки на платформе Гедымин — VBScript — быстро осваивается даже далекими от компьютерной отрасли специалистами. Для эффективного программирования, отладки и профилирования предоставляется весь набор необходимых инструментов.
Практически любая задача по автоматизации на предприятии включает учет товарно-материальных ценностей и движения денежных средств по бухгалтерским счетам. Гедымин избавляет разработчика от необходимости изобретать велосипед, предоставляя систему таблиц для хранения бухгалтерских проводок и складского движения. Одновременно могут применяться несколько планов счетов. Сумма проводки выражается в рублях, валюте и детализируется натуральными показателями. Количество аналитических признаков ограничено только фантазией настройщика.
Комплект стандартных отчетов включает Журнал-ордер, Карту счета, Анализ счета, Главную книгу.
Проводки в Журнал хозяйственных операций формируются автоматически на основании данных документа по цепочке:
Документ Типовая хозяйственная операция (ТХО) Типовая проводка (ТП) Проводка в ЖХО
Алгоритмы ТХО и ТП отражают специфику предприятия и конструируются в специальном окне из готовых блоков без кодирования вручную.
Чем глубже степень автоматизации, тем больше бумаги расходуется на печать документов и отчетов. Это конечно шутка, но, как известно, в каждой шутке есть доля истины. В обозримом будущем бумажные документы сохранят свое присутствие в документообороте предприятия.
Подсистема вывода на печать платформы Гедымин построена на базе Fast Report — бэнд-ориентированном генераторе отчетов с возможностями построения многостраничных, многошаблонных и сводных (кросс-таб) отчетов, статичных и интерактивных.
Сформированный документ может быть выведен на экран, распечатан, сохранен в файле, экспортирован в популярные офисные форматы (DOC, XLS, PDF) или отправлен по электронной почте.
Специальный язык разметки предусмотрен для скоростной печати отчетов на матричных принтерах.
Защита данных предприятия обеспечивается совместно средствами сервера Firebird 3 и платформы Гедымин. Со стороны СУБД — это шифрование файла базы данных и сетевого трафика, разграничение доступа к объектам БД согласно стандарту SQL. Платформа обеспечивает дополнительные механизмы:
- Разграничения доступа на уровне отдельных записей в таблицах
- Разграничения доступа на уровне бизнес-классов
- Разграничения доступа к функциям системы
- Логирования и аудит действий пользователя
- Логирования изменений данных на уровне триггеров
Перенос данных из одной базы в другую - задача нетривиальная. Необходимо выявить все реляционные ссылки и строго придерживаться порядка при записи в файл. Во избежание задвоения при загрузке объекты следует сопоставлять по глобальным идентификаторам и уникальным полям. Механизмы сериализации платформы используются для обмена данными и загрузки пространств имен (программного кода и метаданных). В последнем случае используется человекочитаемый формат данных YAML.
Непосредственно в платформу Гедымин встроена функциональность web-клиента и web-сервера, что позволяет подключаться к web-сервисам, создавать web-интерфейсы и обмениваться данными по протоколу HTTP. Гедымин выступает сервером для мобильных приложений GDMN Финансы и Контроль и GDMN Расчетный листок.
В императивном программировании разработчик с помощью последовательности инструкций на языке VBScript реализовывает правила, заданные на этапе постановки задачи. Весь код разбит на модули и функции, логически связанные между собой. Изменение одной из них может повлечь далеко идущие последствия в самых неочевидных местах. Когда законодательство и бизнес-процессы предприятия изменяются непрерывно, стоимость развития и поддержания программного обеспечения в работоспособном состоянии взлетает до небес.
Декларативное логическое программирование позволяет сконцентрироваться на анализе задачи и формулировке правил, вместо кодирования алгоритмов. При изменении правила гарантируется его соответствие с существующей логикой, либо сразу становится очевидной его противоречивость.
Гедымин — первая технологическая платформа, где программист, наравне с традиционным кодом, применяет логическое программирование на языке Prolog. Специальные механизмы платформы обеспечивают обмен между базой данных и базой знаний — формирование предикатов на основании реляционных данных и выгрузку полученных решений.
Платформа Гедымин предлагает обширный набор механизмов для интеграции со сторонними системами, промышленным и торговым оборудованием:
- Обмен данными через текстовые файлы с помощью механизма шаблонов и специального языка разметки
- Обмен данными через файлы в формате XML или YAML
- Обмен данными через файлы в формате DBF
- Работа в режиме COM-сервера и COM-клиента
- Прямое обращение к функциям API драйверов и сторонних библиотек
- Работа в режиме HTTP-сервера и HTTP-клиента
- Работа в режиме FTP-клиента
- Подключение к внешним базам данных через ODBC
Программное обеспечение с открытым исходным кодом имеет ряд преимуществ. Назовем некоторые из них. Во-первых, это гарантия сохранности инвестиций, поскольку продолжительность жизни промышленной системы на предприятии может составлять от 20 лет и дольше. Не всякий поставщик ПО просуществует столько времени. Во-вторых, сотрудники ИТ отдела предприятия могут участвовать в доработках и усовершенствовании программного обеспечения. В-третьих, разработчики сторонних систем имеют возможность разобраться в функционировании платформы и самостоятельно создать драйверы для интеграции своих программ. В-четвертых, это лицензионная чистота и существенное снижение общей стоимости информационной системы.
Платформа Гедымин имеет открытый исходный код* и поставляется на условиях Gedemin Public License. Суть лицензии вкратце: допускается использование исходного кода в коммерческих целях с условием, что все внесенные изменения будут размещены в открытом доступе.
Такие ключевые компоненты платформы, как СУБД Firebird и SWI-Prolog, также являются бесплатными программными продуктами с открытым исходным кодом.
Заметим, что прикладные решения, поставляемые компанией Golden Software, Ltd, не являются бесплатными и приобретаются отдельно.
* единственная библиотека, которая не является бесплатной — это генератор отчетов Fast Report. Сторонний разработчик обязан приобрести отдельную лицензию на ее использование на официальном сайте.
Жизнеспособность конструктивных решений, заложенных в платформу Гедымин, была неоднократно проверена в суровых реалиях использования программных комплексов на крупнейших предприятиях страны. Приведенные ниже значения взяты из баз данных, находящихся в повседневной эксплуатации.
Размер файла базы данных — 100 Гб
Одновременных подключений к серверу базы данных — 170
Количество учетных записей пользователей — 300
Работающих на предприятии — 5 000
Баз данных в распределенной холдинговой структуре — 16
Рабочих мест в распределенной холдинговой структуре — 400
Документов и их позиций — 30 млн
Проводок — 30 млн
Признаков аналитического учета — 70
Счетов и субсчетов бухгалтерского учета — 500
Инвентарных карточек — 35 млн
Скрипт-функций, макросов, методов, событий — 12 000
Строк VBScript кода — 700 000
Триггеров — 5 800
Процедур — 423
Таблиц — 1 020
Полей — 10 400
Индексов — 4 700
Как ознакомиться с возможностями платформы?
- Скачайте и установите Комплексную автоматизацию предприятия, которая включает однопользовательскую версию платформы Гедымин и базу данных с основными функциональными модулями.
- Читайте документацию и смотрите видео уроки на нашей wiki.
- Спрашивайте на форумах.
- В любое удобное для Вас время мы готовы провести презентацию и ответить на вопросы. Обращайтесь в офис компании.
Как приобрести решения на базе платформы Гедымин?
- Выберите решение из списка.
- Определитесь, потребуются ли работы по обучению персонала, доработке, внедрению и сопровождению ПО.
- Уточните цену на ПО и работы в актуальном прайс-листе.
- Обратитесь в офис компании за договором и счетом-фактурой для оплаты.
Как приступить к разработке на базе платформы Гедымин?
- Скачайте и установите дистрибутив Разработчик, который содержит однопользовательскую версию платформы Гедымин и чистую базу данных с минимальным набором базовых скрипт-функций.
- Если Ваши решения будут основаны на типовых решения компании Golden Software, Ltd, то установите git и клонируйте проект gedemin-apps. Загрузите в базу данных нужные пространства имен.
- Читайте документацию и смотрите видео уроки на нашей wiki.
- Спрашивайте на форумах.
Как получить исходный код платформы Гедымин?
- Ознакомьтесь и примите условия лицензии Gedemin Public License.
- Следуйте инструкции по установке необходимого ПО и компиляции платформы Гедымин или воспользуйтесь преднастроенной виртуальной машиной.
- Читайте документацию и смотрите видео уроки на нашей wiki.
- Спрашивайте на форумах.
- Не забывайте сделанные изменения отправлять в общий репозиторий.