powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Кастомизация логики
7 сообщений из 7, страница 1 из 1
Кастомизация логики
    #38148487
qwertun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
Подскажите пожалуйста как быть....

Есть сервис, к которому нужно добавить события (ну по типу того что в журнал винды пишутся), в задачи которого входит:
1. формирование отчетов о работе пользователей
2. статистика использования модулей системы.
3. уведомление отдельных пользователей о событиях (рассылать уведомления).

Мне видится реализация подобного функционала, как:
события — это запись в некой табличке в базе, с полями:
eventId — айди события
eventType — тип события
eventData — данные в json/xml строке

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

Event — интерфейс объекта сообщения (в нем определяется набор методов, типа toJSON, toXML, toEmail, toEventDTO etc — каждый из которых реализуется в нужном нам ивенте (ивент содержит больше данных чем ивентДТО )

EventXXX
EventYYY — набор ивентов имплементирующих интерфейс Event

EventDTO — сериализатор в базу — общий для всех ивентов

EventDAO — класс со статическими методами, для посылки, получения, и прочей работы с ивентами.

EventEmailSenderBean
EventSmsSenderBean
EventXXXSenderBean — различные рассылщики ивентов

Вопрос собственно в том, как правильно организовать классы обслуживающие данную структуру? Можно ли сделать базовый класс Event сразу же Entyty, и расширять его для конкретных сообщений (реализуя в них методы типа toEmail, toJSON,...)
...
Рейтинг: 0 / 0
Кастомизация логики
    #38148498
qwertun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Фактически, вопрос, как удобнее/правильнее, разместить логику (до нескольких сотен различных поведений) в зависимости от сгененированного события? писать if-else километровый в классе типа EventCoder, как-то имхо некрасиво ((
...
Рейтинг: 0 / 0
Кастомизация логики
    #38148506
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwertun,
1. Готовое не искал?
2. В if else ничего плохого. Посмотри win api
...
Рейтинг: 0 / 0
Кастомизация логики
    #38148583
qwertun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

1. искал но ничего инетресного не нашлось, да и хочется самому поразбираться. На копипасте далеко не уехать ;)
2. ну 1 -2 -3, но когда их будет под сотню, да и не только в свитчинге дело, наборы данных от события к событию отличаются тоже, в общем как-то не очень красиво получается... Хотелось бы иметь четкую структуру, одно событие, один класс реализующий несколько интерфейсов. Но вот как совместить многокласие и базу не знаю ((( Можно конечно, пораждать промежуточный класс типа имент-энтити, который отвечает за сохранение в базу, но может можно наследоваться уже от энтити класса ?
...
Рейтинг: 0 / 0
Кастомизация логики
    #38148613
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwertun,
мне непонятна постановка - Причём тут вообще события?
1. Обычные отчёты.
2. Статистика для кого и чего? Для заказчика? Сомневаюсь.
3. Для чего и О ЧЁМ уведомлять?

Ты кинулся сразу программировать. А надо - ВИ \ Преценденты.
Подозреваю, что ты придумал идею для самого себя.
Разумеется, если притянуть за уши события и всё на них построить, то у тебя будет миллион if else
...
Рейтинг: 0 / 0
Кастомизация логики
    #38148830
qwertun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

События тут в смысле внутрисистемные события.
Ну вот к примеру.
Есть банальный метод логин, который может порождать события:
1. успешная авторизация пользователя - просто пишем в лог событий и выгружаем в отчеты, аудит системы, аудит работы пользователя.
2. неудачная авторизация - пишем в лог, и если больше скажем 5 подряд неуспешных пишем письмо админу
3. авторизация пользователя из подозрительного места или другого айпи (ну так чисто для примера) - письмо гланюку по безопасности...

И так на туевую кучу методов.. да четко пока не прописано сколько их, но будет больше сотни точно. И главное поведение будет постоянно меняться, то нужно отсылать в почту, то ненужно, то нужно смс только админам, а то еще и гланого босса добавить...


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


1. Отчеты выборка из это таблицы ивентов по признакам.. просто отчеты динамические, будут строится от желания проверяющего и писать сразу отчет по событию не получится.
2. Для начальников, типа кто когда и что делал, кто накасячил, зачем и почему..
3. Да мало ли кейсов. Так внутри в системе есть коментарии к различным сущностям. Тупо подпискка отписка на коменты, добвлени новых, как о них уведомлять то ?
...
Рейтинг: 0 / 0
Кастомизация логики
    #38148847
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwertun,
Я сдаюсь). Т.к. ты раздуваешь из банального логировщика СТАНДАРТНОГО БИБЛИОТЕЧНОГО целую ИС.
В любом резюме есть фраза - умение разбираться в чужом коде.
Вопрос: "если я вставлю Log ( в твои сто методов, то будет работать? ".
Он умеет писать бд и на мыло.
Не надо выделять события в сущность. Умеешь?
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Кастомизация логики
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]