Запуск синхронизации
В карточке записи справочника Виды межсистемных процессов укажите тип процесса «Синхронизация документа» и тип карточки синхронизируемых документов. Запись справочника Виды межсистемных процессов должна быть действующей.
Когда пользователь изменяет карточку документа, подписывает, создает или удаляет версию, в событиях типа карточки документа формируются данные для экспорта. Вычисления в событиях синхронизируемого типа карточки запускают синхронизацию документа.
На основе данных справочника Настройки систем-получателей для межсистемных процессов функции вычисляют список систем-получателей.
Для отправки сообщения запускается серверное событие DCIOnDataSynchronization. Если сообщение отправляется в несколько систем, то для каждой системы-получателя запускается отдельное серверное событие.
В параметрах серверного события передается имя вида межсистемного процесса, получатель, глобальный ИД измененного или удаленного документа, имя сообщения и дополнительные параметры. Например, в дополнительных параметрах можно передать дату и номер документа, его автора.
Отправка сообщения
Серверное событие DCIOnDataSynchronization отправляет сообщение, используя обработчик DCIDataSynchronizationHandler.
Порядок отправки сообщения:
1. | Осуществляется поиск незавершенного межсистемного процесса для синхронизируемого документа. Глобальный ИД документа передается в параметр ObjectGlobalId серверного события. Если процесс найден, то сообщение отправляется в рамках найденного процесса. Если не найден, то создается новый процесс. |
2. | Если найден незавершенный процесс, то в рамках него осуществляется поиск последнего отправленного сообщения. Если сообщение найдено и находится состояние Ошибка, то новому сообщению присваивается глобальный ИД найденного сообщения. |
3. | На время отправки сообщения процесс блокируется. |
4. | Отправляется сообщение системе-получателю с помощью функции DCIInternalSendProcessMessage: |
• | создается объект сообщения IProcessMessage, и заполняются необходимые свойства; |
• | сообщение отправляется в адаптер к Directum: |
a) | Выполняется обработчик отправки сообщения. |
b) | Сообщение сохраняется, его состояние меняется на Отправлено. |
Примечание
В режиме отладки обработчик отправки сообщения не выполняется, а статус сообщения меняется на Отладка.
5. | Процесс разблокируется для дальнейшей отправки или приема сообщений. |
Получение сообщения
После обработки входящего сообщения адаптером к Directum в системе-получателе запускается серверное событие DCIOnReceiveProcessMessage. Оно использует обработчик DCIReceiveProcessMessageHandler. В параметрах обработчика передается глобальный ИД сообщения.
Порядок получения сообщения:
1. | Осуществляется поиск сообщения по глобальному ИД. |
2. | По сообщению определяется межсистемный процесс. |
3. | На время приема сообщения процесс блокируется. |
4. | Принимается входящее сообщение: выполняется обработчик сообщения, состояние сообщения меняется на Принято. |
Если при выполнении обработчика приема сообщения возникает ошибка, то статус сообщения меняется на Ошибка. Текст ошибки записывается в поле Примечание.
Примечание
В режиме отладки обработчик приема сообщения не выполняется, а статус сообщения меняется на Отладка.
5. | Процесс разблокируется для дальнейшей отправки или приема сообщений. |
После того, как сообщение успешно принято, оно становится подтвержденным:
• | в карточке сообщения заполняется поле Дата подтверждения; |
• | состояние сообщения меняется на Подтверждено. |
© Компания Directum, 2020 | Сообщество пользователей Directum |