BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 28 мар 2024, 17:58

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
СообщениеДобавлено: 15 окт 2010, 01:47 
Не в сети

Зарегистрирован: 15 окт 2010, 00:55
Сообщения: 4
Карма: 5
Привет! Недавно понадобилось сделать регистрацию через web для bgbilling 4.5. Решил с xslt шаблонами не возиться и попробовать через http интерфейс биллинга. В результате был сделан небольшой сервлет, обёртка вокруг beanshell скриптов. Логика очень простая.
Для создания контракта вызывается сервлет, параметры запроса перенаправляются в интерпретатор beanshell, который запускает скрипт.
Скрипт лезет на bgbilling/executor и создаёт контракт.
Решение может показаться громоздким, но это не так. Подобная схема позволяет добавлять функциональность без перекомпиляций, за счёт beanshell скриптов. Можно к примеру: менять пароли, приостанавливать контракт, добавлять приход и многое другое, вся стандрартная функциональность java клиента может быть повторена вышеуказаным способом (http post запросы которые шлёт регистрационный скрипт, выдирались из клиента с помощью снифера). Так что всё очень и очень просто, смотрим снифером что посылает клиент, пишем скрипт который делает то же самое и регистрируем скрипт в сервлете.

Вот пример файла 'nazir.properties' (должен находиться в BGBilling/data/) в котором происан скрипт регистрации контракта:
Код:
actionNewContract=/home/nazim/prj/bgbnazir/actionscripts/newcontract.bsh


Теперь сервлет на каждый запрос с параметром 'action' равным 'NewContract' будет вызывать скрипт newcontract.bsh.
Сам сервлет запускается из конфигурационного файла Tomcat web.xml.

Код:
    <servlet>
        <servlet-name>nazir</servlet-name>
        <servlet-class>com.butatech.bgbilling.nazir.servlet.NazirServlet</servlet-class>
        <load-on-startup>11</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>nazir</servlet-name>
        <url-pattern>/nazir</url-pattern>
    </servlet-mapping>


Ниже, запрос к сервлету который вызовёт скрипт и создаст контракт:
http://localhost:8080/bgbilling/nazir?user=admin&pswd=admin&action=NewContract&pattern_id=10&date=13.10.2010&email=nazim.aghabayov[nospam_here_at]buta_tech.com&fullname=Nazim+Aghabayov

В атаче лежит исходник в проекте NetBeans, конфигурационный файл (bgbnazir/configs) и скрипт для создания контракта (bgbnazir/actionscripts). Пример работает на версии 4.5. Правьте на свой вкус )


Вложения:
Комментарий к файлу: Проект в формате NetBeans IDE
bgbnazir.zip [33.85 КБ]
Скачиваний: 415
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 15 окт 2010, 23:41 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 08 мар 2007, 20:44
Сообщения: 1570
Откуда: Челябинск
Карма: 18
в викки?

_________________
Интернет и телефония оптом со склада, или в розницу


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 окт 2010, 00:40 
Не в сети

Зарегистрирован: 15 окт 2010, 00:55
Сообщения: 4
Карма: 5
Конечно, надо только немного привести в порядок текст. Как только руки дойдут, то напишу обстятельнее в вики.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 25 окт 2010, 02:58 
Не в сети

Зарегистрирован: 15 окт 2010, 00:55
Сообщения: 4
Карма: 5
Продолжая тему "однозапросников", выкладываю скрипт возвращающий текущий баланс (на этот раз через java api).

Чтобы работалo, надо прописать action в properties файле 'nazir.properties'
actionGetBalance=/usr/local/BGBillingServer/nazirscripts/getbalance.bsh

Пример вызова:
http://localhost:8080/bgbilling/nazir?a ... nce&cid=25

где cid, id контракта. Если скрипт завершается успешно, то он возвращает цифру, если произошла ошибка, то 'err'

Правьте по вкусу )


Вложения:
getbalance.bsh.zip [1010 байт]
Скачиваний: 410
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 25 окт 2010, 06:33 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Ээ.. А зачем повторять функциональность стандартного сервлета? Почему просто им не воспользоваться?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 25 окт 2010, 18:31 
Не в сети

Зарегистрирован: 15 окт 2010, 00:55
Сообщения: 4
Карма: 5
Cromeshnic писал(а):
Ээ.. А зачем повторять функциональность стандартного сервлета? Почему просто им не воспользоваться?

Чтобы сделать всё по своему, так как удобно мне. Обращаться к примеру к биллингу из CMS или делать то, чего в стандартном сервлете нет. Кроме того, стандартное не всегда интересно.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 30 июл 2016, 22:48 
Не в сети

Зарегистрирован: 29 апр 2016, 13:00
Сообщения: 60
Карма: 0
Понравилась простота реализации.
Пытался повторить пример в первом посте, ругается:
Код:
07-30/19:39:30 ERROR [localhost.localdomain-startStop-1] [/bgbilling] - Servlet [nazir] in web application [/bgbilling] threw load() exce$
java.lang.ClassNotFoundException: com.butatech.bgbilling.nazir.servlet.NazirServlet
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
        at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:506)
        at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:488)
        at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:115)
        at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1148)
        at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1087)
        at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5262)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5550)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1575)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1565)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

Можно это как то поправить? Сам не силен в Java.

Клиент: вер. 7.0.825 / 27.07.2016 17:59:26
os: Windows 10; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_102
Сервер: вер. 7.0.1079 / 28.07.2016 02:48:49
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_92


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 31 июл 2016, 00:09 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
Цитата:
регистрацию через web для bgbilling 4.5


Вы вообще чего хотите то?

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 31 июл 2016, 00:27 
Не в сети

Зарегистрирован: 29 апр 2016, 13:00
Сообщения: 60
Карма: 0
Phricker писал(а):
Цитата:
регистрацию через web для bgbilling 4.5


Вы вообще чего хотите то?

Хочу автоматизировать многие вещи.
Автоматическая регистрация клиента (создание для него договора после заполнении клиентом формы на сайте), подключение/отключение различных услуг (клиент сам выбирает в своем личном кабинете чего ему надо), обещаный платеж, смена тарифа, и т.д.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 31 июл 2016, 00:59 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
у вас класс com.butatech.bgbilling.nazir.servlet.NazirServlet не найден
возможно, вы что-то упускаете

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 31 июл 2016, 02:46 
Не в сети

Зарегистрирован: 29 апр 2016, 13:00
Сообщения: 60
Карма: 0
dimOn писал(а):
у вас класс com.butatech.bgbilling.nazir.servlet.NazirServlet не найден
возможно, вы что-то упускаете

Спасибо, я тоже думал в том же направлении, сам файл класса есть, но куда его вставить не могу понять...
Где находятся классы, как расшифровать ссылку на класс?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
POWERED_BY
Русская поддержка phpBB
[ Time : 0.083s | 41 Queries | GZIP : On ]