Введение В последняя статья Я рассказал читателям краткую историю десяти лет развития POS-проекта Openbravo. На протяжении 7 лет я принимал в ней активное участие и вместе с другими участниками разработал систему управления точками продаж с открытым исходным кодом.
Но в этом году я решил перенести все свои накопленные наработки в самостоятельный проект. nordpos.mobi и развивать их в рамках собственного форка, созданного на основе открытого исходного кода Openbravo POS.
Происхождение
Ключевой причиной остановки разработки Openbravo POS стал фактический уход из проекта его основателя Дрина Ромера; он полностью переключился на разработку коммерческой версии Openbravo Web POS и с 2010 года не трогал исходный код оригинальной версии.Поэтому больших надежд на возрождение проекта у меня не было, но необходимость в разработке приложения была.
Практически с первых дней, параллельно с общественной работой по локализации Openbravo POS, я вел разработку внутреннего проекта для бизнеса моей семьи под названием NORD POS. Поскольку наш семейный бизнес связан с обслуживанием кассовых аппаратов и другого торгового оборудования, мы были весьма заинтересованы в дальнейшей разработке собственного приложения, способного работать с этим оборудованием.
Что побудило меня разместить исходный код NORD POS в 2012 году сначала в репозитории Mercurial на Bitbucket, а затем на GitHub после перехода на Git. Нумерацию версий мне пришлось начать сразу с цифры 3 из-за того, что одной из основных особенностей моего приложения была возможность миграции с последней версии Openbravo POS. В результате первой версией NORD POS стала версия номер 3.0.0, которая включала в себя не только косметические изменения интерфейса и обновления версий библиотек, но и изменения, затрагивающие структуру всего проекта в целом.
Разделение базы и надстройки
Само по себе POS-приложение Openbravo было в целом самодостаточным для организации задач учета денежных средств.Оно содержало в себе полный набор функций, выполняемых на рабочем месте кассира, но пользователям всегда не хватало возможностей и гибкости для их настройки под специфику конкретного бизнеса.
Хотя некоторые вещи можно было решить написанием встроенных скриптов, их область применения ограничивалась только панелью продаж.
Если нужно было как-то изменить бизнес-логику и подключить новое оборудование, то нужно было внести изменения в ядро приложения.
А поскольку изначально он был монолитным и по сути разрабатывался всего одним человеком, эти изменения могли затронуть значительную часть исходного кода.
Хотя с версии 2.10, где Дриан Ромеро выделил генерацию отчетов в отдельный ресурс плагина, начался постепенный переход к модульности и расширяемости за счет удаления некоторых ресурсов из ядра исходного кода приложения, но к сожалению с 2009 года проект был по сути заморожен.
и этот процесс не получил дальнейшего развития.
Также это направление не было развито в форках на базе Openbravo POS, и мне стало интересно попробовать реализовать это самому.
Текущая версия настольного приложения : NORD POS 3.0.1 Community Edition Системные Требования : ОС Windows или Linux с Java SE 7. Интерфейс : Java Swing в настольных приложениях и jQuery Mobile в мобильных веб-приложениях.
База данных : Apache Derby и MySQL в качестве основных, но возможно использование PostgeSQL, HSQL, Firebird или СУБД Oracle. Языки интерфейса : английский и русский.
Источник : github.com/nordpos/nordpos Бинарные сборки : sourceforge.net/projects/nordpos/files/app-platform Лицензия : GNU GPL v3.
Подключаемое оборудование в драйверах периферии
Я заметил это решение в коммерческой версии Openbravo Web POS, где интерфейсы визуализировались с помощью Java SPI в отдельных упаковках для каждого типа оборудования.Это позволило решить проблему с подключением оборудования, которое присутствовало только на нашем локальном рынке, для чего теперь нет необходимости делать отдельный форк всей системы, а достаточно внести изменения только в один драйвер, помещенный в отдельная библиотека.
Таким же образом NORD POS реализует подключение к платежным шлюзам процессинга карт.
На схеме показаны реализованные интерфейсы для отдельных видов торгового оборудования.
При этом управление дисплеем покупателя, фискальным регистратором, принтером чеков и этикеток осуществляется через специальные XML-шаблоны, структура этих шаблонов описана в разделе Схема.
Принтер.
xsd .
Также для реализации работы через драйверы плагинов была изменена структура каталогов приложения для редактирования ресурсов без необходимости компиляции основного пакета.
- .
/услуги , файлы с объявлениями вызываемых сервисов;
- .
/шаблоны , пользовательские шаблоны;
- .
/lib-ext , сами библиотеки драйверов.
Бизнес-логика в мобильных дополнениях
О самой идее я уже подробно рассказывал в статье.Компактный Java-сервлет для мобильного Интернета , в будущем он мог бы стать флагманом разработки Openbravo POS, но, к сожалению, кроме меня его никто не подхватил, и на сегодняшний день это главная отличительная черта проекта nordpos.mobi. При этом он не только содержит исходный код для создания собственных Java-сервлетов, но и имеет возможность опробовать демо-версии для каталог товаров И рабочее место официанта , которые уже скомпилированы и развернуты на виртуальной машине в облаке Windows Azure. А сейчас у меня в планах сделать мобильный интернет-магазин для NORD POS и мобильный терминал сбора данных для склада.
С технической точки зрения это независимые веб-приложения, имеющие только общую базу данных с десктопной версией NORD POS, при этом база данных мало чем отличается от исходной, а веб-приложения от NORD POS могут использоваться совместно с другие форки Openbravo POS. В отличие от настольной версии, где взаимодействие с системой управления базой данных осуществлялось посредством SQL-запросов, Java-сервлеты используют аннотации библиотеки Java для доступа к информации через модель данных.
ОРМлайт .
Список поддерживаемых баз данных через драйвер JDBC довольно обширен, и все, что вам нужно для подключения, это /ВЕБ-ИНФ/web.xml сервлет для указания параметров соединения.
При этом единственное условие — чтобы в папке /ВЕБ-ИНФ/библиотека существовал драйвер JDBC для соответствующей СУБД.
Вот пример настроек для MySQL:
<context-param> <param-name>db.URL</param-name> <param-value> jdbc:mysql://localhost:3306/nordposЭuseUnicode=yes&characterEncoding=UTF-8 </param-value> </context-param> <context-param> <param-name>db.user</param-name> <param-value>nordposuser</param-value> </context-param> <context-param> <param-name>db.password</param-name> <param-value>nordpospassword</param-value> </context-param> <context-param> <param-name>db.application.id</param-name> <param-value>nordpos</param-value> </context-param>
Наглядные диаграммы синхронизации данных
Еще одной необходимой особенностью POS-программ является наличие в них средств интеграции с другим уже реализованным или планируемым к внедрению программным обеспечением.В нашей стране это обычно 1С, за рубежом — различные ERP-системы, причем очень часто это интернет-магазины, построенные как на популярных CMS, так и на самописных.
Чаще всего разработчики POS-терминалов в качестве универсального решения используют загрузку и выгрузку в текстовый файл, который затем обрабатывается внешней системой.
Но мне понравилось решение использовать специализированное программное обеспечение ETL. В Openbravo POS версии 2.30 использовался набор программ Интеграция данных Пентахо .
Поскольку это более универсальный подход, он позволяет как адаптироваться к API чужих систем, так и реализовать свои варианты обмена данными.
Pentaho Data Integration использует визуальный подход к процессу извлечения, преобразования и загрузки данных.
Например, схема загрузки таблиц товаров, категорий и налогов из базы данных NORD POS будет выглядеть так.
Схемы преобразования Pentaho Data Integration можно запускать несколькими способами: из графической оболочки, командной строки, по расписанию, через веб-сервер или API, встроенный в другое приложение.
Для NORD POS я выбрал последний вариант, так как он наиболее удобен для пользователей.
Интеграция схем трансформации реализована аналогично интеграции шаблонов отчетов JasperReports. Схема трансформации создается в визуальном редакторе.
После этого в текстовом редакторе или IDE создается скрипт для вызова его из приложения.
transformation = new com.nordpos.sync.panel.PanelTransformationBean();
transformation.setTitleKey("Menu.SyncImportProducts");
transformation.setTransformation("/com/nordpos/transformations/csv/IMPORT_PRODUCTS.ktr");
transformation.addTransVariable("db.URL", this.app.getProperties().
getDBURL()); transformation.addTransVariable("db.driver", this.app.getProperties().
getDBDriver()); transformation.addTransVariable("db.user", this.app.getProperties().
getDBUser()); transformation.addTransVariable("db.password", this.app.getProperties().
getDBPassword());
transformation;
В нем как дается ссылка на диаграмму, так и задаются параметры переменных, необходимые для выполнения преобразования.
Если преобразование будет подразумевать обработку информации из базы данных, то необходимо задать параметры подключения к ней.
Затем в ресурсе приложения Меню.
Корень указаны кнопка и вызов панели выполнения скрипта в меню приложения.
submenu.addPanel("/com/openbravo/images/database_imp.png", "Menu.SyncImportProducts", "/com/nordpos/transformations/csv/import_products.bsh");
И права роли пользователя разрешают доступ к нему.
<class name="/com/nordpos/transformations/csv/import_products.bsh"/>
Перезапустив приложение, вы можете напрямую загрузить данные из внешних файлов в NORD POS, используя из него схемы Pentaho Data Integration.
Встроенные серверы
Сервер базы данных
База данных по умолчанию в Openbravo POS была Апач Дерби , но не сетевая версия, с возможностью нескольких одновременных подключений, а встроенная версия из драйвера JDBC только с одним одновременным подключением.При этом для подключения нескольких POS-систем к одной базе данных необходимо было либо устанавливать сервер Apache Derby, либо выбирать другую СУБД, в которой изначально поддерживалась функция одновременного подключения нескольких подключений.
Также необходимо было использовать несколько соединений для обмена данными через Pentaho Data Integration. Поскольку изначально я планировал функцию миграции с Openbravo POS на NORD POS, то решил использовать встроенную версию как удобное средство обновления базы данных.
Теперь для обновления достаточно скопировать папку с базой из Openbravo POS в папку .
derby-db каталог пользователя, вписав его имя в URL-адрес драйвера JDBC, и обновление произойдет автоматически.
Если в качестве хранилища используется другая СУБД, то запуск встроенного сервера можно отключить.
Сервер веб-приложений
Поскольку основной аудиторией NORD POS по-прежнему будут обычные пользователи, не имеющие опыта установки веб-серверов и развертывания веб-приложений в сервлет-контейнерах, в приложение был интегрирован веб-сервер по аналогии со встроенным сервером базы данных.Запускается опционально, если это указано в настройках.
Веб-приложения устанавливаются в папку .
/веб-приложения непосредственно в каталоге NORD POS; при установке необходимо предварительно скомпилированное содержимое файла war распаковать в папку с соответствующим названием.
После запуска NORD POS установленное веб-приложение будет доступно по названию этой папки в строке браузера.
Больше изменений и планов
Помимо достаточно глобальных изменений, перечисленных выше, в NORD POS есть и менее радикальные:- Полностью обновлены все библиотеки, в том числе RXTX заменен на Серийный Java-сериал Neuron Robotics и JasperReports обновлен до версии 4.8.0;
- поддержка двумерных штрих-кодов DataMatrix и QR-кода;
- возможность использовать скидки на всю сумму чека или на отдельные позиции;
- новые отчеты;
- подсветка синтаксиса в ресурсах и скриптах;
- набор иконок Фаэнца и тема по умолчанию — Cream.
В противном случае я сейчас хочу больше сосредоточиться на работе над тем, что уже сделано, и создании расширений той основы, которая была создана в первой публичной версии NORD POS (например, в ней уже есть ветка для реализации оплаты с помощью Bitcoin) .
Но при этом больше всего меня интересует привлечение новых участников к работе над проектом.
Итак, если после прочтения этой статьи у вас возникнут вопросы по автоматизации в трейдинге, то я всегда рад помочь и рассказать подробнее о том, как это можно сделать с помощью NORD POS с открытым исходным кодом.
Теги: #POS #автоматизация #nord pos #открытый исходный код #java
-
Лучшие Настольные Пк Для Игр
19 Oct, 24 -
Мобильная Разработка. Галерея Шаблонов
19 Oct, 24 -
Сколько Лет Вы Занимаетесь Веб-Разработкой?
19 Oct, 24