forum.bitel.ru http://forum.bitel.ru/ |
|
События при работе с объектами http://forum.bitel.ru/viewtopic.php?f=19&t=11506 |
Страница 1 из 1 |
Автор: | Jimson [ 07 апр 2016, 20:47 ] |
Заголовок сообщения: | События при работе с объектами |
Событий в списке 5 штук: добавлен объект, удален объект, изменен объект, изменен параметр, перед изменением параметра. Вопросы пока такие: 1) Это какие типы событий, я вот нашел парочку в ru.bitel.bgbilling.kernel.contract.object.common.event ContractObjectParamModifiedEvent и ContractObjectTypeModifiedEvent, это они? Я про то какой тип расширять EventScriptBase<?> для каждого из этих пяти событий. 2) Событие "добавлен объект" сработает в момент когда мы выбрали тип объекта и нажали ОК? Т.е. в этот момент у нас все параметра объекта пустые и все что мы знаем это тип объекта? 3) В какой момент срабатывает событие "изменен объект" и чем оно отличается от "изменен параметр"? 4) Можно ли в событии "перед изменением параметра" запретить это изменение? 5) Событие "объект удален" в какой момент приходит: до удаления или после? Можно заблокировать удаление? Заранее спасибо ![]() |
Автор: | Jimson [ 07 апр 2016, 21:20 ] |
Заголовок сообщения: | Re: События при работе с объектами |
Нашел еще ru.bitel.bgbilling.kernel.event.events.ContractObjectParameterUpdateEvent. Но сразу бросается в глаза что у класса нет ни свойства ссылающегося на объект, ни свойства указывающего на параметр, только value и cid доступны. А в классе ContractObjectParameterBeforeUpdateEvent конструктору передается paramid, но нигде не сохраняется? И ссылки/id на сам объект тоже не видно. |
Автор: | barguzin2 [ 08 апр 2016, 11:20 ] |
Заголовок сообщения: | Re: События при работе с объектами |
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 |
Автор: | Jimson [ 08 апр 2016, 14:03 ] |
Заголовок сообщения: | Re: События при работе с объектами |
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 создавая их непосредственно при обработке события? |
Автор: | barguzin2 [ 08 апр 2016, 14:14 ] |
Заголовок сообщения: | Re: События при работе с объектами |
Да, всё, что отсутствует в объекте события, нужно вытягивать манагерами. |
Автор: | Jimson [ 08 апр 2016, 14:33 ] |
Заголовок сообщения: | Re: События при работе с объектами |
Так, все же вроде чего не хватает или я опять затупил. В ContractObjectParameterBeforeUpdateEvent передается только cid(int) и value(ParamValue), но ParamValue это objectId(int) и paramId(int), а где взять собственно новое значение параметра? |
Автор: | barguzin2 [ 08 апр 2016, 15:27 ] |
Заголовок сообщения: | Re: События при работе с объектами |
ParamValue - это базовый класс, у которого есть еще дочерние AddressParamValue, TextParamValue и другие, соответствующие типу параметру объекта. Поэтому тут нужно еще определять по paramId тип параметра, а уже потом получать значение, приведенное к этому типу, например, вот так Код: TextParamValue value = (TextParamValue) event.getValue();
String txt = value.getValue(); |
Автор: | Jimson [ 08 апр 2016, 15:29 ] |
Заголовок сообщения: | Re: События при работе с объектами |
Да, все ясно. Спасибо. |
Автор: | barguzin2 [ 08 апр 2016, 15:57 ] |
Заголовок сообщения: | Re: События при работе с объектами |
Где ? ![]() Кнопка спасибо находится слева под профилем ![]() |
Автор: | Jimson [ 08 апр 2016, 22:53 ] |
Заголовок сообщения: | Re: События при работе с объектами |
В ObjectParam есть флаги Read и Write, и в ParamManager они реализованы (выставляются в/из битовой маски object_param.flags). Но ни в интерфейсе ни экшенах эти флаги не проверяются? Если при обработке события ContractObjectParameterBeforeUpdateEvent выставить ошибку, то в клиенте значение параметра все равно остается, надо тыкнуть в объект чтобы значения параметров обновились. По идее если я, например, в ContractObjectParameterUpdateEvent в ответ на изменение одного параметра изменю другие параметры объекта, то опять же в клиенте я этого не увижу. Логично было бы что бы клиент сам обновлял все параметры объекта после изменения одного из них. |
Автор: | Jimson [ 12 апр 2016, 15:05 ] |
Заголовок сообщения: | Re: События при работе с объектами |
еще два момента e.setError() реализуется через исключение, ошибка попадает в server.error.log с stacktrace, если использовать синхронное событие для валидации данных, то действия пользователя загаживают серверный лог, как с этим быть? Фильтровать как то в log4j? Stacktrace для этого исключения имеет какой то смысл? Два класса в bitel.billing.server.contract.object.bean ObjectTypeParam и TypeParam подозрительно одинаковые. Один из них должен быть deprecated? |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |