Всероссийская научно-практическая конференция "Свободное программное обеспечение: разработка и внедрение", г. Томск, 18 мая 2008 г.
Программный пакет Indocs создан для организации процесса торговли и складского учёта. Система разработана на базе СУБД PostgreSQL. Клиентская часть реализована на языке Java (j2se).
К основным возможностям системы относятся:
Складской учёт ведётся через систему накладных. Приходные накладные работают одновременно в двух валютах — рублях и долларах. Цена товаров рассчитывается автоматически с указанием надбавки и текущего курса иностранной валюты.
Такие характеристики, как многопользовательский сетевой доступ, разделение прав пользователей, поддержка транзакций, полная переносимость клиентской части на любую платформу, являются следствием возможностей базовых компонентов (PostgreSQL и Java). Печатные формы строятся при помощи библиотеки JasperReports.
Система имеет двухуровневую архитектуру. Первый слой — это ядро операций с данными, второй — пользовательский интерфейс. Операции с данными реализованы только для хранения в реляционных СУБД при поддержке языка SQL. Локальная работа системы может быть реализована при помощи пакета hsqldb. Оконная пользовательская часть выполнена на основе библиотеки Swing.
В настоящий момент система Indocs используется в компьютерной фирме "Интек" в г. Северске. Её исходный код публикуется под лицензией GPL.
Главная цель разработки — максимальная независимость от лицензионных ограничений. Кроме этого, данная система позволяет организовать работу предприятия с использованием только открытого программного обеспечения. Исходный код системы хорошо структурирован и допускает возможность модификации для требований, не предусмотренных текущей реализацией.
К недостаткам системы относятся невозможность репликации удалённых пользователей и полная реализация логики работы приложения на стороне клиента (модель "толстый клиент").
Информационная система Indocs — это система документооборота, обслуживающая информационные потоки в торговом предприятии. Причиной для создания подобной системы послужило стремление к отказу от использования разработок с несвободными лицензиями. Планировалось, что использование системы должно решить следующие задачи:
При выборе компонентов, на которых должна быть основана система, внимание уделялось гибкости продуктов, их репутации по стабильности и возможности расширения, если будет необходимо реализовать функции, непредвиденные на стадии проектирования. В качестве СУБД была выбрана PostgreSQL. Она обладает достаточными возможностями, входит в серверные решения ALT Linux Team и не имеет лицензионных ограничений на использование. Логика приложения реализована на языке Java. С выбором языка ситуация была более сложная, т. к. в тот момент Java ещё не имела опубликованных исходных текстов. Главную роль сыграла полная переносимость решений, основанных на Java, и их исходных текстов между распространёнными операционными системами. Это было важно в силу того, что произвести полный переход на решения ALT Linux в функционирующем предприятии тяжело, и необходимо иметь возможность плавного перехода, когда одновременно используются в работе компьютеры с дистрибутивами ALT Linux и Microsoft Windows. В настоящий момент, когда Java имеет полные опубликованные исходные тексты, можно считать проблему решённой. В приложении используется j2se-1.4. Среди дополнительных компонентов можно ещё отметить библиотеку jasperreports, которая используется для подготовки печатных форм документов.
В настоящий момент реализованы следующие возможности системы Indocs:
Ключевую роль в организации системы играет механизм накладных. Любое перемещение товара обязательно сопровождается оформлением накладной. Кроме того, приходная накладная содержит в себе информацию о цене, по которой был закуплен товар, что позволяет автоматизировать расчёт цен, на основе предустановленной надбавки. Оформление накладной сопровождается указанием серийных номеров экземпляров товара, если это требование было установлено для данной категории продукции. Указание серийных номеров даёт возможность реализовать в будущем построение истории перемещения товара внутри компании и получение информации о гарантийном обслуживании. Окно выписки счёта клиента имеет функцию контроля текущей надбавки цены, по которой менеджер может проверить выручку от оплаты данного счёта и принимать решение об оптимальном уровне скидки.
Система построена по архитектуре "толстый клиент". Вся логика приложения сосредоточена на рабочих местах пользователей. На сервере установлена только СУБД для хранения данных. Клиентская часть имеет двухуровневую архитектуру, состоящую из слоя операций с данными и пользовательского интерфейса. Поддержка SQL жёстко вшита в слой операций с данными и является пока единственным механизмом взаимодействия с сервером. В случае необходимости, локальную работу приложения можно реализовать при помощи библиотеки hsqldb. Правила ограничения доступа и контроль за целостностью данных не реализуются в клиентском приложении и полностью определяются внутри PostgreSQL при помощи триггеров и встроенного механизма указания уровня доступа пользователей к таблицам базы данных. Таким образом, указание особых предпочтений по безопасности можно выполнить без модификации исходного кода приложения. Клиентская часть достаточно хорошо структурирована, что при желании позволяет выполнить её модификацию с целью добавления дополнительных возможностей.
В настоящий момент это приложение практически готово к полноценному использованию. Система Indocs успешно применяется в компьютерной фирме "Интек" в г. Северске. В ходе использования было найдено несколько недостающих возможностей, которые предстоит реализовать в ближайшее время. Её исходные тексты открыты и распространяются под лицензией GPL.