forum.bitel.ru http://forum.bitel.ru/ |
|
Странное поведение класса ContractStatusManager http://forum.bitel.ru/viewtopic.php?f=22&t=3238 |
Страница 1 из 1 |
Автор: | focus [ 25 ноя 2009, 14:33 ] |
Заголовок сообщения: | Странное поведение класса ContractStatusManager |
Здравствуйте. Такая вот ситуация. Создаем скрипт с помощью Автоматизация-Функции скриптов поведения. часть кода скрипта Код: //Если текущий статус Активен и далее нет никаких статусов в будущем пропускаем скрипт Calendar d = Calendar.getInstance(); List statusList = cstm.getStatusList(cid, d); List newstatusList = new ArrayList(); for (Iterator i = statusList.iterator(); i.hasNext();) { ContractStatus s = (ContractStatus) i.next(); cStatus=s.getStatus(); // Если будущйи статус = ОТКЛЮЧЕН или Закрыт // if( cStatus == 2 || cStatus == 3){ s.setStatus(0); s.setComment("Статус изменен скриптом 'Изменение статуса договора по приходу платежа'"); //} newstatusList.add(s); } // Меняем статусы в соответствии с новым списком статусов for (Iterator t = newstatusList.iterator(); t.hasNext();){ ContractStatus s2 = (ContractStatus) t.next(); cstm.changeStatus(s2,0,true); } Прикрепляем к событию приход платежа. Добавляем платеж. Все ок. Статус был допустим Закрыт - поменялся на активен. Если этот же код выполняем не из скрипта, а создаем свой класс и запускаем его Код: public class setStatusContract { Вываливается ошибкаprivate static String db_url = "СТРОКА ПОДКЛЧЕНИЯ К БД"; public static void main(String[] args){ Connection con = null; try{ DriverManager.registerDriver((Driver)Class.forName("com.mysql.jdbc.Driver").newInstance()); con = DriverManager.getConnection(db_url,user,pass); ContractStatusManager cstm = new ContractStatusManager(con); int cid= КОД ДОГОВОРА; Calendar d = Calendar.getInstance(); List statusList = cstm.getStatusList(cid, d); // нужно взять статус договора на дату закрытия договора java.util.List newstatusList = new java.util.ArrayList(); for (java.util.Iterator i = statusList.iterator(); i.hasNext();) { ContractStatus s = (ContractStatus) i.next(); s.setStatus(0); s.setComment("Закрываем скриптом по причине окончания срока действия договора."); newstatusList.add(s); } // Меняем статусы в соответствии с новым списком статусов for (java.util.Iterator t = newstatusList.iterator(); t.hasNext();){ ContractStatus s2 = (ContractStatus) t.next(); try{ cstm.changeStatus(s2,0,true); // Вот 47 строка в моем коде на которой и происходит exception }catch(Exception e){ e.printStackTrace(); } } con.close(); }catch(Exception e){ e.printStackTrace(); } } } Цитата: java.lang.NullPointerException at bitel.billing.server.contract.bean.ContractStatusManager.changeStatus(ContractStatusManager.java:402) at ru.dsi.testbgbs.gw.setStatusContract.main(setStatusContract.java:47) Сам статус остается закрыт. Поясните какие-то особенности есть при использовании этого класса ? |
Автор: | Amir [ 25 ноя 2009, 14:47 ] |
Заголовок сообщения: | Re: Странное поведение класса ContractStatusManager |
Потому что выполняется не в среде биллинга. У биллинга есть обработчик событий (которых не должно быть запущено больше чем 1), на нем и падает в тесте. В 5.1 хотим внедрить вебсервисы, так что с этим проще возможно будет, и вообще стать более MOM-образными, но это уже не так просто... В java и beanshell можно вместо Код: for (java.util.Iterator t = newstatusList.iterator(); t.hasNext();){ ContractStatus s2 = (ContractStatus) t.next(); } писать Код: for (ContractStatus s2 : newstatusList){
} |
Автор: | focus [ 25 ноя 2009, 15:42 ] |
Заголовок сообщения: | Re: Странное поведение класса ContractStatusManager |
Получается из своего класса такая фишка не прокатит ? Используем скрипты.... |
Автор: | Amir [ 25 ноя 2009, 16:17 ] |
Заголовок сообщения: | Re: Странное поведение класса ContractStatusManager |
В 4.6 сейчас есть глобальные скрипты поведения, может пригодятся... |
Автор: | aardvark [ 25 ноя 2009, 20:00 ] |
Заголовок сообщения: | Re: Странное поведение класса ContractStatusManager |
Код: В 4.6 сейчас есть глобальные скрипты поведения, может пригодятся... А где про их читать? Как вешать и тд.? |
Автор: | Администратор [ 25 ноя 2009, 20:20 ] |
Заголовок сообщения: | Re: Странное поведение класса ContractStatusManager |
http://www.bgbilling.ru/v5.0/doc/ch02s03.html |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |