BiTel

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

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




Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: События при работе с объектами
СообщениеДобавлено: 07 апр 2016, 20:47 
Не в сети

Зарегистрирован: 07 май 2008, 13:34
Сообщения: 594
Откуда: Москва
Карма: 27
Событий в списке 5 штук: добавлен объект, удален объект, изменен объект, изменен параметр, перед изменением параметра.
Вопросы пока такие:
1) Это какие типы событий, я вот нашел парочку в ru.bitel.bgbilling.kernel.contract.object.common.event ContractObjectParamModifiedEvent и ContractObjectTypeModifiedEvent, это они? Я про то какой тип расширять EventScriptBase<?> для каждого из этих пяти событий.
2) Событие "добавлен объект" сработает в момент когда мы выбрали тип объекта и нажали ОК? Т.е. в этот момент у нас все параметра объекта пустые и все что мы знаем это тип объекта?
3) В какой момент срабатывает событие "изменен объект" и чем оно отличается от "изменен параметр"?
4) Можно ли в событии "перед изменением параметра" запретить это изменение?
5) Событие "объект удален" в какой момент приходит: до удаления или после? Можно заблокировать удаление?

Заранее спасибо :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: События при работе с объектами
СообщениеДобавлено: 07 апр 2016, 21:20 
Не в сети

Зарегистрирован: 07 май 2008, 13:34
Сообщения: 594
Откуда: Москва
Карма: 27
Нашел еще ru.bitel.bgbilling.kernel.event.events.ContractObjectParameterUpdateEvent.
Но сразу бросается в глаза что у класса нет ни свойства ссылающегося на объект, ни свойства указывающего на параметр, только value и cid доступны.
А в классе ContractObjectParameterBeforeUpdateEvent конструктору передается paramid, но нигде не сохраняется? И ссылки/id на сам объект тоже не видно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: События при работе с объектами
СообщениеДобавлено: 08 апр 2016, 11:20 
Не в сети
Клиент

Зарегистрирован: 09 фев 2011, 15:28
Сообщения: 1092
Карма: 135
1) https://bgbilling.ru/v6.2/javadoc/index.html - там есть All Classes, можно сделать поиск по слову object

Как обычно, вопрос с середины. Какую задачу то решаете?

Объект добавлен/удален - это имеется ввиду на договор/с договора. ContractAddObjectEvent/ContractDeleteObjectEvent

Изменение параметра объекта и перед изменением параметра - тут должно быть все понятно, ContractObjectParamModifiedEvent и ContractObjectParameterBeforeUpdateEvent

Изменение типа объекта - это изменение типа объекта в справочнике объектов event.ContractObjectTypeModifiedEvent

2) Уже ответил, при добавлении объекта в договор

3) Тоже следует из определения события

4) Можно. https://bgbilling.ru/v6.2/javadoc/ru/bi ... Event.html

5) Нет. Асинхронное событие - удаление объекта договора. Вызывается после удаления объекта договора.

6) Читайте документацию API

7) ContractObjectParameterUpdateEvent - да, имеет cid и value, но value типа ParamValue. С ContractObjectParameterBeforeUpdateEvent тоже самое
https://bgbilling.ru/v6.2/javadoc/bitel ... Value.html


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: События при работе с объектами
СообщениеДобавлено: 08 апр 2016, 14:03 
Не в сети

Зарегистрирован: 07 май 2008, 13:34
Сообщения: 594
Откуда: Москва
Карма: 27
barguzin2 писал(а):
Как обычно, вопрос с середины. Какую задачу то решаете?

Ничего не обычного о чем стоило бы упоминать: синхронизация параметров с внешней системой, валидация, автоматическое заведение услуг.

barguzin2 писал(а):
7) ContractObjectParameterUpdateEvent - да, имеет cid и value, но value типа ParamValue. С ContractObjectParameterBeforeUpdateEvent тоже самое
https://bgbilling.ru/v6.2/javadoc/bitel ... Value.html

