Модуль bl_basic

Материал из Felix2
Перейти к: навигация, поиск


Основная бизнес логика АСР Felix2. В данном модуле реализован функционал работы с основными объектами биллинговой системы (например: учетными записями, услугами, тарифными планами). Из данного модуля вызываются 2 основные функции системы: bl_basic.calc и bl_basic.sync. Bl_basic.calc выполняет расчеты по текущим тарифным планам, выполняет списания. Bl_basic.sync отвечает за синхронизацию предоставляемых услуг с оборудованием. Данные функции выполняют вызов функций *.calc и *.sync, которые обычно перехватываются и вместо них вызываются обработчики в модулях предоставления услуг. Таким образом расчет и предоставление услуг (на внешнем оборудовании или сервисах) реализуется самими модулями услуг. Такая архитектура позволяет реализовать предоставление и учет практически любых услуг (нужно только подгрузить соответствующий модуль).


Пример конфигурации:

    ...
<module name="bl_basic" file="modules/bl_basic.so" />
    ...
<scheduler>
    <entry cmd="bl_basic.sync" delay="2 sec" start_delay="2 sec" />
    <entry cmd="bl_basic.calc" delay="5 sec" start_delay="2 sec" />
    ...
</scheduler>

<hook cmd="*.sync"
    handlers="service_freeze.sync service_pr.sync service_drweb.sync service_turbo.sync service_inet.sync"
    type="replace" />
            
<hook cmd="*.calc"
    handlers="service_freeze.calc service_pr.calc service_drweb.calc service_turbo.calc service_inet.calc"
    type="replace" />
            
<hook cmd="bl_basic.set_deposit"
    handlers="notifier.set_deposit"
    type="after" />

В данном примере вызов *.calc и *.sync перехватываются, и последовательно вызываются методы calc и sync всех загруженных модулей, реализующих услуги. Также в данном примере реализован пост-обработчик функции пополнения счета: notifier.set_deposit (Модуль уведомлений).