События пользователей
---------------------

Данные события генерируются для каждого из
нижеописанных случаев изменения *данных пользователей*:

*   ``event.users.account.change`` Изменение данных полей *первичной
    карточки* пользователя, т.е. параметров его учётной записи:

        * Фамилия
        * Имя
        * Отчество
        * Логин
        * Код для показателей
        * e-mail
        * JID
        * Личная папка пользователя

*   ``event.users.formdata.change`` Изменение данных *карточек
    пользователей* на основе *форм*, ассоциированных с ним
    посредством функциональности «Отдел кадров». Для данного
    события передаются следующие данные:

        * ``userID`` - идентификатор пользователя

        * ``formUUID`` - идентификатор формы карточки пользователя

        * ``dataUUID`` - идентификатор данных по форме

*   ``event.users.account.add`` Добавление новой записи учётной
    записи пользователя (и связанными с ней файлами по формам
    «отдела кадров»)

*   ``event.users.account.delete`` Удаление (пометка «удалённые»)
    учётной записи пользователя (и связанных с ней файлов по формам
    «отдела кадров»)

*   ``event.users.contactdata.change`` Изменение «контактных данных»
    пользователя — изменение/добавление записей раздела «Контакты»
    профиля пользователя (модуль «Сотрудники») следующих типов:

        * Skype
        * Рабочий телефон
        * XMPP
        * Адрес
        * Мобильный телефон
        * Почта
        * Телефон

Для всех событий типа ``event.users.*`` передаваемые данные —
идентификатор пользователя Synergy.

События должностей
------------------

Данные события генерируются для каждого из нижеописанных случаев c
*должностями*:

*   ``event.orgstructure.position.add`` Добавление новой должности

*   ``event.orgstructure.position.change`` Изменение данных должности -
    добавление/изменение/удаление следующей информации:

    *   Общее:

        *   Название должности (на трех языках)
        *   Код для показателей
        *   Подразделение
        *   Шифр
        *   Необходимое количество штатных единиц
        *   Тип назначения целей
        *   Номер

    *   Управление модулями
    *   Показатели - статус активности

*   ``event.orgstructure.position.formdata.change`` Изменение данных
    *карточки должности* на основе *формы*, ассоциированной с ней
    посредством функциональности «Отдел кадров». Для данного события
    передаются следующие данные:

        * ``positionID`` - идентификатор должности
        * ``assistantID`` - идентификатор заместителя, передается только при изменении
            данных карточки заместителя
        * ``formUUID`` - идентификатор формы карточки должности
        * ``dataUUID`` - идентификатор данных по форме

*   ``event.orgstructure.position.delete`` Удаление должности

Для всех событий типа ``event.orgstructure.position.*`` передаваемые
данные - идентификатор должности ``Synergy``.

События подразделений
---------------------

Данные события генерируются для каждого из нижеописанных случаев c
*подразделениями*:

*   ``event.orgstructure.department.add`` Добавление нового
    департамента

*   ``event.orgstructure.department.change`` Изменение данных
    подразделения - добавление/изменение/удаление следующей
    информации:

    *   Общее:
        *   Информация о подразделении:
            *   Название (на трех языках)
            *   Номер
            *   Код для показателей
            *   Родительское подразделение (для всех узлов, кроме
                корневого)
            *   Удаленный филиал
        *   Информация о руководителе подразделения:
            *   Название должности (на трех языках)
            *   Тип назначения целей
            *   Руководитель
            *   И.О. руководителя
        *   Заместители:
            *   Название (на трех языках)
            *   Номер
            *   Пользователь
            *   Подразделения, в которых данный пользователь будет
                выполнять обязанности заместителя
    *   Управление модулями
    *   Показатели - статус активности
    *   Права на дела:
        *   Наследовать права от родительского подразделения
        *   Дело
        *   Тип документа

    .. note:: Ввиду особенностей реализации при сохранении
              подразделения отдельно сохраняется его карточка,
              отдельно - заместители. Таким образом, в данном
              случае событие ``event.orgstructure.department.change``
              будет отправлено дважды, а при изменении заместителей
              через метод API ``rest/api/positions/assistant/save`` -
              единожды.

