Дерево страниц
Skip to end of metadata
Go to start of metadata

Постановка задачи

Добавить уведомление Исполнителю документа об изменении № документа

Инструмент: CMJ, CSV-файлы

Статус

ГОТОВО

РазделУведомления
Комментарий

Реализация

<Сопроводительная информация>



Уведомления можно создавать двумя способами:

  1. По событию в документе: На подпись, Подписать, На регистрацию, Зарегистрировать т.д.
  2. По сервисным процедурам: Напоминание, Переход на этапы согласования и т.д.

В данной реализации рассматривается 1 способ

Изменения применяются в момент deploy ear.

Добавить новый триггер 

Добавить новый триггер ChangeNumber* (пример: ChangeNumberInternalRKK) в файл ssrv-sochi-fellow\src\main\resources\notification\trigger-events.xml

ChangeNumber*
<!--Изменение номер во Внутренних-->
<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

Код уведомленияВозможность перенаправить задачуЗаголовокЯвляется уведомление задачейНапоминание по уведомлению
EventCodeIsAllowTaskRedirectTitleIsTaskRemindType
RGST2_41falseНомер документа измененfalse_


Сопоставить код уведомления и триггер

Добавить новое сопоставление триггера и кода уведомления в notices_types_sochi.csv

OwnerValueIdx
EventCode="RGST2_41"ChangeNumber*0


Добавить почтовое уведомление

Добавить новое почтовое уведомления по новым типам уведомлений в файл import-notification_text.csv 

notification_typenotification_partlocalechannelnotification_text
ChangeNumber* <ChangeNumberInternalRKK>subjectname="RU"MailNotificationChannelИзменен номер Внутреннего документа
InboxNotificationChannel
ChangeNumber* <ChangeNumberInternalRKK>bodyname="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>


Для: <#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())}

InboxNotificationChannel

Отладка

  1. Внести изменения в ветку
  2. Провести тест на стенде "Изменить номер" и "Удалить номер"
  3. Если найдены недочеты по почтовым уведомления, можно сделать правки через админку, затем внести правки в указанные выше csv файлы.