forum.bitel.ru http://forum.bitel.ru/ |
|
Проблема с переходом на версию 5.1 и скриптами поведения http://forum.bitel.ru/viewtopic.php?f=22&t=4228 |
Страница 1 из 2 |
Автор: | loginex [ 30 июн 2010, 18:32 ] |
Заголовок сообщения: | Проблема с переходом на версию 5.1 и скриптами поведения |
Приходит письмо об ошибке работы бгскрипта: Function [id:6; title:Переоткрытие шлюза при занесении расхода]: using deprecated method [public int bitel.billing.server.script.bean.event.Event.getContractID()] Скрипт, естественно, успешно не отрабатывается сам скрипт: Код: import java.util.*; import bitel.billing.server.contract.bean.*; import bitel.billing.server.ipn.bean.*; import ru.bitel.bgbilling.server.util.ModuleSetup; //Определяем cid договора: cid = event.getContractID(); contract = new ContractManager(con).getContractByID(cid); //Закрыт modset = new ModuleSetup(con, 1); (new IPNContractStatusManager(con, 1, modset)).changeStatus(cid, 2, 0, true); //Открыт modset = new ModuleSetup(con, 1); (new IPNContractStatusManager(con, 1, modset)).changeStatus(cid, 0, 0, true); и еще много подобных с getContractByID(cid), как быть и что делать ? |
Автор: | dimOn [ 30 июн 2010, 18:33 ] |
Заголовок сообщения: | Re: Проблема с переходом на версию 5.1 и скриптами поведения |
попробуйте ID написать вот так: Id Код: getContractById
|
Автор: | dimOn [ 30 июн 2010, 18:35 ] |
Заголовок сообщения: | Re: Проблема с переходом на версию 5.1 и скриптами поведения |
не, постойте, ЕСТЕСТВЕННО при этом он должен отрабатываться ![]() |
Автор: | loginex [ 30 июн 2010, 18:50 ] |
Заголовок сообщения: | Re: Проблема с переходом на версию 5.1 и скриптами поведения |
прошу прощения, действительно работает, не удалось установить сразу причину, потому как очень много глюков с переходом на 5.1 произошло. |
Автор: | Phricker [ 30 июн 2010, 19:00 ] |
Заголовок сообщения: | Re: Проблема с переходом на версию 5.1 и скриптами поведения |
loginex писал(а): прошу прощения, действительно работает, не удалось установить сразу причину, потому как очень много глюков с переходом на 5.1 произошло. вы 5.1. поставили на боевую систему? О.О |
Автор: | loginex [ 30 июн 2010, 19:14 ] |
Заголовок сообщения: | Re: Проблема с переходом на версию 5.1 и скриптами поведения |
Phricker писал(а): loginex писал(а): прошу прощения, действительно работает, не удалось установить сразу причину, потому как очень много глюков с переходом на 5.1 произошло. вы 5.1. поставили на боевую систему? О.О не я, директор, ночью... пока я спал... партизан ![]() |
Автор: | Phricker [ 30 июн 2010, 19:24 ] |
Заголовок сообщения: | Re: Проблема с переходом на версию 5.1 и скриптами поведения |
loginex писал(а): не я, директор, ночью... пока я спал... партизан ![]() T_T Представил нашего директора который ночью заходит по ssh на сервер и ставит апдейт. Страшная картина |
Автор: | dimOn [ 30 июн 2010, 19:31 ] |
Заголовок сообщения: | Re: Проблема с переходом на версию 5.1 и скриптами поведения |
ой а я даже и представлять не буду ![]() |
Автор: | skyb [ 30 июн 2010, 19:45 ] |
Заголовок сообщения: | Re: Проблема с переходом на версию 5.1 и скриптами поведения |
Фигасе директора О_о...от таких неутаишь нечего %) |
Автор: | loginex [ 01 июл 2010, 14:15 ] |
Заголовок сообщения: | Re: Проблема с переходом на версию 5.1 и скриптами поведения |
Новая проблема: нет возможности установить Адрес абонента в договоре, объекты существуют в Справочники->Другие, но не отображаются при занесении их в договор. |
Автор: | skn [ 01 июл 2010, 16:08 ] |
Заголовок сообщения: | Re: Проблема с переходом на версию 5.1 и скриптами поведения |
1) в поле Улица введите название Улицы на которой находиться искомый дом... 2) выберите из предложенного списка улицу 3) двойным кликом выберите дом |
Автор: | loginex [ 01 июл 2010, 16:27 ] |
Заголовок сообщения: | Re: Проблема с переходом на версию 5.1 и скриптами поведения |
skn писал(а): 1) в поле Улица введите название Улицы на которой находиться искомый дом... 2) выберите из предложенного списка улицу 3) двойным кликом выберите дом ![]() ![]() |
Автор: | loginex [ 01 июл 2010, 19:25 ] | |||
Заголовок сообщения: | Re: Проблема с переходом на версию 5.1 и скриптами поведения | |||
Новая проблема: глючит интерфейс диллера глюк выражается вот в чем: заходим в кабинет диллера, кидаем деньги на счет абоненту, он их получает(так же это видно в "Приходе", если смотреть через клиент биллинга договор клиента), но выскакивает сообщение об ошибке(ниже скрин), однако окно при этом не закрывается, если нажать еще на "ОК" то будет зачислен еще один платеж. Если зайти в "Просмотр отчета", то после обновления на 5.1 больше ничего там не отображается, за предыдущие месяцы на версии 5.0 отчеты показывает(скрин 2 ниже).
|
Автор: | loginex [ 01 июл 2010, 20:52 ] |
Заголовок сообщения: | Re: Проблема с переходом на версию 5.1 и скриптами поведения |
вот еще в логах Код: Jul 1, 2010 5:34:48 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet bitel.billing.server.card.idealer.IDealerExecuter threw exception java.lang.NoSuchMethodError: bitel.billing.server.script.bean.event.PaymentEvent.<init>(Lbitel/billing/server/contract/bean/Payment;)V at bitel.billing.server.card.bean.DPaymentManager.addPayment(DPaymentManager.java:532) at bitel.billing.server.card.action.idealer.ActionPaymentAdd.doAction(ActionPaymentAdd.java:105) at bitel.billing.server.card.idealer.IDealerExecuter.doModule(IDealerExecuter.java:137) at bitel.billing.server.card.idealer.IDealerExecuter.doPost(IDealerExecuter.java:190) at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at bitel.billing.server.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:37) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:568) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Thread.java:619) Jul 1, 2010 5:35:00 PM org.apache.tomcat.util.http.Parameters processParameters WARNING: Parameters: Invalid chunk ignored. |
Автор: | loginex [ 02 июл 2010, 15:35 ] |
Заголовок сообщения: | Re: Проблема с переходом на версию 5.1 и скриптами поведения |
Сведения об ошибке на веб-странице Агент пользователя: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729) штамп времени: Fri, 2 Jul 2010 09:32:21 UTC Сообщение: 'documentElement' - есть null или не является объектом Строка: 331 Символ: 2 Код: 0 URI-код: http://host.xnxx.ru:8080/bgbilling/id/engine.js |
Автор: | stark [ 05 июл 2010, 19:35 ] |
Заголовок сообщения: | Re: Проблема с переходом на версию 5.1 и скриптами поведения |
как получаете ошибку ? просто заходите в интерфейс дилера ? |
Автор: | loginex [ 05 июл 2010, 20:03 ] |
Заголовок сообщения: | Re: Проблема с переходом на версию 5.1 и скриптами поведения |
stark писал(а): как получаете ошибку ? просто заходите в интерфейс дилера ? последнее обновление помогло. ошибка вылетала при нажатии на "ОК" после ввода суммы платежа. |
Автор: | loginex [ 06 июл 2010, 18:36 ] |
Заголовок сообщения: | Re: Проблема с переходом на версию 5.1 и скриптами поведения |
возвращаясь к скриптам поведения. Не работает вот такой скрипт(не изменяется статус договора): Код: import bitel.billing.server.call.bean.Login; import bitel.billing.server.contract.bean.*; import bitel.billing.server.script.bean.event.*; import bitel.billing.server.service.bean.*; import bitel.billing.server.npay.bean.*; import bitel.billing.common.KernelConst; import java.util.*; import bitel.billing.server.ipn.bean.*; import ru.bitel.bgbilling.server.util.ModuleSetup; GROUP_ERROR_BALANCE = 62; cid = event.getContractID(); date = event.getGenerateTime().clone(); contract = new ContractManager(con).getContractByID(cid); payment = event.getPayment(); pt = payment.getPaymentTypeID(); cl = contract.getBalanceLimit(); balance = new BalanceUtils(con); cb = balance.getBalance(date.getTime(), cid); ContractStatusManager statusManager = new ContractStatusManager(con); status = statusManager.getStatus(cid, date); if (status != null) { cs = status.getStatus(); } else { ContractStatus status = new ContractStatus(); status.setContractId(cid); status.setDate1(date); status.setDate2(null); status.setStatus(KernelConst.CONTRACT_STATUS_ACTIVE); status.setComment("Инициализация статуса сервером"); statusManager.changeStatus(status, 0); cs = status.getStatus(); }; NPAY_MID = 2; csm = new ContractServiceManager(con); List sl = csm.getContractServiceList(cid, NPAY_MID); print("Contract Limit: " + cl); print("Contract Balance: " + cb); for (Iterator it=sl.iterator(); it.hasNext(); ) { cs = (ContractService)it.next(); print (cs.getServiceTitle()); } if (pt == -1) { // Изменение лимита if ((cb.floatValue() >= cl.floatValue()) && (cs == KernelConst.CONTRACT_STATUS_SUSPENDED)) { // Баланс больше лимита. Подключаем договор. cg = contract.getGroups(); cg = cg & ~(1L<<GROUP_ERROR_BALANCE); query = "UPDATE contract SET gr=? WHERE id=?"; psUpdate = con.prepareStatement(query); psUpdate.setLong(1, cg); psUpdate.setInt(2, cid); psUpdate.executeUpdate(); ContractStatusManager statusManager = new ContractStatusManager(con); status = statusManager.getStatus(cid, date); status.setContractId(cid); status.setDate1(date); status.setDate2(null); status.setStatus(KernelConst.CONTRACT_STATUS_ACTIVE); status.setComment("Смена статуса сервером - подключен по изменению лимита"); statusManager.changeStatus(status, 0); } else if ((cb.floatValue() < cl.floatValue()) && (cs == KernelConst.CONTRACT_STATUS_ACTIVE)) { // Баланса ниже лимита. Приостанавливаем договор. cg = contract.getGroups(); cg = cg | (1L<<GROUP_ERROR_BALANCE); query = "UPDATE contract SET gr=? WHERE id=?"; psUpdate = con.prepareStatement(query); psUpdate.setLong(1, cg); psUpdate.setInt(2, cid); psUpdate.executeUpdate(); ContractStatusManager statusManager = new ContractStatusManager(con); status = statusManager.getStatus(cid, date); status.setContractId(cid); status.setDate1(date); status.setDate2(null); status.setStatus(KernelConst.CONTRACT_STATUS_SUSPENDED); status.setComment("Смена статуса сервером - приостановлен, поступивших средств недостаточно"); statusManager.changeStatus(status, 0); } } else { // Пришёл реальный платёж if ((cb.floatValue() >= cl.floatValue()) && (cs == KernelConst.CONTRACT_STATUS_SUSPENDED)) { // Баланс больше лимита. Подключаем договор. cg = contract.getGroups(); cg = cg & ~(1L<<GROUP_ERROR_BALANCE); query = "UPDATE contract SET gr=? WHERE id=?"; psUpdate = con.prepareStatement(query); psUpdate.setLong(1, cg); psUpdate.setInt(2, cid); psUpdate.executeUpdate(); ContractStatusManager statusManager = new ContractStatusManager(con); status = statusManager.getStatus(cid, date); status.setContractId(cid); status.setDate1(date); status.setDate2(null); status.setStatus(KernelConst.CONTRACT_STATUS_ACTIVE); status.setComment("Смена статуса сервером - подключен по поступлению платежа"); statusManager.changeStatus(status, 0); //Открыть шлюз modset = new ModuleSetup(con, 1); (new IPNContractStatusManager(con, 1, modset)).changeStatus(cid, 0, 0, true); } } Он срабатывает при приходе платежа. Однако он не работает на 5.1. В письмо приходит сообщение: Цитата: ID события: bgbs.contract.script.error Время регистрации события: 06.07.2010 16:30:39 Contract 116 GENERATE_TIME: 06.07.10 16:30:39 EXECUTION_STOP_TIME: 06.07.10 16:30:39 PROCESS_TIME: 37 OUT: Contract Limit: 0.00 Contract Balance: 699.00 WARNINGS: Function [id:3; title:Смена статуса договора при поступлении платежа]: using deprecated method [public int bitel.billing.server.script.bean.event.Event.getContractID()] Function [id:3; title:Смена статуса договора при поступлении платежа]: using deprecated method [public bitel.billing.server.contract.bean.ContractStatus bitel.billing.server.contract.bean.ContractStatusManager.getStatus(int,java.util.Calendar)] Смысл этого скрипта в том, чтобы изменять статус договора из "приостановлен" в "подключен", ну еще он выводит договор из спец группы, в которую попадают люди, у тех, у кого баланс отрицательный. |
Автор: | dimOn [ 06 июл 2010, 18:42 ] |
Заголовок сообщения: | Re: Проблема с переходом на версию 5.1 и скриптами поведения |
Никаких ошибок в логе не видно. Варнинги уберите, переписав код (см.Api, в т.ч. раздел deprecated). |
Автор: | loginex [ 06 июл 2010, 20:35 ] |
Заголовок сообщения: | Re: Проблема с переходом на версию 5.1 и скриптами поведения |
вот теперь скрипт Код: import bitel.billing.server.call.bean.Login; import bitel.billing.server.contract.bean.*; import bitel.billing.server.script.bean.event.*; import bitel.billing.server.service.bean.*; import bitel.billing.server.npay.bean.*; import bitel.billing.common.KernelConst; import java.util.*; import bitel.billing.server.ipn.bean.*; import ru.bitel.bgbilling.server.util.ModuleSetup; GROUP_ERROR_BALANCE = 62; cid = event.getContractId(); date = event.getGenerateTime().clone(); contract = new ContractManager(con).getContractByID(cid); payment = event.getPayment(); pt = payment.getPaymentTypeID(); cl = contract.getBalanceLimit(); balance = new BalanceUtils(con); cb = balance.getBalance(date.getTime(), cid); ContractStatus statusManager = new ContractStatus(); status = statusManager.getStatus(cid, date); if (status != null) { cs = status.getStatus(); } else { ContractStatus status = new ContractStatus(); status.setContractId(cid); status.setDate1(date); status.setDate2(null); status.setStatus(KernelConst.CONTRACT_STATUS_ACTIVE); status.setComment("Инициализация статуса сервером"); statusManager.changeStatus(status, 0); cs = status.getStatus(); }; NPAY_MID = 2; csm = new ContractServiceManager(con); List sl = csm.getContractServiceList(cid, NPAY_MID); print("Contract Limit: " + cl); print("Contract Balance: " + cb); for (Iterator it=sl.iterator(); it.hasNext(); ) { cs = (ContractService)it.next(); print (cs.getServiceTitle()); } if (pt == -1) { // Изменение лимита if ((cb.floatValue() >= cl.floatValue()) && (cs == KernelConst.CONTRACT_STATUS_SUSPENDED)) { // Баланс больше лимита. Подключаем договор. cg = contract.getGroups(); cg = cg & ~(1L<<GROUP_ERROR_BALANCE); query = "UPDATE contract SET gr=? WHERE id=?"; psUpdate = con.prepareStatement(query); psUpdate.setLong(1, cg); psUpdate.setInt(2, cid); psUpdate.executeUpdate(); ContractStatus statusManager = new ContractStatus(); status = statusManager.getStatus(cid, date); status.setContractId(cid); status.setDate1(date); status.setDate2(null); status.setStatus(KernelConst.CONTRACT_STATUS_ACTIVE); status.setComment("Смена статуса сервером - подключен по изменению лимита"); statusManager.changeStatus(status, 0); } else if ((cb.floatValue() < cl.floatValue()) && (cs == KernelConst.CONTRACT_STATUS_ACTIVE)) { // Баланса ниже лимита. Приостанавливаем договор. cg = contract.getGroups(); cg = cg | (1L<<GROUP_ERROR_BALANCE); query = "UPDATE contract SET gr=? WHERE id=?"; psUpdate = con.prepareStatement(query); psUpdate.setLong(1, cg); psUpdate.setInt(2, cid); psUpdate.executeUpdate(); ContractStatus statusManager = new ContractStatus(); status = statusManager.getStatus(cid, date); status.setContractId(cid); status.setDate1(date); status.setDate2(null); status.setStatus(KernelConst.CONTRACT_STATUS_SUSPENDED); status.setComment("Смена статуса сервером - приостановлен, поступивших средств недостаточно"); statusManager.changeStatus(status, 0); } } else { // Пришёл реальный платёж if ((cb.floatValue() >= cl.floatValue()) && (cs == KernelConst.CONTRACT_STATUS_SUSPENDED)) { // Баланс больше лимита. Подключаем договор. cg = contract.getGroups(); cg = cg & ~(1L<<GROUP_ERROR_BALANCE); query = "UPDATE contract SET gr=? WHERE id=?"; psUpdate = con.prepareStatement(query); psUpdate.setLong(1, cg); psUpdate.setInt(2, cid); psUpdate.executeUpdate(); ContractStatus statusManager = new ContractStatus(); status = statusManager.getStatus(cid, date); status.setContractId(cid); status.setDate1(date); status.setDate2(null); status.setStatus(KernelConst.CONTRACT_STATUS_ACTIVE); status.setComment("Смена статуса сервером - подключен по поступлению платежа"); statusManager.changeStatus(status, 0); //Открыть шлюз modset = new ModuleSetup(con, 1); (new IPNContractStatusManager(con, 1, modset)).changeStatus(cid, 0, 0, true); } } такой еррор приходит в письме: Цитата: Contract 116
GENERATE_TIME: 06.07.10 18:33:51 EXECUTION_STOP_TIME: 06.07.10 18:33:51 PROCESS_TIME: 15 OUT: EXCEPTIONS: Sourced file: Function [id:3; title:Смена статуса договора при поступлении платежа] : Error in method invocation: Method getStatus( int, java.util.GregorianCalendar ) not found in class'bitel.billing.server.contract.bean.ContractStatus' : at Line: 26 : in file: Function [id:3; title:Смена статуса договора при поступлении платежа] : statusManager .getStatus ( cid , date ) java.util.concurrent.ExecutionException: Sourced file: Function [id:3; title:Смена статуса договора при поступлении платежа] : Error in method invocation: Method getStatus( int, java.util.GregorianCalendar ) not found in class'bitel.billing.server.contract.bean.ContractStatus' : at Line: 26 : in file: Function [id:3; title:Смена статуса договора при поступлении платежа] : statusManager .getStatus ( cid , date ) at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:232) at java.util.concurrent.FutureTask.get(FutureTask.java:91) at bitel.billing.server.script.bean.ScriptMachine$ThreadedScriptMachine.runScriptImpl(ScriptMachine.java:371) at bitel.billing.server.script.bean.ScriptMachine.runScript(ScriptMachine.java:129) at bitel.billing.server.script.bean.event.EventProcessor.processContractEvent(EventProcessor.java:299) at bitel.billing.server.script.bean.event.EventProcessor.processEvent(EventProcessor.java:217) at bitel.billing.server.script.bean.event.EventProcessor.processEvent(EventProcessor.java:201) at bitel.billing.server.script.bean.event.EventProcessor.processEvent(EventProcessor.java:188) at bitel.billing.server.contract.action.ActionUpdateContractPayment.doAction(ActionUpdateContractPayment.java:179) at bitel.billing.server.Executer.doModule(Unknown Source) at bitel.billing.server.Executer.doPost(Unknown Source) at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at bitel.billing.server.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:37) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:568) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Thread.java:619) Caused by: Sourced file: Function [id:3; title:Смена статуса договора при поступлении платежа] : Error in method invocation: Method getStatus( int, java.util.GregorianCalendar ) not found in class'bitel.billing.server.contract.bean.ContractStatus' : at Line: 26 : in file: Function [id:3; title:Смена статуса договора при поступлении платежа] : statusManager .getStatus ( cid , date ) at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:77) at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:102) at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47) at bsh.BSHAssignment.eval(BSHAssignment.java:77) at bsh.Interpreter.eval(Interpreter.java:653) at ru.bitel.bgbilling.kernel.script.server.bean.ScriptInstance.eval(ScriptInstance.java:352) at bitel.billing.server.script.bean.ScriptMachine$SimpleScriptRunner.runScript(ScriptMachine.java:70) at bitel.billing.server.script.bean.ScriptMachine.runScriptImpl(ScriptMachine.java:190) at bitel.billing.server.script.bean.ScriptMachine$ThreadedScriptMachine.access$0(ScriptMachine.java:1) at bitel.billing.server.script.bean.ScriptMachine$ThreadedScriptMachine$1.call(ScriptMachine.java:361) at bitel.billing.server.script.bean.ScriptMachine$ThreadedScriptMachine$1.call(ScriptMachine.java:1) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) ... 1 more |
Автор: | skn [ 06 июл 2010, 23:37 ] |
Заголовок сообщения: | Re: Проблема с переходом на версию 5.1 и скриптами поведения |
попробуйте заменить Код: status = statusManager.getStatus(cid, date); на Код: status = statusManager.getStatus(cid, date.getTime());
|
Автор: | loginex [ 07 июл 2010, 14:40 ] |
Заголовок сообщения: | Re: Проблема с переходом на версию 5.1 и скриптами поведения |
попробовал. теперь Цитата: ID события: bgbs.contract.script.error
Время регистрации события: 07.07.2010 12:39:00 Contract 116 GENERATE_TIME: 07.07.10 12:39:00 EXECUTION_STOP_TIME: 07.07.10 12:39:00 PROCESS_TIME: 16 OUT: EXCEPTIONS: Sourced file: Function [id:3; title:Смена статуса договора при поступлении платежа] : Error in method invocation: Method getStatus( int, java.util.Date ) not found in class'bitel.billing.server.contract.bean.ContractStatus' : at Line: 26 : in file: Function [id:3; title:Смена статуса договора при поступлении платежа] : statusManager .getStatus ( cid , date .getTime ( ) ) java.util.concurrent.ExecutionException: Sourced file: Function [id:3; title:Смена статуса договора при поступлении платежа] : Error in method invocation: Method getStatus( int, java.util.Date ) not found in class'bitel.billing.server.contract.bean.ContractStatus' : at Line: 26 : in file: Function [id:3; title:Смена статуса договора при поступлении платежа] : statusManager .getStatus ( cid , date .getTime ( ) ) at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:232) at java.util.concurrent.FutureTask.get(FutureTask.java:91) at bitel.billing.server.script.bean.ScriptMachine$ThreadedScriptMachine.runScriptImpl(ScriptMachine.java:371) at bitel.billing.server.script.bean.ScriptMachine.runScript(ScriptMachine.java:129) at bitel.billing.server.script.bean.event.EventProcessor.processContractEvent(EventProcessor.java:299) at bitel.billing.server.script.bean.event.EventProcessor.processEvent(EventProcessor.java:217) at bitel.billing.server.script.bean.event.EventProcessor.processEvent(EventProcessor.java:201) at bitel.billing.server.script.bean.event.EventProcessor.processEvent(EventProcessor.java:188) at bitel.billing.server.contract.action.ActionUpdateContractPayment.doAction(ActionUpdateContractPayment.java:179) at bitel.billing.server.Executer.doModule(Unknown Source) at bitel.billing.server.Executer.doPost(Unknown Source) at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at bitel.billing.server.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:37) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:568) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Thread.java:619) Caused by: Sourced file: Function [id:3; title:Смена статуса договора при поступлении платежа] : Error in method invocation: Method getStatus( int, java.util.Date ) not found in class'bitel.billing.server.contract.bean.ContractStatus' : at Line: 26 : in file: Function [id:3; title:Смена статуса договора при поступлении платежа] : statusManager .getStatus ( cid , date .getTime ( ) ) at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:77) at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:102) at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47) at bsh.BSHAssignment.eval(BSHAssignment.java:77) at bsh.Interpreter.eval(Interpreter.java:653) at ru.bitel.bgbilling.kernel.script.server.bean.ScriptInstance.eval(ScriptInstance.java:352) at bitel.billing.server.script.bean.ScriptMachine$SimpleScriptRunner.runScript(ScriptMachine.java:70) at bitel.billing.server.script.bean.ScriptMachine.runScriptImpl(ScriptMachine.java:190) at bitel.billing.server.script.bean.ScriptMachine$ThreadedScriptMachine.access$0(ScriptMachine.java:1) at bitel.billing.server.script.bean.ScriptMachine$ThreadedScriptMachine$1.call(ScriptMachine.java:361) at bitel.billing.server.script.bean.ScriptMachine$ThreadedScriptMachine$1.call(ScriptMachine.java:1) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) ... 1 more |
Автор: | restart [ 07 июл 2010, 15:52 ] |
Заголовок сообщения: | Re: Проблема с переходом на версию 5.1 и скриптами поведения |
У Вас несколько раз встречается Код: ContractStatus statusManager = new ContractStatus(); вместо Код: ContractStatusManager statusManager = new ContractStatusManager(); ![]() Не думаю, что это работало бы на 4.6\5.0 ![]() |
Автор: | loginex [ 07 июл 2010, 16:09 ] |
Заголовок сообщения: | Re: Проблема с переходом на версию 5.1 и скриптами поведения |
работало с 4.6 до 5.0, точно уже не помню, брал вроде из вики, немного модифицировав. теперь в 5.1 bitel.billing.server.contract.bean.ContractStatusManager.getStatus(int, Calendar) убрали в депрекейтед, да так убрали, что теперь этот скрипт вообще не пашет. |
Автор: | restart [ 07 июл 2010, 16:14 ] |
Заголовок сообщения: | Re: Проблема с переходом на версию 5.1 и скриптами поведения |
Вы понимаете, что у Вас статус менеджером назывался обыкновенный объект ContractStatus (bean)? Который никакого getStatus( int, Calendar ) вообще не имеет. Внимательно мой предыдущий пост перечитайте и свой код посмотрите ![]() Вообщем, вот: Код: .... ContractStatus statusManager = new ContractStatus(); status = statusManager.getStatus(cid, date); status.setContractId(cid); status.setDate1(date); status.setDate2(null); .... А должно быть: Код: .... ContractStatusManager statusManager = new ContractStatusManager(); status = statusManager.getStatus(cid, date); status.setContractId(cid); status.setDate1(date); status.setDate2(null); .... И так три раза у Вас встречается. Повторюсь, этот код не мог работать на 5.0, т.к. сущность (ContractStatus) и ее менеджер (ContractStatusManager) - это разные классы. |
Автор: | loginex [ 07 июл 2010, 16:19 ] |
Заголовок сообщения: | Re: Проблема с переходом на версию 5.1 и скриптами поведения |
я понимаю, у меня так и было, как вы написали Цитата: ContractStatusManager statusManager = new ContractStatusManager(); но больше это не работает, тем более вываливаются варнинги о том, что ContractStatusManager.getStatus в депрекейтеде. в Api 5.1 написано использовать ContractStatus.getStatus |
Автор: | loginex [ 07 июл 2010, 16:29 ] |
Заголовок сообщения: | Re: Проблема с переходом на версию 5.1 и скриптами поведения |
на данный момент скрипт имеет вид: Код: import bitel.billing.server.call.bean.Login; import bitel.billing.server.contract.bean.*; import bitel.billing.server.script.bean.event.*; import bitel.billing.server.service.bean.*; import bitel.billing.server.npay.bean.*; import bitel.billing.common.KernelConst; import java.util.*; import bitel.billing.server.ipn.bean.*; import ru.bitel.bgbilling.server.util.ModuleSetup; GROUP_ERROR_BALANCE = 62; cid = event.getContractId(); date = event.getGenerateTime().clone(); contract = new ContractManager(con).getContractByID(cid); payment = event.getPayment(); pt = payment.getPaymentTypeID(); cl = contract.getBalanceLimit(); balance = new BalanceUtils(con); cb = balance.getBalance(date.getTime(), cid); ContractStatusManager statusManager = new ContractStatusManager(con); status = statusManager.getStatus(cid, date.getTime()); if (status != null) { cs = status.getStatus(); } else { ContractStatusManager statusManager = new ContractStatusManager(con); status.setContractId(cid); status.setFromDate(date); status.getToDate(null); status.setStatus(KernelConst.CONTRACT_STATUS_ACTIVE); status.setComment("Инициализация статуса сервером"); statusManager.changeStatus(status, 0); cs = status.getStatus(); }; NPAY_MID = 2; csm = new ContractServiceManager(con); List sl = csm.getContractServiceList(cid, NPAY_MID); print("Contract Limit: " + cl); print("Contract Balance: " + cb); for (Iterator it=sl.iterator(); it.hasNext(); ) { cs = (ContractService)it.next(); print (cs.getServiceTitle()); } if (pt == -1) { // Изменение лимита if ((cb.floatValue() >= cl.floatValue()) && (cs == KernelConst.CONTRACT_STATUS_SUSPENDED)) { // Баланс больше лимита. Подключаем договор. cg = contract.getGroups(); cg = cg & ~(1L<<GROUP_ERROR_BALANCE); query = "UPDATE contract SET gr=? WHERE id=?"; psUpdate = con.prepareStatement(query); psUpdate.setLong(1, cg); psUpdate.setInt(2, cid); psUpdate.executeUpdate(); ContractStatusManager statusManager = new ContractStatusManager(con); status = statusManager.getStatus(cid, date.getTime()); status.setContractId(cid); status.setFromDate(date); status.getToDate(null); status.setStatus(KernelConst.CONTRACT_STATUS_ACTIVE); status.setComment("Смена статуса сервером - подключен по изменению лимита"); statusManager.changeStatus(status, 0); } else if ((cb.floatValue() < cl.floatValue()) && (cs == KernelConst.CONTRACT_STATUS_ACTIVE)) { // Баланса ниже лимита. Приостанавливаем договор. cg = contract.getGroups(); cg = cg | (1L<<GROUP_ERROR_BALANCE); query = "UPDATE contract SET gr=? WHERE id=?"; psUpdate = con.prepareStatement(query); psUpdate.setLong(1, cg); psUpdate.setInt(2, cid); psUpdate.executeUpdate(); ContractStatusManager statusManager = new ContractStatusManager(con); status = statusManager.getStatus(cid, date.getTime()); status.setContractId(cid); status.setFromDate(date); status.getToDate(null); status.setStatus(KernelConst.CONTRACT_STATUS_SUSPENDED); status.setComment("Смена статуса сервером - приостановлен, поступивших средств недостаточно"); statusManager.changeStatus(status, 0); } } else { // Пришёл реальный платёж if ((cb.floatValue() >= cl.floatValue()) && (cs == KernelConst.CONTRACT_STATUS_SUSPENDED)) { // Баланс больше лимита. Подключаем договор. cg = contract.getGroups(); cg = cg & ~(1L<<GROUP_ERROR_BALANCE); query = "UPDATE contract SET gr=? WHERE id=?"; psUpdate = con.prepareStatement(query); psUpdate.setLong(1, cg); psUpdate.setInt(2, cid); psUpdate.executeUpdate(); ContractStatusManager statusManager = new ContractStatusManager(con); status = statusManager.getStatus(cid, date.getTime()); status.setContractId(cid); status.setFromDate(date); status.getToDate(null); status.setStatus(KernelConst.CONTRACT_STATUS_ACTIVE); status.setComment("Смена статуса сервером - подключен по поступлению платежа"); statusManager.changeStatus(status, 0); //Открыть шлюз modset = new ModuleSetup(con, 1); (new IPNContractStatusManager(con, 1, modset)).changeStatus(cid, 0, 0, true); } } ошибок нет, но скрипт что-то не работает, в логах Цитата: 07-07/14:32:18 INFO [http-8080-3] script - Process event cid:31; event:Event bitel.billing.server.script.bean.event.PaymentEvent cid: 31; module: 0; type: 1; userId: 7
07-07/14:32:18 INFO [http-8080-3] script - Process event cid:31; event:Event bitel.billing.server.script.bean.event.PaymentEvent cid: 31; module: 0; type: 1; userId: 7 07-07/14:32:18 INFO [http-8080-3] script - Process time => 32 07-07/14:32:18 INFO [http-8080-3] script - Contract Limit: 0.00 Contract Balance: 756.00 |
Автор: | restart [ 07 июл 2010, 16:35 ] |
Заголовок сообщения: | Re: Проблема с переходом на версию 5.1 и скриптами поведения |
loginex писал(а): я понимаю, у меня так и было, как вы написали Цитата: ContractStatusManager statusManager = new ContractStatusManager(); но больше это не работает, тем более вываливаются варнинги о том, что ContractStatusManager.getStatus в депрекейтеде. в Api 5.1 написано использовать ContractStatus.getStatus Warnings - это предупреждения, но не ошибки, т.е. скрипт при этом отрабатывает корректно. По поводу API 5.1 там написано Цитата: использовать public ContractStatus getStatus( int cid, Date date ) имелось ввиду у ContractStatusManager использовать public функцию getStatus( int, Date ), которая возвращает ContractStatus. Исправим описание, т.к. оно и правда немного двусмысленное. |
Автор: | stark [ 07 июл 2010, 16:41 ] |
Заголовок сообщения: | Re: Проблема с переходом на версию 5.1 и скриптами поведения |
loginex писал(а): ошибок нет, но скрипт что-то не работает, в логах Цитата: 07-07/14:32:18 INFO [http-8080-3] script - Process event cid:31; event:Event bitel.billing.server.script.bean.event.PaymentEvent cid: 31; module: 0; type: 1; userId: 7 07-07/14:32:18 INFO [http-8080-3] script - Process event cid:31; event:Event bitel.billing.server.script.bean.event.PaymentEvent cid: 31; module: 0; type: 1; userId: 7 07-07/14:32:18 INFO [http-8080-3] script - Process time => 32 07-07/14:32:18 INFO [http-8080-3] script - Contract Limit: 0.00 Contract Balance: 756.00 скрипт работает , но мы не значем какая у вас логика и что вы хотите получить ..денлайте выводы (print ) , выводите переменные, разбирайтесь почему не работает |
Страница 1 из 2 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |