Внутренний обмен - Synerdocs/synerdocs-sdk GitHub Wiki
Обмен документами между подразделениями одной организации можно реализовать двумя способами – используя SendMessage и SendInternalMessage.
При использовании SendMessage можно выделить следующие плюсы:
- Стандартные механизмы и методы
- Возможность отправки в несколько подразделений
- Возможность аннулирования
- Работа с сообщениями
- Используется в большинстве случаев, все нововведения направлены именно на этот метод
При использовании SendInternalMessage можно выделить следующие плюсы:
- Возможность отправить документ конкретному сотруднику
- Пользователи, использующие веб-клиент видят четкое разграничение между внутренними и внешними документами – они отображаются на разных вкладках
Минусы:
- Работа исключительно с документами, а не с сообщениями
- Необходимость использования уникальных методов, что усложнит интеграцию в случае, если требуется работать как с внешним, так и с внутренним документооборотом
- Редко используется абонентами. Развитие данного и сопутствующих методов не входит в ближайшие планы
В рамках внутреннего обмена рассмотрим сценарий с использованием ПЭП, где подразделение-отправитель использует API, а подразделение-получатель работает в веб-клиенте.
SendMessage:
- Для аутентификации в сервисе используем метод Authenticate. Токен полученный в результате аутентификации действует в течение 24 часов. Поэтому можно выбрать два варианта реализации аутентификации:
- Раз в сутки. Например, в начале рабочего дня.
- Каждый раз при подписании документа.
- Для определения подразделения-получателя используем метод GetOrganizationStructure. Здесь также возможно два варианта реализации:
- Сохранять полученные идентификаторы подразделений в своей базе данных. Вызывать GetOrganizationStructure только в случаях, когда получателем выбрано подразделение с неизвестным ИД.
- Вызывать GetOrganizationStructure перед отправкой (если нет возможности сохранять ИД подразделений)
- Перед отправкой документ необходимо подписать, для этого используем CreateSimpleSignature
- Отправка и получение документов и подписей реализовано за счет отправки сообщений, в которые вкладывается контент. Отправка сообщений реализована за счет метода SendMessage.
- Управление списком сообщений и документов в случае использования SendMessage
- Подразделение-получатель, при необходимости, может «ответить» на документ, отправив, например, документ с информацией об установленных расхождениях связав его с первоначальным документом. В этом случае, связь отразится в поле RelatedDocumentIds.
- Для подписания такого документа последовательно вызываем CreateSimpleSignature и SendMessage
- Для отказа в подписании последовательность будет следующей: GenerateAmendmentRequest (генерируем УОУ) - CreateSimpleSignature (подписываем УОУ) - SendMessage (отправляем УОУ)
- Если потребуется аннулировать документ, последовательность действий будет такой: GenerateRevocationOffer (генерируем ПОА) - CreateSimpleSignature (подписываем ПОА) - SendMessage (отправляем ПОА)
- Для аутентификации в сервисе используем метод Authenticate. Токен полученный в результате аутентификации действует в течение 24 часов. Поэтому можно выбрать два варианта реализации аутентификации:
- Раз в сутки. Например, в начале рабочего дня.
- Каждый раз при подписании документа
- Для определения подразделения-получателя используем метод GetOrganizationStructure. Здесь также возможно два варианта реализации:
- Сохранять полученные идентификаторы подразделений в своей базе данных. Вызывать GetOrganizationStructure только в случаях, когда получателем выбрано подразделение с неизвестным ИД.
- Вызывать GetOrganizationStructure перед отправкой (если нет возможности сохранять ИД подразделений)
- Перед отправкой документ необходимо подписать, для этого используем CreateSimpleSignature
- Отправка и получение документов и подписей реализовано за счет отправки сообщений, в которые вкладывается контент. Отправка сообщений внутри одной организации может быть реализована при помощи метода SendInternalMessage.
- При управлении списком сообщений возникают сложности, т.к. метод GetMessages не позволяет получить информацию о сообщениях отправленных с использованием SendInternalMessage. В качестве альтернативы можно использовать GetInternalDocuments, возвращающий перечень документов (не сообщений) и GetDocumentContent для получения контента документов, размер которых превышает 1Мб.
- Подразделение-получатель, при необходимости, может отправить документ с информацией об установленных расхождениях связав его с первоначальным документом. В этом случае, связь отразится в поле RelatedDocumentIds.
- Для подписания такого документа вызываем SignDocumentWithSimpleSignature
- Для отказа в подписании используем RejectSign