forum.bitel.ru http://forum.bitel.ru/ |
|
Программное создание контракта. http://forum.bitel.ru/viewtopic.php?f=22&t=3130 |
Страница 1 из 1 |
Автор: | dale [ 05 ноя 2009, 02:19 ] |
Заголовок сообщения: | Программное создание контракта. |
Уважаемые разработчики, вопрос такой. Почему когда я создаю контракт программно следующим образом: Код: ContractManager manager = new ContractManager(con); Contract c = manager.createFromPattern(templateId, getContractNumber(), Calendar.getInstance(), passGen.getPassword()); Контракт создается по шаблону не полноценно. Например в шаблоне не добавляется услуга абонплат из модуля NPAY. Не добавляется ограничение количества сессий. Не добавляются скрипты которые подключены к шаблону. И это при том, что когда вручную создаешь контракт с использованием данного шаблона, все нормально добавляется. |
Автор: | Администратор [ 06 ноя 2009, 12:08 ] |
Заголовок сообщения: | Re: Программное создание контракта. |
Программно это из скрипта или вообще посторонняя Java программа? Закономерность есть, что не создается? Можете выложить скрин договора и шаблона? |
Автор: | dale [ 05 дек 2009, 01:33 ] |
Заголовок сообщения: | Re: Программное создание контракта. |
Джава программа это отдельная, на самом деле уже решил проблему путем просто запросов прямо в майсиквел. Но ваш код так и не заработал. Если интересно вышлю код. |
Автор: | stark [ 15 дек 2009, 18:29 ] |
Заголовок сообщения: | Re: Программное создание контракта. |
dale писал(а): Джава программа это отдельная, на самом деле уже решил проблему путем просто запросов прямо в майсиквел. Но ваш код так и не заработал. Если интересно вышлю код. там все эти действия делаются по событиям , а чтобы обрабатывались события, нужно запустить EventProcessor |
Автор: | Brodayga [ 10 окт 2011, 16:57 ] |
Заголовок сообщения: | Re: Программное создание контракта. |
Есть необходимость из java программы создать договор. версия 4.6 взял за основу пример из wiki magadan.java Но он написан для 4.5 если использовать библиотеки от 4.5 работает но не добавляется услуга абонплата из шаблона. если библиотеки от 4.6 то Код: script 10-10/14:15:51 INFO [main] EventProcessor:197 - Process event cid:0; event:Event bitel.billing.server.script.bean.event.system.ContractCreateEvent ci d: 0; module: 0; type: 0 script 10-10/14:15:51 INFO [main] EventProcessor:269 - Skipping script processing.. script 10-10/14:15:51 INFO [main] EventProcessor:197 - Process event cid:4371; event:Event bitel.billing.server.script.bean.event.ContractStatusChangingEvent cid: 4371; module: 0; type: 18 10-10/14:15:51 INFO [main] EventProcessor:87 - Add event to queue Event bitel.billing.server.script.bean.event.ContractStatusChangedEvent cid: 4371; module: 0; type: 19 java.lang.NullPointerException at bitel.billing.server.admin.eventbus.BillingEventBus.publish(BillingEventBus.java:39) at bitel.billing.server.contract.bean.ContractStatusManager.changeStatus(ContractStatusManager.java:421) at bitel.billing.server.contract.bean.ContractStatusManager.changeStatus(ContractStatusManager.java:296) at bitel.billing.server.contract.bean.ContractManager.createFromPattern(ContractManager.java:206) at bitel.billing.server.contract.bean.ContractManager.createFromPattern(ContractManager.java:74) at bitel.billing.server.contract.bean.ContractManager.createFromPattern(ContractManager.java:53) at bitel.billing.test.convert.Magadan.createContract(Magadan.java:93) at bitel.billing.test.convert.Magadan.<init>(Magadan.java:147) at bitel.billing.test.convert.Magadan.main(Magadan.java:125) finished.. сам код инициализация Код: bgSetup = new DefaultServerSetup("data.data"); bgSetup.initConnectionPool(); EventProcessor.initProcessor( bgSetup, false, new ServerEventProcessor() ); Server.initSetup(); createContract Код: ...
Connection con = bgSetup.getDBConnectionFromPool(); ContractManager cm = new ContractManager( con ); Contract contract = cm.createFromPattern(templateId, "test_test", Calendar.getInstance(), pass); ... |
Автор: | Администратор [ 12 окт 2011, 10:22 ] |
Заголовок сообщения: | Re: Программное создание контракта. |
Пишите в глобальном скрипте. Иначе в окружении программы нет MQ соединения, чтобы события слать. |
Автор: | Brodayga [ 12 окт 2011, 12:21 ] |
Заголовок сообщения: | Re: Программное создание контракта. |
Администратор писал(а): Пишите в глобальном скрипте. Иначе в окружении программы нет MQ соединения, чтобы события слать. В версии 4.6 нет mq или я ошибаюсь. В таком случае как мне из вне вызвать глобальный скрипт? Мне нужно при определённом "событии из вне" создать договор. |
Автор: | Администратор [ 13 окт 2011, 11:16 ] |
Заголовок сообщения: | Re: Программное создание контракта. |
Ага, ну тут шина событий самодельная. Суть одна.. Можно вызвать - просто посмотрите HTTP запрос, который передаётся при вызове скрипта из клиента. Клиент запустите bgbilling_debug.bat, либо посмотрите в access логах сервера запрос, либо посмотрите в журнале запросов, там только он не как в URL немного. Ну и к запросу нужно добавить user=..&pswd=... |
Автор: | Brodayga [ 13 окт 2011, 15:36 ] |
Заголовок сообщения: | Re: Программное создание контракта. |
Администратор писал(а): Ага, ну тут шина событий самодельная. Суть одна.. Можно вызвать - просто посмотрите HTTP запрос, который передаётся при вызове скрипта из клиента. Клиент запустите bgbilling_debug.bat, либо посмотрите в access логах сервера запрос, либо посмотрите в журнале запросов, там только он не как в URL немного. Ну и к запросу нужно добавить user=..&pswd=... Понял. Спасибо. Хорошее решение. Одно но: как передать параметры(например логин)? |
Автор: | Cromeshnic [ 14 окт 2011, 06:32 ] |
Заголовок сообщения: | Re: Программное создание контракта. |
Логин/пароль для биллинга? Просто добавляете к запросу: &user=admin&pswd=admin |
Автор: | Brodayga [ 18 окт 2011, 16:51 ] |
Заголовок сообщения: | Re: Программное создание контракта. |
Cromeshnic писал(а): Логин/пароль для биллинга? Просто добавляете к запросу: &user=admin&pswd=admin нет параметры создаваемого контракта. передаю через базу в вспомогательной таблице. |
Автор: | Cromeshnic [ 19 окт 2011, 06:47 ] |
Заголовок сообщения: | Re: Программное создание контракта. |
Тогда нужно отдельные http-запросы. Вот кусок ruby - скрипта, который создаёт типовые договоры с модулем dialup: Код: xml = Common.exec_bgb("custom_title=#{title}&module=contract&sub_mode=0&action=NewContract&pattern_id=#{template}&date=#{date1}&") if xml.root.attributes["status"] == "ok" cid = xml.elements["//contract/@id"].to_s #Берем lid сгенерированного логина xml1 = Common.exec_bgb("module=contract&action=ContractCard&contentType=xml&cid=#{cid}&") if xml1.root.attributes["status"] == "ok" ## passwd = xml1.elements["//contract/@pswd"].to_s passwd = gen() lid = xml1.elements["//module[@id='1']/user_login_1/@id"].to_s #Задаем pppoe-логин = номеру договора Common.exec_bgb("module=dialup&alias=p#{title}&object_id=0&login_pswd=#{passwd}&access=0&cid=#{cid}&lid=#{lid}&session=1&action=UpdateLoginInfo&date2=&mid=1&") #Заменяем пароль от статистики Common.exec_bgb("module=contract&value=#{passwd}&action=UpdateContractPassword&cid=#{cid}&") else print xml1.to_s next end else print xml.to_s end Хелпер: Код: require 'net/http'
require 'uri' require 'rexml/document' require 'iconv' include REXML class Common def self.get_uri(uri_str) response = Net::HTTP.get_response(URI.parse(uri_str)) case response when Net::HTTPSuccess response when Net::HTTPRedirection fetch(response['location'], limit-1) else response.error! end return response.body.to_s end def self.exec_bgb(uri, ignore=nil) s = get_uri("http://127.0.0.1:8080/bgbilling/executer?user=admin&pswd=admin&#{uri}") ret = REXML::Document.new(s) return ret if ignore if ret.root.attributes['status'] != 'ok' STDERR.puts "WARN: -- #{uri}" STDERR.puts Iconv.new('utf-8','cp1251').iconv(ret.to_s) end return ret end end |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |