Примечание |
---|
Уведомления можно создавать двумя способами:
В данной реализации рассматривается 1 способ. Изменения применяются в момент deploy ear. |
Добавить новый триггер
Добавить новый триггер ChangeNumber* (пример: ChangeNumberInternalRKK) в файл ssrv-sochi-fellow\src\main\resources\notification\trigger-events.xml
Блок кода | ||||||
---|---|---|---|---|---|---|
| ||||||
<!--Изменение номер во Внутренних--> <notification name="ChangeNumberInternalRKK"> <notification-type name="ChangeNumberInternalRKK" priority="HIGH"> <!-- Получатель --> <addressee> <find-person> <class-name name="ru.intertrust.cm_sochi.srv.connector.sochi.notifications.ReceiversEvaluator"> <find-settings> <doel> <!-- Исполнитель документа --> <expression value="F_DP_IntRkk_Executor^Owner.Executor"/> <!-- <expression value="F_DP_OrdRkk_Executor^Owner.Executor" /> для ОРД --> <!-- <expression value="F_DP_OutputRkk_Executor^Owner.Executor"/> для ИсхД --> </doel> </find-settings> </class-name> </find-person> </addressee> <!-- Отправитель --> <sender> <class-name name="ru.intertrust.cm_sochi.srv.connector.sochi.notifications.SenderEvaluator"> <!-- Изменивший номер. В документе не хранится, поэтому берем последнего редактора --> <find-settings> <sql> select so_beard.id from f_dp_rkkbase rkk join so_personsys on so_personsys.platformperson=rkk.updated_by join so_appointment on (so_appointment.person=so_personsys.id and so_appointment.isprimary=1) join so_beard on (so_beard.id=so_appointment.beard and so_beard.isactive=1) where (rkk.id={0}) </sql> </find-settings> </class-name> </sender> <!-- Триггер. baseValue - старое значение, comparedValue - новое --> <triggers> <trigger domain-object-type="F_DP_IntRkk" event="CHANGE"> <conditions-script> <![CDATA[ var result = false; var qqz = ctx.get('Module.Type.Alias'); if (qqz.equals('TempStorage')) { result = false; } else { var chFields = ctx.getChangedFields(); for (var i = 0, len = chFields.size(); i < len; i++) { var chF = chFields.get(i); if (chF.getName().toLowerCase() == 'regnumcnt') { if (chF.getComparedValue() == null) { break; } else if (chF.getBaseValue() == null) { break; } else { result = true; break; } } } } ctx.setResult(result); ]]> </conditions-script> </trigger> </triggers> <!--Настройка ПКД--> <context-config> <context-object name="Sochi$Pkd"> <java-class name="ru.intertrust.cm_sochi.srv.connector.sochi.notifications.pkd.PkdContextProducer"/> </context-object> </context-config> </notification-type> </notification> |
Добавить код уведомления
Добавить новый код уведомления в ssrv-sochi-fellow\src\main\resources\importdata\box\ntf_noticetype.csv и ssrv-sochi-fellow\src\main\resources\importdata\testing\ntf_noticetype.csv
Код уведомления | Возможность перенаправить задачу | Заголовок | Является уведомление задачей | Напоминание по уведомлению |
---|---|---|---|---|
EventCode | IsAllowTaskRedirect | Title | IsTask | RemindType |
RGST2_41 | false | Номер документа изменен | false | _ |
Сопоставить код уведомления и триггер
Добавить новое сопоставление триггера и кода уведомления в ssrv-sochi-fellow\src\main\resources\importdata\always\ notices_types_sochi.csv
Owner | Value | Idx |
---|---|---|
EventCode="RGST2_41" | ChangeNumber* | 0 |
Добавить почтовое уведомление
Добавить новое почтовое уведомления по новым типам уведомлений в файл ssrv-sochi-fellow\src\main\resources\importdata\notifications\import-notification_text.csv
notification_type | notification_part | locale | channel | notification_text |
---|---|---|---|---|
ChangeNumber* <ChangeNumberInternalRKK> | subject | name="RU" | MailNotificationChannel | Изменен номер Внутреннего документа |
InboxNotificationChannel | ||||
ChangeNumber* <ChangeNumberInternalRKK> | body | name="RU" | MailNotificationChannel | От: <#if Sochi$Pkd.nameFrom()??>${Sochi$Pkd.nameFrom()}<#else><#if Sochi$Pkd.beardFrom()??>${crudService.find(Sochi$Pkd.beardFrom()).getString(""orig_shortname"")}<#else></#if></#if>
Краткое содержание: ДОКУМЕНТ: <#if document.get(""Type"")??>${document.get(""Type"")}<#else></#if> № <#if document.get(""regnumprist"")??>${document.get(""regnumprist"")}<#else></#if><#if document.get(""regnumcnt"")??>${document.get(""regnumcnt"")}<#else></#if><#if document.get(""regnumfin"")??>${document.get(""regnumfin"")}<#else></#if> от <#if document.get(""regdate"")??><#assign d2 = document.get(""regdate"")?index_of(""-"")><#assign d0 = document.get(""regdate"")?last_index_of(""-"")> <#assign dy = document.get(""regdate"")?substring(0,d2)><#assign dd = document.get(""regdate"")?substring(d0+1)><#assign dm = document.get(""regdate"")?substring(d2+1,d0)><#assign ddl = dd?length><#assign dml = dm?length><#if ddl??><#if ddl==2>${dd}<#else>0${dd}</#if><#else></#if>.<#if dml??><#if dml==2>${dm}<#else>0${dm}</#if><#else></#if>.<#if dy??>${dy}<#else></#if><#else></#if> Заголовок: <#if document.get(""Subject"")??>${document.get(""Subject"")}<#else></#if> Открыть документ: ${urlFormer.getUrl(""cm-sochi"", addressee.getId(), document.getId())} |
InboxNotificationChannel |
От: <#if Sochi$Pkd.nameFrom()??>${Sochi$Pkd.nameFrom()}<#else><#if Sochi$Pkd.beardFrom()??>${crudService.find(Sochi$Pkd.beardFrom()).getString(""orig_shortname"")}<#else></#if></#if>
Для: <#list Sochi$Pkd.beardsTo() as beard>${crudService.find(beard).getString(""orig_shortname"")}<#if beard_has_next >, <#else></#if></#list>Краткое содержание:
ДОКУМЕНТ: <#if document.get(""Type"")??>${document.get(""Type"")}<#else></#if> № <#if document.get(""regnumprist"")??>${document.get(""regnumprist"")}<#else></#if><#if document.get(""regnumcnt"")??>${document.get(""regnumcnt"")}<#else></#if><#if document.get(""regnumfin"")??>${document.get(""regnumfin"")}<#else></#if> от <#if document.get(""regdate"")??><#assign d2 = document.get(""regdate"")?index_of(""-"")><#assign d0 = document.get(""regdate"")?last_index_of(""-"")> <#assign dy = document.get(""regdate"")?substring(0,d2)><#assign dd = document.get(""regdate"")?substring(d0+1)><#assign dm = document.get(""regdate"")?substring(d2+1,d0)><#assign ddl = dd?length><#assign dml = dm?length><#if ddl??><#if ddl==2>${dd}<#else>0${dd}</#if><#else></#if>.<#if dml??><#if dml==2>${dm}<#else>0${dm}</#if><#else></#if>.<#if dy??>${dy}<#else></#if><#else></#if>
Заголовок: <#if document.get(""Subject"")??>${document.get(""Subject"")}<#else></#if>
Открыть документ: ${urlFormer.getUrl(""cm-sochi"", addressee.getId(), document.getId())}Отладка
- Внести изменения в ветку
- Провести тест на стенде "Изменить номер" и "Удалить номер"
- Если найдены недочеты по почтовым уведомления, можно сделать правки через админку, затем внести правки в указанные выше csv файлы.