Норд Пос. История О Том, Зачем Мне Понадобился Еще Один Pos-Форк Openbravo



Введение В последняя статья Я рассказал читателям краткую историю десяти лет развития POS-проекта Openbravo. На протяжении 7 лет я принимал в ней активное участие и вместе с другими участниками разработал систему управления точками продаж с открытым исходным кодом.

Но в этом году я решил перенести все свои накопленные наработки в самостоятельный проект. nordpos.mobi и развивать их в рамках собственного форка, созданного на основе открытого исходного кода Openbravo POS.

НОРД ПОС.
</p><p>
 История о том, зачем мне понадобился еще один POS-форк Openbravo



Происхождение

Ключевой причиной остановки разработки 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, и мне стало интересно попробовать реализовать это самому.



НОРД ПОС.
</p><p>
 История о том, зачем мне понадобился еще один POS-форк Openbravo

Текущая версия настольного приложения : 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 реализует подключение к платежным шлюзам процессинга карт.

НОРД ПОС.
</p><p>
 История о том, зачем мне понадобился еще один POS-форк Openbravo

На схеме показаны реализованные интерфейсы для отдельных видов торгового оборудования.

При этом управление дисплеем покупателя, фискальным регистратором, принтером чеков и этикеток осуществляется через специальные XML-шаблоны, структура этих шаблонов описана в разделе Схема.

Принтер.

xsd .

Также для реализации работы через драйверы плагинов была изменена структура каталогов приложения для редактирования ресурсов без необходимости компиляции основного пакета.

  • .

    /услуги , файлы с объявлениями вызываемых сервисов;

  • .

    /шаблоны , пользовательские шаблоны;

  • .

    /lib-ext , сами библиотеки драйверов.

Кроме того, как и в Openbravo POS, к NORD POS без проблем можно подключить сканеры штрих-кодов или магнитных карт в режиме клавиатуры.



Бизнес-логика в мобильных дополнениях
О самой идее я уже подробно рассказывал в статье.

Компактный Java-сервлет для мобильного Интернета , в будущем он мог бы стать флагманом разработки Openbravo POS, но, к сожалению, кроме меня его никто не подхватил, и на сегодняшний день это главная отличительная черта проекта nordpos.mobi. При этом он не только содержит исходный код для создания собственных Java-сервлетов, но и имеет возможность опробовать демо-версии для каталог товаров И рабочее место официанта , которые уже скомпилированы и развернуты на виртуальной машине в облаке Windows Azure. А сейчас у меня в планах сделать мобильный интернет-магазин для NORD POS и мобильный терминал сбора данных для склада.



НОРД ПОС.
</p><p>
 История о том, зачем мне понадобился еще один POS-форк Openbravo

С технической точки зрения это независимые веб-приложения, имеющие только общую базу данных с десктопной версией 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 будет выглядеть так.



НОРД ПОС.
</p><p>
 История о том, зачем мне понадобился еще один POS-форк Openbravo

Схемы преобразования Pentaho Data Integration можно запускать несколькими способами: из графической оболочки, командной строки, по расписанию, через веб-сервер или API, встроенный в другое приложение.

Для NORD POS я выбрал последний вариант, так как он наиболее удобен для пользователей.

Интеграция схем трансформации реализована аналогично интеграции шаблонов отчетов JasperReports. Схема трансформации создается в визуальном редакторе.



НОРД ПОС.
</p><p>
 История о том, зачем мне понадобился еще один POS-форк Openbravo

После этого в текстовом редакторе или 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.

НОРД ПОС.
</p><p>
 История о том, зачем мне понадобился еще один POS-форк Openbravo



Встроенные серверы



Сервер базы данных
База данных по умолчанию в Openbravo POS была Апач Дерби , но не сетевая версия, с возможностью нескольких одновременных подключений, а встроенная версия из драйвера JDBC только с одним одновременным подключением.

При этом для подключения нескольких POS-систем к одной базе данных необходимо было либо устанавливать сервер Apache Derby, либо выбирать другую СУБД, в которой изначально поддерживалась функция одновременного подключения нескольких подключений.

Также необходимо было использовать несколько соединений для обмена данными через Pentaho Data Integration. Поскольку изначально я планировал функцию миграции с Openbravo POS на NORD POS, то решил использовать встроенную версию как удобное средство обновления базы данных.

Сетевой сервер Apache Derby .

Теперь для обновления достаточно скопировать папку с базой из Openbravo POS в папку .

derby-db каталог пользователя, вписав его имя в URL-адрес драйвера JDBC, и обновление произойдет автоматически.

Если в качестве хранилища используется другая СУБД, то запуск встроенного сервера можно отключить.



Сервер веб-приложений
Поскольку основной аудиторией NORD POS по-прежнему будут обычные пользователи, не имеющие опыта установки веб-серверов и развертывания веб-приложений в сервлет-контейнерах, в приложение был интегрирован веб-сервер по аналогии со встроенным сервером базы данных.

Пристань 9 .

Запускается опционально, если это указано в настройках.



НОРД ПОС.
</p><p>
 История о том, зачем мне понадобился еще один POS-форк Openbravo

Веб-приложения устанавливаются в папку .

/веб-приложения непосредственно в каталоге NORD POS; при установке необходимо предварительно скомпилированное содержимое файла war распаковать в папку с соответствующим названием.

После запуска NORD POS установленное веб-приложение будет доступно по названию этой папки в строке браузера.



Больше изменений и планов

Помимо достаточно глобальных изменений, перечисленных выше, в NORD POS есть и менее радикальные:
  • Полностью обновлены все библиотеки, в том числе RXTX заменен на Серийный Java-сериал Neuron Robotics и JasperReports обновлен до версии 4.8.0;
  • поддержка двумерных штрих-кодов DataMatrix и QR-кода;
  • возможность использовать скидки на всю сумму чека или на отдельные позиции;
  • новые отчеты;
  • подсветка синтаксиса в ресурсах и скриптах;
  • набор иконок Фаэнца и тема по умолчанию — Cream.
Также планировалось, но пока не реализовано, работу с базой данных перенести на ORMLite, а расчеты делать в BigDecimal, как это уже сделано в мобильных веб-приложениях.

В противном случае я сейчас хочу больше сосредоточиться на работе над тем, что уже сделано, и создании расширений той основы, которая была создана в первой публичной версии NORD POS (например, в ней уже есть ветка для реализации оплаты с помощью Bitcoin) .

Но при этом больше всего меня интересует привлечение новых участников к работе над проектом.

Итак, если после прочтения этой статьи у вас возникнут вопросы по автоматизации в трейдинге, то я всегда рад помочь и рассказать подробнее о том, как это можно сделать с помощью NORD POS с открытым исходным кодом.

Теги: #POS #автоматизация #nord pos #открытый исходный код #java

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.