Да, что то сразу пошел по jar-ам искать и запутался, и ParamValue прохлопал, спасибо.
Смутило еще что в конструкторы передается paramId и не используется при этом.

P.S. Я правильно понимаю что никакой фабрики или кэша нет и доступ к объектам и договорам надо получать через ContractManager/ContractObjectManaget/etc создавая их непосредственно при обработке события?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: События при работе с объектами
СообщениеДобавлено: 08 апр 2016, 14:14 
Не в сети
Клиент

Зарегистрирован: 09 фев 2011, 15:28
Сообщения: 1092
Карма: 135
Да, всё, что отсутствует в объекте события, нужно вытягивать манагерами.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: События при работе с объектами
СообщениеДобавлено: 08 апр 2016, 14:33 
Не в сети

Зарегистрирован: 07 май 2008, 13:34
Сообщения: 594
Откуда: Москва
Карма: 27
Так, все же вроде чего не хватает или я опять затупил.
В ContractObjectParameterBeforeUpdateEvent передается только cid(int) и value(ParamValue), но ParamValue это objectId(int) и paramId(int), а где взять собственно новое значение параметра?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: События при работе с объектами
СообщениеДобавлено: 08 апр 2016, 15:27 
Не в сети
Клиент

Зарегистрирован: 09 фев 2011, 15:28
Сообщения: 1092
Карма: 135
ParamValue - это базовый класс, у которого есть еще дочерние AddressParamValue, TextParamValue и другие, соответствующие типу параметру объекта. Поэтому тут нужно еще определять по paramId тип параметра, а уже потом получать значение, приведенное к этому типу, например, вот так
Код:
   TextParamValue value = (TextParamValue) event.getValue();
   String txt = value.getValue();


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: События при работе с объектами
СообщениеДобавлено: 08 апр 2016, 15:29 
Не в сети

Зарегистрирован: 07 май 2008, 13:34
Сообщения: 594
Откуда: Москва
Карма: 27
Да, все ясно. Спасибо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: События при работе с объектами
СообщениеДобавлено: 08 апр 2016, 15:57 
Не в сети
Клиент

Зарегистрирован: 09 фев 2011, 15:28
Сообщения: 1092
Карма: 135
Где ? :D
Кнопка спасибо находится слева под профилем Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: События при работе с объектами
СообщениеДобавлено: 08 апр 2016, 22:53 
Не в сети

Зарегистрирован: 07 май 2008, 13:34
Сообщения: 594
Откуда: Москва
Карма: 27
В ObjectParam есть флаги Read и Write, и в ParamManager они реализованы (выставляются в/из битовой маски object_param.flags). Но ни в интерфейсе ни экшенах эти флаги не проверяются?

Если при обработке события ContractObjectParameterBeforeUpdateEvent выставить ошибку, то в клиенте значение параметра все равно остается, надо тыкнуть в объект чтобы значения параметров обновились. По идее если я, например, в ContractObjectParameterUpdateEvent в ответ на изменение одного параметра изменю другие параметры объекта, то опять же в клиенте я этого не увижу. Логично было бы что бы клиент сам обновлял все параметры объекта после изменения одного из них.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: События при работе с объектами
СообщениеДобавлено: 12 апр 2016, 15:05 
Не в сети

Зарегистрирован: 07 май 2008, 13:34
Сообщения: 594
Откуда: Москва
Карма: 27
еще два момента

e.setError() реализуется через исключение, ошибка попадает в server.error.log с stacktrace, если использовать синхронное событие для валидации данных, то действия пользователя загаживают серверный лог, как с этим быть? Фильтровать как то в log4j? Stacktrace для этого исключения имеет какой то смысл?

Два класса в bitel.billing.server.contract.object.bean ObjectTypeParam и TypeParam подозрительно одинаковые. Один из них должен быть deprecated?


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

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


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

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


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

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