Постановка задачи
Инструмент
Реализация
Примечание |
---|
Уведомления можно создавать двумя способами:
В данной реализации рассматривается 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> |
Добавить код уведомления
Добавить новый код уведомления в ntf_noticetype.csv и ntf_noticetype.csv
Код уведомления | Возможность перенаправить задачу | Заголовок | Является уведомление задачей | Напоминание по уведомлению |
---|---|---|---|---|
EventCode | IsAllowTaskRedirect | Title | IsTask | RemindType |
RGST2_41 | false | Номер документа изменен | false | _ |
Сопоставить код уведомления и триггер
Добавить новое сопоставление триггера и кода уведомления в notices_types_sochi.csv
Owner | Value | Idx |
---|---|---|
EventCode="RGST2_41" | ChangeNumber* | 0 |
Добавить почтовое уведомление
Добавить новое почтовое уведомления по новым типам уведомлений в файл 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 |
Отладка
- Внести изменения в ветку
- Провести тест на стенде "Изменить номер" и "Удалить номер"
- Если найдены недочеты по почтовым уведомления, можно сделать правки через админку, затем внести правки в указанные выше csv файлы.