Генерация новостей исполнителям при изменении процессов
Материал из BiTel WiKi
(Различия между версиями)
Администратор (Обсуждение | вклад)
(Новая страница: «Фрагмент кода обработчика событий процесса, генерирует новость по появлению в процессе н…»)
(Новая страница: «Фрагмент кода обработчика событий процесса, генерирует новость по появлению в процессе н…»)
Текущая версия на 09:47, 19 мая 2014
Фрагмент кода обработчика событий процесса, генерирует новость по появлению в процессе новых сообщений. В заголовок новости помещается адресный параметр процесса и привязанный контрагент. В тексте сообщения отображается ссылка открытия карточки процесса.
.... private void generateNews( Connection con, Process process, UserEvent event ) throws BGException { ProcessLinkDAO linkDao = new ProcessLinkDAO( con ); ParamValueDAO paramDao = new ParamValueDAO( con ); NewsDAO newsDao = new NewsDAO( con ); CommonObjectLink linkCustomer = Utils.getFirst( linkDao.getObjectLinksWithType( process.getId(), Customer.OBJECT_TYPE ) ); ParameterAddressValue address = Utils.getFirst( paramDao.getParamAddress( process.getId(), PROCESS_PARAM_ADDRESS ).values() ); if( address == null ) { address = Utils.getFirst( paramDao.getParamAddress( process.getId(), PROCESS_PARAM_ADDRESSES ).values() ); } if( linkCustomer == null || address == null) ) { return; } News news = new News(); news.setCreateDate( new Date() ); news.setLifeTime( 200 ); news.setReadTime( 400 ); news.setUserId( event.getForm().getUserId() ); Set<Integer> userIds = new HashSet<Integer>( process.getExecutorIds() ); // обработка события "сообщение добавлено" if( event instanceof ProcessMessageAddedEvent ) { final int typeId = process.getTypeId(); ProcessType type = ProcessTypeCache.getProcessType( typeId ); news.setTitle( type.getTitle() + " " + linkCustomer.getLinkedObjectTitle() + " => новое сообщение" ); // описание и ссылка открытия процесса в теле сообщения String text = type.getTitle() + " \"" + linkCustomer.getLinkedObjectTitle() + ", " + address.getValue() + "\" получено новое сообщение.<br/>" + "<a href='#UNDEF' onClick='openProcess( " + process.getId() + " )'>Перейти к процессу</a>"; news.setDescription( text ); } // пользователь, добавивший сообщение, новость не получает userIds.remove( event.getForm().getUserId() ); if( userIds.size() > 0 && Utils.notBlankString( news.getTitle() ) ) { newsDao.updateNewsUsers( news, userIds ); } } ....