Регистрация событий сложных объектов с событием завершения сохранения
Такими объектами в системе являются:
- РК документа – в конце сохранения данных вызывается процедура RC_SAVE
- РК проекта документа – в конце сохранения данных вызывается процедура PRJ_SAVE
- Поручение – в конце сохранения данных вызывается процедура RES_SAVE
- Пользователь – в конце сохранения данных вызывается процедура USER_SAVE
Для таких объектов модифицированы соответствующие процедуры сохранения, в них добавлен код вызова процедуры регистрации событий.
Например, если пользователь через приложение выполняет создание экземпляра такого объекта, с одновременным заполнением каких-либо данных в дочерних таблицах данного объекта, будет происходить следующее:
- Пользователь редактирует форму создания объекта.
- Пользователь выполняет действие "Сохранить" для объекта.
- Приложение выполняет операцию INSERT в "корневую" таблицу объекта.
- Приложение выполняет операцию INSERT в "дочерние" таблицы объекта, в зависимости от введенных пользователем данных, запись может быть выполнена в одну или несколько таблиц.
- Приложение выполняет вызов соответствующей хранимой процедуры.
При выполнении хранимой процедуры будет вызвана процедура регистрации события со значением 1 в параметре "Вид события".
При модификации объекта пользователем, выполняемые действия следующие:
- Пользователь редактирует форму редактирования объекта.
- Пользователь выполняет действие "Сохранить" для объекта.
- Приложение выполняет операцию UPDATE для "корневой" таблицы объекта (при необходимости).
- Приложение выполняет операции INSERT, UPDATE, DELETE для "дочерних" таблиц объекта (при необходимости).
- Приложение выполняет вызов соответствующей хранимой процедуры.
При выполнении хранимой процедуры будет вызвана процедура регистрации события со значением 2 в параметре "Вид события".
При удалении объектов, хранимые процедуры не вызываются, поэтому, вызов процедуры регистрации события делается в триггере, срабатывающем на удаление записей из "корневой" таблицы объекта.
Вызов процедуры регистрации событий выполняется со следующими значениями аргументов:
- Если тип события – добавление записи, то в процедуру в параметре "Вид события" передается значение – 1, иначе – 2.
- В параметре "Вид объекта" передается код, взятый из таблицы EOS_OBJECT, кроме таблицы RESOLUTION, для которой kind_object = 4
- В параметре "Идентификатор объекта" передается значение первичного ключа соответствующей записи таблицы (см. описание поля "Идентификатор объекта" таблицы хранения данных очередей событий)
- В параметре "Группа документов" передается значение DUE_DOCGROUP соответствующего объекта. Для поручений используется группа документов РК, которой поручение принадлежит.
- В параметре "Флаги операции" передается список флагов, установленных в триггерах при модификации таблиц, входящих в данный составной объект, и стандартные флаги операций.
Стандартные флаги редактирования сущностей.
Имена флагов формируются по схеме:
<I|U|D>_<TABLE_NAME>[_<OBJ>], где:
- I, U, D – признак операции – добавление, изменение, удаление соответственно.
- TABLE_NAME – имя таблицы БД – например, DOC_RC, REF_SEND, REPLY и т.п.
- OBJ – только для таблицы REF_FILE – суффикс определяющий, к какому объекту принадлежит запись. Возможные значения: RC, RES, PRJ.
Примеры флагов:
- I_REF_CORRESP – была добавлена запись в раздел Корреспонденты РК.
- D_FORWARD – была выполнена операция отмены пересылки.
- I_REF_FILE_RES – добавлен файл отчета исполнителя резолюции.
Также, в флагах отмечается факт изменения дополнительных реквизитов РК и РКПД – в поле FLAGS пишется API_NAME измененного реквизита (см. Таблица Л. 1).
Таблица Л. 1 - Перечень флагов операций в событиях сложных объектов
|
Флаг
|
Описание
|
|
marksend
|
Проставляется, когда ожидается отправка для внешнего или внутреннего адресата (дата отправки заполнена).
|
|
forward
|
Проставляется при добавлении записи в журнале пересылок РК.
|
|
insrc
|
Проставляется при создании РК.
|
|
rcdel
|
Проставляется при удалении РК.
|
|
rcctrl
|
Проставляется при возникновении события, могущего повлиять на состояние контрольности РК.
|
|
adjlayer
|
Проставляется при переносе резолюции или куста резолюций на другой уровень.
|
|
outcard
|
Проставляется при добавлении или изменении исполнителя документа.
|
|
carddel
|
Проставляется при возникновении события, могущего привести к исключению РК из картотеки.
|
|
calcsend
|
Проставляется при добавлении, изменении или удалении адресата РК.
|
|
prjnewstage
|
Проставляется при создании новой версии РКПД.
|
|
resadd
|
Проставляется при добавлении резолюции, проекта резолюции и рассылке проекта резолюции.
|
|
rescard
|
Проставляется при изменении принадлежности поручения картотекам.
|
|
resdel
|
Проставляется при удалении поручения.
|
|
resprjdel
|
Проставляется при удалении проекта резолюции.
|
|
resctrlend
|
Проставляется при снятии поручения с контроля.
|
|
prjrcdel
|
Проставляется при удалении РКПД.
|
|
to_reestr
|
Включение РК в реестр или исключение РК из реестра
|
|
send_reestr
|
Реестр получил статус "отправлен"
|
|
mark_email
|
В РК отмечена "без реестровая" отправка, например, отправка по email
|
|
ACCEPT_EXECUTE
|
Поручение принято исполнителем на исполнение – заполнено поле REPLY.RECEPT_DATE
|
|
res_prj_approved_or_sent
|
Проект поручения был утвержден руководителем или утвержден и разослан
|