*   ``event.orgstructure.department.formdata.change`` Изменение данных
    *карточки подразделения* на основе *формы*, ассоциированной с ней
    посредством функциональности «Отдел кадров». Для данного события
    передаются следующие данные:

        * ``departmentID`` - идентификатор подразделения

        * ``formUUID`` - идентификатор формы карточки подразделения

        * ``dataUUID`` - идентификатор данных по форме

*   ``event.orgstructure.department.delete`` Удаление подразделения

Для всех событий типа ``event.orgstructure.department.*`` передаваемые
данные - идентификатор подразделения `Synergy`.

События реестров
----------------

Событие для реестра не генерируются самостоятельно и не имеют
предопределенных названий. Для того, чтобы для реестра было
сгенерировано событие, необходимо в процесс активации /
изменения / удаления реестра добавить процесс «Событие реестра»
и указать в поле «Название» его название.

Название события должно начинаться со строки
``event.registries.formdata.``. Для различных событий и для
различных реестров могут быть указаны разные либо одинаковые
названия событий в зависимости от целей решаемой задачи.

.. figure:: ../_static/img/integration/registries-event.png
   :scale: 68%

   Процесс «Событие реестра»

События адресной книги
----------------------

Объекты адресной книги (люди, организации) могут генерировать
следующие события:

*   ``event.addressbook.contact.add`` Добавление нового контакта
    адресной книги

*   ``event.addressbook.contact.change`` Изменение данных контакта
    адресной книги: добавление / изменение / удаление записей
    карточки контакта. Событие генерируется при изменении:

    *   данных в дополнительной карточке

    *   данных в стандартной карточке:

        -   «Люди»: ФИО, дата рождения, изображение, телефон,
            мобильный, e-mail, адрес, IM, URL, место работы,
            примечание, ключевые слова, поля дополнительной
            карточки, а также доступность контакта
        -   «Организации»: название, изображение, сайт, адрес,
            телефон, мобильный, e-mail, поля дополнительной
            карточки, а также доступность контакта

*   ``event.addressbook.contact.change`` Изменение данных
    контакта адресной книги

*   ``event.addressbook.contact.delete`` Удаление контакта
    адресной книги

Для всех событий типа ``event.addressbook.contact.*`` передаваемые
данные - это идентификатор контакта адресной книги Synergy.

События работ
-------------

*   ``event.workflow.work.create`` Создание работы

*   ``event.workflow.work.change`` Изменение следующих параметров
    работы:

        - название
        - нагрузка
        - приоритет
        - сроки
        - ключевые слова
        - повторение
        - форма завершения
        - прогресс

*   ``event.workflow.work.completion`` Фактическое завершение работы

*   ``event.workflow.work.expired`` Работа просрочилась

*   ``event.workflow.work.delete`` Удаление работы

    .. note:: При добавлении/изменении/удалении комментария к работе, аналогичное
              событие для документов в очередь не добавляется.

Для события ``event.workflow.work.expired`` используется системная
настройка «Интервал проверки работ на просроченность (в минутах)»
(Конфигуратор -> Настройки системы -> Параметры уведомлений)

Минимальный набор передаваемых данных для всех событий типа
``event.workflow.work.*``:

    * идентификатор работы

Если работа запускается по реестру, то также обязательно передаются:

    *   идентификатор данных по форме записи реестра (свойство с ключом
        ``dataUUID``)

    *   идентификатор документа реестра (свойство с ключом ``documentID``)

В случае, если генерируется любое событие по работе, порожденной
мероприятием проекта, в свойствах сообщения (ключ ArrangementID)
передается идентификатор этого мероприятия (``ParentID``).

Для работ по процессу «работа по форме» (вызванного как непосредственно
из маршрута реестра, так и из шаблона маршрута), кроме всего прочего,
также передаются данные из дополнительных полей, настроенных
непосредственно в самом процессе «работа по форме».

События по проектам
-------------------

*   ``event.projects.arrangement.create`` Создание мероприятия
    проекта

*   ``event.projects.arrangement.delete`` Удаление мероприятия
    проекта

*   ``event.projects.arrangement.restore`` Восстановление
    мероприятия проекта

*   ``event.projects.arrangement.responsibles`` Фактическое
    изменение списка ответственных за мероприятие проекта

    .. note:: Событие изменения списка ответственных не включает
              случаи, когда выбранному ответственному создается работа-запрос
              стать ответственным и когда он отказывает в этом запросе. Таким
              образом, учитывается только фактическое назначение ответственного
              за мероприятие проекта.

