Настройка дерева действий

Права на выполнение различных действий внутри системы контролируются подсистемой BGSecure. Все действия в биллинге собраны в древовидную структуру. При установке модуля вместе с ним инсталлируются его действия. Действия модуля прописаны в файле, расположенном в каталоге BGBillingServer/actions.

При необходимости вы можете корректировать файл, добавляя свои собственные действия. Например, можно определить редактирование каждого параметра договора отдельным действием, либо просмотр каждого отчёта. Т.к. действия просматриваются по порядку, то свои действия необходимо добавлять перед существующими

Запросы вы можете посмотреть в файле log, запустив клиент биллинга в DEBUG-режиме скриптом bgbilling_debug.bat (.sh), либо воспользуйтесь Сервис=>Журналы=>Журнал запросов. О различиях в видах запросов к серверу вы можете посмотреть здесь.

Файлы с конфигурациями действий перетираются при каждой установке/обновлении модуля, не забывайте заново корректировать их, если вы добавили в них собственные действия. Вы также можете создать orig-файлы конфигурации действий, что позволит корректировать файлы только, если они действительно изменились в дистрибутиве. Нумеруйте свои действия номерами больше 10000, чтобы не наступил конфликт ваших действий с добавляемыми стандартными.

HTTP Action

Действия определяются в следующем виде:

<group title="Модули и услуги">
<action id="14" mask="module=service;action=GetServices" title="Просмотр услуг"/>
<action id="15" mask="module=service;action=UpdateService" title="Обновление услуги"/>
<action id="16" mask="module=service;action=DeleteService" title="Удаление услуги"/>
</group>

Группы предназначены исключительно для их визуального разделения в графическом дереве. Каждое действие должно иметь уникальный в пределах файла код id. Маска mask действия определяет набор параметров HTTP-запроса, по которым он будет отнесён к данному действию. В параметре запроса может быть указано и REGEXP-выражение, это позволяет выделять некоторые типы действий. Например, в модуле dialup можно выделить в отдельное действие переобсчёт сессий по конкретному договору:

"module=dialup;action=RecalculateSessions;contract=R:\d+"

Как видно из примера, REGEXP указывается после строки R:.

Web-сервис

Действия определяются в следующем виде:

<group title="Платежи">
<service id="89" name="PaymentService" operation="paymentList" title="Просмотр платежей"/>
<service id="90" name="PaymentService" operation="paymentUpdate" title="Изменение платежа" expression="payment.getId() gt 0"/>
<service id="101" name="PaymentService" operation="paymentUpdate" title="Добавление платежа"/>
</group>

Первичным ключом действия выступает имя Web-сервиса и операция. С помощью JEXL выражения в expression возможно дополнительная фильтрация параметров метода (см. пример). Все параметры метода передаются в JEXL контекст и у них могут быть вызваны функции. В приведённым выше примере по признаку неположительного идентификатора платежа отделены добавление и изменение платежа.