Новый подход к разработке систем биллинга. Волков М.
Сервисы
В основе существующих биллинговых систем лежит возможность изменять сервисы клиентов "налету" — администратор может добавить или изменить набор сервисов клиента или сам клиент может подписатья или отписаться от потребляемых сервисов.
Данная возможность накладывает ограничения:
- заранее предопределены виды сервисов,
- заранее созданы модули (шаблоны) для настройки тарифных планов.
Поэтому для добавления нового сервиса в систему необходимо вносить ощутимые изменения.
Предлагается иной подход: для каждого клиента может быть создан объект. Данный объект будет содержать правила, по которым обрабатываются первичные данные, относящиеся к клиенту. При изменении правил обработки создается другой объект. История изменений объектов сохраняется в свойствах клиента. Объекты создаются, тестируются и никогда более не изменяется.
Разбив создаваемые объекты на независимые достаточно мелкие части и соединив их через интерфейсы, можно создавать сколь угодно сложные пакеты услуг и тарифные планы. При этом создаются базовые объекты, содержащие правила для обработки только одного вида данных. Далее из них комбинируются объекты клиентов.
Добавление сервисов в подобной системе сводится к созданию нового базового объекта.
Сбор статистики
Большинство биллинговых систем включают в себя средства сбора статистики.
Что накладывает ограничения: необходимо вносить существенные изменения в систему для использования других или дополнительных средств сбора статистики.
Предлагается иной подход: выбираются любые средства сбора статистики, удовлетворяющие предъявляемым к ним требованиям, среди которых можно выделить: использование внешних скриптов для сохранения статистических данных.
Далее для каждого вида первичных данных должен быть создан объект, содержащий данные для доступа к средству хранения (бэкенду) первичных данных, формат статистических данных и предоставляющий предопределенные виды результатов. Для средств сбора статистики должны быть созданы скрипты для сохранения статистический данных в указанный бэкенд в определенном формате.
Изменение средств сбора статистики или интерфейсов бэкендов в подобной системе сводится к замене существующего объекта и написанию соответствующих скриптов.
Интеграция с другими системами
Большинство биллинговых систем поддерживают только один, редко, несколько интерфейсов отображения данных; ведут бухгалтерский учет сами или тесно интегрируются со сторонней бухгалтерской системой.
Что опять же накладывает ограничения: необходимо вносить существенные изменения в систему для использования других средств отображения данных или бухгалтерских систем.
Предлагается иной подход: унифицировать элементы отображения до такой степени, чтобы любой используемый фронтенд (средство отображения данных) сможет их корректно отобразить. И для каждого фронтенда создается объект, преобразующий унифицированные элементы в понятный фронтенду вид.
Если же какую-то форму (например, счет-фактуру) достаточно сложно описать в таких элементах, то создается объект, специфический для данного вида фронтенда и описывающий форму в понятном фронтенду виде.
Добавление любого вида интерфейса (например, коммандной строки, XFree или поддерживающего XML-теги) в подобной системе ничуть не сложнее, чем интеграция с бухгалтерской программой.
