BiTel

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

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




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: Событие - параметр изменен
СообщениеДобавлено: 27 окт 2017, 22:28 
Не в сети
Клиент

Зарегистрирован: 21 сен 2009, 13:01
Сообщения: 835
Откуда: Москва
Карма: 15
Использую обработку изменения параметра:

Код:
// После изменения
      if (event instanceof ParamChangedEvent) {
         
         ParamChangedEvent changedEvent = (ParamChangedEvent) event;
         con = Setup.getSetup().getDBConnectionFromPool();
         processDao = new ProcessDAO(con);
         processTypeDao = new ProcessTypeDAO(con);
         processPrf = new Preferences((processTypeDao.getProcessType(processDao.getProcess(changedEvent.getObjectId()).getTypeId()).getProperties().getConfig()));
         /*
          * Постобработка времени работы
          */
         if(changedEvent.getParameter().getId() == PARAM_WORKDATETIME){
            handleWorkDateTimeAfter(changedEvent);
         }
         /*
          * Обрабатываем изменеине параметров для Гугл календаря
          */
         if((Arrays.asList(GOOGLE_PARAMS_ID)).contains(changedEvent.getParameter().getId())){
            handleGoogleParams(changedEvent);
         }
      }


handleGoogleParams(changedEvent) выглядит вот так:
Код:
/**
    * Обработка параметров в гугл календаре
    *
    * @param changedEvent
    * @throws BGException
    */
   private void handleGoogleParams(ParamChangedEvent changedEvent) throws BGException {
      String calendarId = processPrf.get("google.cal:calendarId", "");
      if(!Utils.isEmptyString(calendarId)){
         try {
            this.con.commit();
         } catch (SQLException e) {
            log.error(e.getMessage(), e);
         }
         
         GoogleHandler googleHandler = new GoogleHandler(processDao.getProcess(changedEvent.getObjectId()), this.con, processPrf);
         googleHandler.processCalendar();
      }
   }



суть в том, что GoogleHandler видит старые значения параметров, но ведь перед запуском ParamChangedEvent в БД уже измененное значение или еще нет??


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Событие - параметр изменен
СообщениеДобавлено: 28 окт 2017, 03:48 
Не в сети
Клиент

Зарегистрирован: 21 сен 2009, 13:01
Сообщения: 835
Откуда: Москва
Карма: 15
собственно проверка показывает, что в этот момент параметр в БД еще не менялся:

Код:
String query = "SELECT value FROM param_datetime WHERE id = '12337' AND param_id = '10'";
         try {
            PreparedStatement ps = con.prepareStatement(query);
            ResultSet rs = ps.executeQuery();
            while (rs.next()){
               log.info("INDB:" + rs.getTime("value"));
               log.info("INEVENT:" + changedEvent.getValue() + " PRC:" + changedEvent.getObjectId() + " PAR:" + changedEvent.getParameter().getId());
            }
         } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
         }

10-28/00:46:54  INFO [EventProcessor-pool-1-thread-1159] ParameterListener - INDB:14:00:00
10-28/00:46:54  INFO [EventProcessor-pool-1-thread-1159] ParameterListener - INEVENT:Fri Oct 27 07:00:00 MSK 2017 PRC:12337 PAR:10


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Событие - параметр изменен
СообщениеДобавлено: 29 окт 2017, 02:02 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Оно новое в той же транзакции, а вы получаете новое соединение к БД из пула. А почему не получить его из события по getValue()? Либо получайте соединение из СonnectionSet, передаваемого в функцию обработчика.


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

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


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

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


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

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