Загальна інформація
Починаючи з версії 3.0 деякі задачі в "Рахівниці" були виділені в окремі мікросервіси - невеликі програми з котрими користувач безпосередньо не взаємодіє, але котрі використовуються іншими програмами. Всі вони представляють REST API для комунікації і побудовані за схожими принципами.
Всі мікросервіси працюють як демони в Linux або служби у Windows. Кожен конфігурується одноіменним .yaml файлом.
При запуску у Linux конфігураційний файл шукається в таких місцях:
- $XDG_CONFIG_HOME/abacus/ (або $HOME/.config/abacus/, якщо змінна не задана)
- /opt/abacus/etc/
- /etc/abacus/
- власний каталог програми
При запуску у Windows файл шукається в наступних місцях:
- %PROGRAMDATA%\Abacus\Conf\
- %PROGRAMDATA%\Abacus\
- %LOCALAPPDATA%\Abacus\
- %APPDATA%\Abacus\
- власний каталог програми
Використовується перший знайдений файл, тому якщо ви редагуєте конфігурацію що лежить поруч з бінарником і програма ігнорує ваші зміни, перевірте чи часом у вас немає ще одного-двох конфігів у інших місцях з переліку вище. Три останні каталоги у списку для Windows лишились від попередніх версій: програма їх читає, але сама туди нічого не пише.
Якщо конфігурації немає ніде, програма створює її сама — у %PROGRAMDATA%\Abacus\Conf\ для Windows і у $XDG_CONFIG_HOME/abacus/ (або $HOME/.config/abacus/) для Linux. Конфігурацію попередніх версій, що зберігалась у .ini файлі, програма при першому запуску переписує у .yaml поруч і видаляє старий файл — переносити параметри вручну не потрібно.
Поряд із конфігурацією кожна програма тримає власний файл токенів доступу — abhard.json, abrest.json, abasyn.json. У Linux новий такий файл створюється у /opt/abacus/etc/, якщо цей каталог існує.
Кожна програма веде .log файл. Як і у випадку з файлами конфігурації, використовуєтсья перший з доступних для запису каталогів у такій послідовності: для Linux
- /var/log/abacus/
- /opt/abacus/log/
- $HOME/.config/abacus/log/
для Windows
- %PROGRAMDATA%\Abacus\Logs\
- .\Logs\
- %LOCALAPPDATA%\Abacus\Logs\
Доступ до REST API кожного сервісу конфігурується у елементі whitelist у файлах конфігурації. Додатково, кожен запит повинен містити заголовок X-API-KEY з валідним ключем.
Abasyn
abasyn — це сервіс синхронізації та реплікації баз даних Abacus.
Детально що таке реплікація та як нею користуватись описано тут.
Детально про синхронізацію даних з інтернет-платформами описано тут.
Abhard
abhard — проксі-сервіс для роботи з торговим обладнанням.
Abrest
abrest — REST-сервіс для доступу до даних основної системи. Наразі знаходиться в активній розробці. Поточний функціонал забезпечує імпорт документів із зовнішніх джерел у форматах XLS, XLSX, XML та - разом з abasyn - синхронізацію залишків і документів між базою даних Abacus та різноманітними інтернет-платформами.