*   ``event.projects.arrangement.progress`` Выставление прогресса
    мероприятия

Минимальный набор передаваемых данных для всех событий типа
``event.projects.arrangement.*`` - это идентификатор мероприятия
проекта.

События по документам
---------------------

*   ``event.docflow.document.register`` Регистрация документа в
    журнале

Минимальный набор передаваемых данных в сообщении для события
``event.docflow.document.register`` - идентификатор документа.

В свойствах сообщения (ключ ``registerID``) передаётся
идентификатор журнала.

События по формам
-----------------

*   ``event.form.formdata.change`` Создание и сохранение данных по форме

Минимальный набор передаваемых данных в сообщении для события
``event.form.formdata.change``:

    *   ``dataUUID`` - идентификатор данных по форме;
    *   ``formID`` - идентификатор формы;
    *   ``isNew`` - сохранены ли данные:

        *   true - новые;
        *   false - существующие.

В свойствах сообщения (ключ ``dataUUID``) также передаётся идентификатор данных
по форме.

События комментариев
--------------------

Данные события генерируются для каждого из нижеописанных случаев:

**Комментарии к работе**

*   ``event.comment.work.add`` Добавление нового комментария к работе

*   ``event.comment.work.change`` Изменение комментария к работе

*   ``event.comment.work.delete`` Удаление комментария к работе

.. note:: При добавлении/изменении/удалении комментария к работе, аналогичное
          событие для документов в очередь не добавляется.

**Комментарии к документу**

*   ``event.comment.document.add`` Добавление нового комментария к
    документу

*   ``event.comment.document.change`` Изменение комментария к
    документу

*   ``event.comment.document.delete`` Удаление комментария к
    документу

**Личные комментарии**

*   ``event.comment.personal.add`` Добавление нового личного
    комментария

*   ``event.comment.personal.change`` Изменение личного
    комментария

*   ``event.comment.personal.delete`` Удаление личного
    комментария

**Комментарии к проекту/мероприятию**

*   ``event.comment.action.add`` Добавление нового комментария к
    мероприятию проекта

*   ``event.comment.action.change`` Изменение комментария к
    мероприятию проекта

*   ``event.comment.action.delete`` Удаление комментария к
    мероприятию проекта

Для всех событий типа ``event.comment.*`` передаваемые данные зависят
от типа комментария и выглядят следующим образом:

*   Комментарий к работе:

    *   идентификатор комментария (свойство с ключом ``message text``)
    *   идентификатор автора комментария (свойство с ключом ``userID``)
    *   идентификатор документа (свойство с ключом ``documentID``)
    *   идентификатор работы (свойство с ключом ``actionID``)

*   Комментарий к документу:

    *   идентификатор комментария (свойство с ключом ``message text``)
    *   идентификатор автора комментария (свойство с ключом ``userID``)
    *   идентификатор документа (свойство с ключом ``documentID``)

*   Личный комментарий:

    *   идентификатор комментария (свойство с ключом ``message text``)
    *   идентификатор автора комментария (свойство с ключом ``userID``)
    *   идентификатор документа (свойство с ключом ``documentID``)
    *   идентификатор работы (свойство с ключом ``actionID``)

*   Комментарий к мероприятию:

    *   идентификатор комментария (свойство с ключом ``message text``)
    *   идентификатор автора комментария (свойство с ключом ``userID``)
    *   идентификатор проекта (свойство с ключом ``projectID``)
    *   идентификатор мероприятия (свойство с ключом ``actionID``)

    .. note:: В случае, если объектом события является комментарий к проекту,
              то параметры ``projectID`` и ``actionID`` будут равны.

Генерация произвольных событий
------------------------------

В ARTA Synergy имеется метод API, позволяет генерировать
произвольные события.

URL метода: ``rest/api/events/create``. Тип запроса: ``POST``.

Метод принимает следующие обязательные параметры:

*   ``eventName`` - название события (строка);

*   ``eventMsg`` - произвольный json (строка).

В случае успешного выполнения метода сервер вернет сообщение «Событие
успешно сгенерировано».

*Пример:*

Событие, генерируемое мобильным клиентом по координатам GPS::

    eventName=event.ext.gps&eventMsg={\"lat\":333.333,\"lon\":222.222}
