Разработка собственных отчетов для BILLmanager

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

Маркетологам, руководителям да и рядовым сотрудникам всегда хочется чего-то странного. Я имею ввиду какую-то специфическую информацию обработанную особым образом. Мы постарались включить в BILLmanager наиболее типовые и широко используемые отчеты, однако этого зачастую недостаточно, поэтому в данной статье мы рассмотрим как можно создать собственный отчет.

Для этого вам понадобятся навыки программирования на любом знакомом вам языке, знание SQL, а так же понимание структуры базы данных BILLmanager.

В данной статье мы будем решать задачу построения отчета отражающего время обработки услуги, в данном случае пойдет речь об услуги подключения KVM (это устройство такое, не путать с виртуализацией), которая обрабатывается вручную операторами датацентра. Мы хотим знать все случаи когда время обработки услуги выходит за установленное регламентом, а так же оператора нарушившего регламент. В качестве языка программирования я буду использовать родной для BILLmanager с++, однако если вы с ним не знакомы, это не беда, можете посмотреть другую статью, где мы разрабатываем отчет на языке python. Я пропущу тонкости создания плагинов и сосредоточусь на том что касается отчетов.

Создание необходимых файлов

Для начала создадим отдельную директорию где будут располагаться файлы плагина и осуществляться его компиляция. я назвал проект kvm_report и директорию по его имени.

 mkdir /usr/local/mgr5/src/kvm_report

Переходим в данну директорию и создаем там Makefile со следующим содержимым

MGR = billmgr
PLUGIN = kvm_report
VERSION = 0.1
LIB += kvm_report
kvm_report_SOURCES = report.cpp
BASE ?= /usr/local/mgr5
include $(BASE)/src/isp.mk

Далее нам необходимо создать файл c xml описанием плагина. Для этого создаем директорию где будут хранится наши xml файлы

mkdir xml

и в ней файл billmgr_mod_kvm_report.xml со следующим содержимым

<?xml version="1.0" encoding="UTF-8"?>
<mgrdata>
	<library name="kvm_report"/>
</mgrdata>


И наконец создадим минимальный компилируемый файл исходного кода, report.cpp

#include <api/module.h>
#include <mgr/mgrlog.h>
 
MODULE("kvm_report");
 
namespace {
using namespace isp_api;
 
MODULE_INIT(kvm_report, "") {
 
}
 
} // end of private namespace

Попробуем собрать и установить свой модуль (данная команда, соберет и установит наш модуль, а заодно перезапустит BILLmanager)

make install

Описание внешнего вида отчета

Теперь необходимо выполнить описание внешнего вида отчета, для этого изменим имеющееся у нас XML-описание до вида

<?xml version="1.0" encoding="UTF-8"?>
<mgrdata>
        <library name="kvm_report"/>
 
        <metadata name="report.kvm" type="report" level="admin">
                <form>
                        <period name="period" save="yes"/>
                        <field name="reglament">
                                <input type="text" name="reglament" check="int" save="yes"/>
                        </field>
                </form>
                <band name="kvm">
                        <col type="data" name="start_time"/>
                        <col type="data" name="operator"/>
                        <col type="data" name="process_time"/>
                </band>
        </metadata>
 
        <lang name="ru">
                <messages name="reportlist">
                        <msg name="report_kvm">Отчет о времени обработки запросов на подключение KVM</msg>
                </messages>
                <messages name="report.kvm">
                        <msg name="start_time">Дата и время задачи</msg>
                        <msg name="operator">Оператор</msg>
                        <msg name="process_time">Время обработки</msg>
                </messages>
        </lang>
</mgrdata>