global
- Интеграции Adobe Acrobat Sign
- Новые возможности
- Версии и жизненный цикл продуктов
- Acrobat Sign для Salesforce
- Установка пакета
- Настройка пакета
- Руководство пользователя
- Включение аутентификации по цифровому удостоверению
- Руководство разработчика
- Руководство по расширенной настройке
- Руководство по сопоставлению и шаблонам полей
- Руководство пользователя мобильного приложения
- Руководство по автоматизации потоков
- Руководство для Document Builder
- Настройка больших документов
- Руководство по обновлению
- Заметки о выпуске
- Часто задаваемые вопросы
- Руководство по устранению неполадок
- Дополнительные статьи
- Acrobat Sign для Microsoft
- Acrobat Sign для Microsoft 365
- Acrobat Sign для Outlook
- Acrobat Sign для Word/PowerPoint
- Acrobat Sign для Teams
- Acrobat Sign для Microsoft PowerApps и Power Automate
- Соединитель Acrobat Sign для Microsoft Search
- Acrobat Sign для Microsoft Dynamics
- Acrobat Sign для Microsoft SharePoint
- Обзор
- SharePoint On-Prem: Руководство по установке
- SharePoint On-Prem: Руководство по сопоставлению шаблонов
- SharePoint On-Prem: Руководство пользователя
- SharePoint On-Prem: Заметки о выпуске
- SharePoint Online: Руководство по установке
- SharePoint Online: Руководство по сопоставлению шаблонов
- SharePoint Online: Руководство пользователя
- SharePoint Online: Руководство по сопоставлению веб-форм
- SharePoint Online: Заметки о выпуске
- Acrobat Sign для Microsoft 365
- Acrobat Sign для ServiceNow
- Acrobat Sign для HR ServiceNow
- Acrobat Sign для SAP SuccessFactors
- Acrobat Sign для Workday
- Acrobat Sign для NetSuite
- Acrobat Sign для SugarCRM
- Acrobat Sign для VeevaVault
- Acrobat Sign для Coupa BSM Suite
- Acrobat Sign для Zapier
- Документация для разработчиков Acrobat Sign
Обзор
Adobe Acrobat Sign for Salesforce: Руководство для разработчиков призвано помочь разработчикам Salesforce узнать об объектах и параметрах, необходимых для интеграции вашего пакета Salesforce с Adobe Acrobat Sign.
Объекты Adobe Acrobat Sign for Salesforce могут измениться в будущем выпуске. Если вы создаете пользовательское решение, которое зависит от измененных объектов, вам может потребоваться обновить вашу настройку.
Рекомендации по интеграции
- Если вам нужно знать, когда соглашение полностью подписано, реализуйте триггер Apex на объекте echosign_dev1__SIGN_Agreement__c, после или до обновления (в зависимости от сценария использования и требований). Когда поле echosign_dev1__Status__c изменится на Подписано или Утверждено или другие окончательные статусы, соглашение будет завершено.
- Если вам нужно знать, когда каждый отдельный подписанный PDF вставлен, например, если вам нужно получить каждый промежуточный подписанный PDF, то реализуйте Apex триггер на объектах Attachment или ContentVersion, после вставки, и следите за родительским соглашением и именем, которое заканчивается на «- signed.pdf» или «- approved.pdf» или другим окончательным статусом.
- Если вам нужно знать, когда отдельный получатель подписал или одобрил, реализуйте триггер Apex на объекте echosign_dev1__SIGN_Recipients__c, после или до обновления (в зависимости от сценария использования и требований). Когда поле echosign_dev1__Status__c изменит статус Подписано или Утверждено или другие окончательные статусы, получатель будет завершен.
- Если вам нужно знать, когда происходит определенное событие, которое является частью процесса подписания, например, договор отправлен на подпись или отправлено напоминание, можно создать триггер на объекте событий договора (echosign_dev1__SIGN_AgreementEvent__c) и проверить тип события.
- Имена окончательного статуса соглашения для завершенного соглашения следующие: «Подписано», «Одобрено», «Принято», «Форма заполнена» и «Доставлено».
- Имена статусов окончательного соглашения для расторгнутого соглашения следующие: «Отменено/отказано», «Отменено/отказано», «Истекло».
Порядок обновлений
В версии 21 порядок обновлений изменился. Ниже приведена последовательность обновления соглашения и связанных с ним объектов:
- Вложения
- Получатели
- Документ (состояние и другие атрибуты)
- События соглашения
- Каналы Chatter
Службы Apex
Используемый метод Apex
Начиная с Acrobat Sign for Salesforce V 21.0, все асинхронные процессы (к которым относятся автоматические обновления и сопоставление данных) были переведены с будущих методов на метод очереди, рекомендованный Salesforce.
С этим изменением все настройки в организации подписчика, которые добавляют задания в очередь Salesforce как часть процесса автоматического обновления или сопоставления данных, будут завершаться с ошибкой «System.LimitException: Слишком много заданий, добавленных в очередь: 2».
Сбой происходит потому, что процесс с возможностью постановки в очередь может добавить только одно дочернее задание с возможностью постановки в очередь, которое уже занято Acrobat Sign. Подробности см. в разделе Лимиты очередей Apex.
Ошибка: «При цепочке заданий можно добавить только одно задание из выполняющегося задания с помощью System.enqueueJob, что означает, что для каждого родительского задания с возможностью постановки в очередь может существовать только одно дочернее задание. Запуск нескольких дочерних заданий из одного и того же задания с очередью не поддерживается».
Вышеуказанная ошибка возникает, когда статус соглашения не изменяется или отображение данных выполняется неправильно. Чтобы устранить эту ошибку, найдите ошибочный триггер, построитель процесса или рабочий процесс и деактивируйте его или переключите его на использование синхронного вызова или запланируйте его на более позднее время.
Служба шаблона соглашения
Служба шаблона соглашения отображается как глобальная служба Apex в управляемом пакете. Это позволяет коду Apex за пределами управляемого пакета загружать соглашения на основе существующих шаблонов соглашений. Класс и все открытые методы помечены как глобальные, чтобы разрешить такой доступ.
Служба Apex доступна через следующий класс вызова: echosign_dev1.AgreementTemplateService
Загрузка шаблона соглашения с помощью шаблонов библиотеки e-Sign в настоящее время не поддерживается. Мы предлагаем перенести шаблоны документов в библиотеку документов Salesforce.
Методы
|
static Id load() |
Загружает соглашение с использованием шаблона соглашения, помеченного как шаблон по умолчанию и не имеющего типа основного объекта. |
global |
static Id load(String templateId) |
Загружает соглашение, используя указанный идентификатор шаблона соглашения, который не имеет типа основного объекта.
|
global |
static Id load(String templateId, String masterId) |
Загружает соглашение, используя указанный идентификатор шаблона соглашения и указанный идентификатор основной записи, тип которой должен соответствовать типу основного объекта, настроенного в указанном шаблоне соглашения. |
global |
static Id load(String templateId, String masterId, Map<String,AgreementTemplateVariable> agreementTemplateVariables) |
Загружает соглашение, используя указанный идентификатор шаблона соглашения и указанный идентификатор основной записи, тип которой должен соответствовать типу основного объекта, настроенного в указанном шаблоне соглашения. Также передает указанные переменные времени выполнения в виде пар имя-значение.
|
global |
static List<AgreementTemplateService.AgreementTemplateBasicInfo> getAgreementTemplateList(AgreementTemplateListOptions options) |
Получает список шаблонов соглашений на основе параметров фильтрации. Возвращает пустой список, если не найдено ни одного шаблона соглашения с заданными параметрами фильтрации. |
global |
static AgreementTemplateService.AgreementTemplateDetails getAgreementTemplateDetails(String templateId) |
Получает сведения о шаблоне соглашения для указанного идентификатора шаблона соглашения. Возвращает пустой объект, если шаблон соглашения не найден. |
global |
static String getAgreementTemplateUrl(String templateId) |
Получает url для редактирования шаблона соглашения, заданный идентификатором шаблона соглашения. |
global |
static String getNewAgreementTemplateUrl() |
Получает url для создания нового шаблона соглашения в Adobe Sign. |
Конструкторы (1)
Доступ |
Подпись |
---|---|
global |
AgreementTemplateListOptions() |
global |
AgreementTemplateListOptions(String masterObjectType, Boolean isActive, Boolean hasAttachment, Boolean hasRecipient, Boolean autoSend) |
global class AgreementTemplateService.AgreementTemplateListOptions
Properties (5)
Доступ |
Имя |
---|---|
global |
masterObjectType |
global |
isActive |
global |
hasAttachment |
global |
hasRecipient |
global |
autoSend |
При запросе шаблонов договоров, если поле, указанное выше, имеет нулевое значение, фильтр по соответствующему полю не применяется.
global class AgreementTemplateService.AgreementTemplateBasicInfo
Properties (6)
Доступ |
Имя |
---|---|
global |
name |
global |
recordId |
global |
url |
global |
isDefault |
global |
daysUntilExpiration |
global |
language |
global class AgreementTemplateService.AgreementTemplateDetails
Properties (6)
Доступ |
Имя |
---|---|
global |
message |
global |
ccList |
global |
dataMappingName |
global |
mergeMappingName |
global |
url |
global |
получатели |
global class AgreementTemplateService.RecipientInfo
Properties (4)
Доступ |
Имя |
---|---|
global |
recipientRole |
global |
recipientType |
global |
recipientName |
global |
signOrder |
Переменные среды выполнения
Глобальный класс echosign_dev1.AgreementTemplateVariable имеет два глобальных поля.
- name : Имя переменной, которое должно совпадать с именем переменной времени выполнения, настроенной в шаблоне соглашения.
- value : Значение переменной, которое будет использоваться во время загрузки шаблона. Значение зависит от того, где была использована переменная. Например, для получателя это должен быть идентификатор записи контакта, лида или пользователя или адрес электронной почты. Для переменной документа это должен быть идентификатор записи вложения.
Результат
Каждый метод либо возвращает ID вновь созданной записи соглашения, либо выбрасывает исключение с подробным сообщением об ошибке, если что-то пошло не так во время операции загрузки.
Служба API
Служба шаблона Adobe e-Sign API раскрывается как глобальная служба Apex управляемого пакета. Это позволяет коду Apex за пределами управляемого пакета вызывать набор API Adobe e-Sign через эти обертки. Обертки значительно упрощают вызов API, поскольку потребителям не нужно создавать модель данных запроса и ответа. Также потребителям не нужно обрабатывать преобразование данных Salesforce в модели данных e-Sign. Большая часть сложности абстрагируется от потребителя. Например, для отправки соглашения потребитель просто передает идентификатор записи соглашения, а сервис обрабатывает запрос, извлекает все необходимые данные, передает их по API и анализирует результат.
Класс и все открытые методы помечены как глобальные, чтобы разрешить такой доступ.
- v17 и ниже вызывает SOAP API
- v18 и выше использует REST API.
Служба Apex доступна через следующий класс вызова: echosign_dev1.EchoSignApiService
Методы
global |
static void cancelDocument(Id agreementId) |
Отменяет соглашение с указанным идентификатором соглашения. |
global |
static void delegateSigner(Id agreementId, String delegatedEmail) |
Делегирует подписание на указанный адрес электронной почты. |
global |
static void delegateSigner(Id agreementId, String delegatedEmail, String message) |
Делегирует подписание на указанный email с указанным сообщением. |
global |
static echosign_dev1.EchoSignApiService.DocumentInfo getDocumentInfo(Id agreementId) |
Получает подробную информацию для указанного идентификатора соглашения. |
global |
static List<EchoSignApiService.SigningUrl> getSigningUrls(Id agreementId) |
Получает все URL-адреса подписания для указанного идентификатора соглашения. |
global |
static void removeDocument(Id agreementId) |
Отменяет соглашение с указанным идентификатором соглашения и удаляет запись соглашения в Salesforce (соглашение не удаляется из учетной записи Adobe e-Sign). |
global |
static void replaceSigner(Id replacementRecipientId) |
Заменяет указанного подписанта. |
global |
static void replaceSigner(Id replacementRecipientId, String message) |
Заменяет указанного подписанта на указанное сообщение. |
global |
static echosign_dev1.EchoSignApiService. SendDocumentResult sendDocument(Id agreementId) |
Отправляет соглашение с указанным идентификатором соглашения, возвращает результат с ключом документа и URL. |
global |
static void sendReminder(Id agreementId) |
Отправляет напоминание текущему подписанту для указанного идентификатора соглашения. |
global | static void updateAgreement(Id agreementId) | Обновляет соглашение с указанным идентификатором agreementId |
global | static EchoSignApiService.AgreementViewUrl getViewAgreementUrl(Id agreementId) |
Извлекает страницу просмотра/управления из Sign для указанного ID соглашения, которое имеет свойство viewURL. Примечание: В целях безопасности сгенерированный URL-адрес соглашения имеет только временное время жизни, поэтому генерируется вызов REST-HTTPS для получения свежего URL-адреса от службы Adobe Sign. |
Внутренние классы
global class DocumentHistoryEvent
Свойства (2)
Доступ |
Имя |
---|---|
global |
String eventType |
global |
String participantEmail |
Конструкторы (1)
Доступ |
Подпись |
---|---|
global |
DocumentHistoryEvent() |
global class DocumentInfo
Свойства (5)
Доступ |
Имя |
---|---|
global |
Map<string,list> historyByEmail |
global |
Map participantsByEmail |
global |
Map participantsByName |
global |
String senderEmail |
global |
String status |
Конструкторы (1)
Доступ |
Подпись |
---|---|
global |
DocumentInfo() |
global class ParticipantInfo
Свойства (5)
Доступ |
Имя |
---|---|
global |
String company |
global |
String email |
global |
String name |
global |
String status |
global |
String title |
Конструкторы (1)
Доступ |
Подпись |
---|---|
global |
ParticipantInfo() |
global class SendDocumentResult
Свойства (3)
Доступ |
Имя |
---|---|
global |
String documentKey |
global |
Exception error |
global |
String url |
Конструкторы (1)
Доступ |
Подпись |
---|---|
global |
SendDocumentResult() |
global class SigningUrl
Свойства (3)
Доступ |
Имя |
---|---|
global |
String email |
global |
String esignUrl |
global |
String simpleEsignUrl |
Конструкторы (1)
Доступ |
Подпись |
---|---|
Global |
|
Службы пакетной обработки Apex
Представляет основные действия с соглашениями e-Sign на массовом уровне, позволяя выполнить операцию над набором соглашений. Этот класс реализует интерфейс Salesforce Database.Batchable. Он может обрабатывать любое количество записей, которые будут разбиты на наборы по 5 и обрабатывать каждый набор как отдельную транзакцию, что позволяет соблюдать ограничения губернатора.
Служба пакетной обработки Apex доступна через следующий класс вызова: echosign_dev1.EchoSignActionBatch
Параметры
Для инициализации пакетной операции необходимо указать следующие параметры.
Список идентификаторов записей соглашения, для которых необходимо выполнить указанное действие. Действие, которое необходимо выполнить, одно из следующих поддерживаемых значений:
- Напомнить
- Отправить
- Отменить
- Удалить
- Обновить
Идентификатор сеанса текущего пользователя. Требуется только для типа действия обновления.
Запись пользователя отправителя, используемая для уведомления этого пользователя по электронной почте после завершения массовой обработки.
Пример использования
User submitterUser = UserInfo.getUserId();
EchoSignActionBatch batch = new EchoSignActionBatch( agreementIds, 'Remind', UserInfo.getSessionId(), submitterUser); syncProcessId = Database.executeBatch(batch, 5);
Пакет шаблонов соглашения
Принимает SOQL-запрос и идентификатор записи шаблона соглашения. Запрос выполняется для получения набора записей основных объектов, каждая из которых затем проходит через предоставленный шаблон соглашения для создания записи соглашения. Этот класс реализует интерфейс Salesforce Database.Batchable. Он может обрабатывать любое количество записей, которые будут разбиты на наборы по 5 и обрабатывать каждый набор как отдельную транзакцию, что позволяет соблюдать ограничения губернатора.
Типы записей, возвращаемые запросом SOQL, должны соответствовать типу основного объекта шаблона соглашения. Для каждой записи вызывается служба шаблона соглашения.
Служба пакетной обработки Apex отображается через следующий класс вызова:
echosign_dev1.AgreementTemplateBatch
Параметры
Для инициализации пакетной операции необходимо указать следующие параметры.
SOQL-запрос для выполнения, должен содержать ID записи в качестве выбранного поля. Любое другое поле является необязательным.
Идентификатор записи шаблона соглашения, который будет использоваться вместе с идентификатором основной записи для загрузки соглашения.
Пример использования
String agreementTemplateId = [SELECT Id from echosign_dev1__Agreement_Template__c where Name = 'Default Template']; String soqlQuery = 'SELECT Id from Contact where Account.IsActive = true';
AgreementTemplateBatch batch = new AgreementTemplateBatch(soqlQuery, agreementTemplateId); syncProcessId = Database.executeBatch(batch, 5);
Пакетная служба шаблонов соглашений
Принимает список идентификаторов записей основных объектов и тип основного объекта, которые затем запрашиваются, и каждый из них затем прогоняется через предоставленный шаблон соглашения для создания записи соглашения. Этот класс реализует интерфейс Salesforce Database.Batchable. Он может обрабатывать любое количество записей, которые будут разбиты на наборы по 5 и обрабатывать каждый набор как отдельную транзакцию, что позволяет соблюдать ограничения губернатора.
Предоставленный тип основного объекта должен соответствовать предоставленному типу основного объекта шаблона соглашения. Для каждой записи вызывается служба шаблона соглашения.
Служба пакетной обработки Apex отображается через следующий класс вызова:
echosign_dev1.AgreementTemplateServiceBatch
Параметры
Для инициализации пакетной операции необходимо указать следующие параметры.
- Список идентификаторов основных записей.
- Идентификатор записи шаблона соглашения, который будет использоваться вместе с основными записями для загрузки соглашения.
- Имя основного объекта для запроса основных записей.
Пример использования
String agreementTemplateId = [SELECT Id from echosign_dev1__Agreement_Template__c where Name = 'Default Template'];
AgreementTemplateBatch batch = new AgreementTemplateServiceBatch(new List<Id>{'01p50000000HoMB'}, agreementTemplateId, 'Contact');
syncProcessId = Database.executeBatch(batch, 5);
Службы REST
Служба шаблона соглашения
Служба шаблонов соглашений отображается как веб-служба Salesforce REST в управляемом пакете. Это позволяет внешним системам за пределами Salesforce org загружать соглашения на основе существующих шаблонов соглашений. Обратитесь к статье Создание REST API с помощью Apex REST для получения более подробной информации о том, как получить доступ и вызвать пользовательские REST Apex сервисы из Salesforce. При вызове необходимо предоставить действительный идентификатор сеанса для аутентификации и авторизации.
Веб-служба открывается по следующему URL-адресу:
https://<instance_name>.salesforce.com/services/apexrest/echosign_dev1/template/load/<template_id>?masterId=<master_id>&varName1=var Value1&varName2=varValue2
- Имя экземпляра зависит от вашего экземпляра org.
- https://_<instance_name>_.salesforce.com/services/apexrest/echosign_dev1/template/load/<template_id> is a POST HTTP method for package versions 20.0 and later.
- В версиях до v20 используется метод GET.
ID шаблона
Последняя часть URL — это ID записи шаблона соглашения в текущей организации Salesforce, которая должна использоваться для загрузки соглашения. Эта часть URL является необязательной. Если она опущена, будет загружен шаблон соглашения, отмеченный как шаблон по умолчанию. Если идентификатор шаблона опущен и не существует идентификатора шаблона соглашения по умолчанию, будет выдана ошибка.
Идентификатор шаблона может быть в формате 15 или 18 символов.
Идентификатор основной записи
Параметр masterId указывает, какая основная запись должна использоваться для загрузки соглашения из конкретного шаблона соглашения. Этот параметр является необязательным, но должен быть указан для любого шаблона соглашения, который определяет тип мастер-объекта и ссылается на этот мастер-объект в шаблоне.
Идентификатор основной записи может быть в формате 15 или 18 символов.
Переменные среды выполнения
Любые дополнительные параметры используются как переменные времени выполнения, как пары имя-значение, используемые для заполнения любых переменных времени выполнения, указанных в шаблоне соглашения.
Результат
Веб-служба REST возвращает объект LoadResult, который содержит следующие поля:
- agreementId : Если операция загрузки соглашения прошла успешно, это поле содержит идентификатор вновь созданной записи соглашения.
- error : Если во время загрузки соглашения произошла какая-либо ошибка, это поле будет содержать подробное сообщение об ошибке.
Фоновая служба
Возможность фонового обслуживания позволяет потребителям пакета вызывать различные действия над объектом соглашения путем обновления поля Background Action (echosign_dev1 Background_Actions c) до соответствующего значения. Как только значение поля изменяется с пустого значения или другого значения на одно из следующих значений, действие запускается от триггера, который является частью управляемого пакета e-Sign.
- Напомнить
- Отправить
- Отменить
- Удалить
- Обновить
Все действия выполняются в асинхронном режиме будущего, поэтому статус будет сохранен в поле Ошибка в соглашении.
Изменения обратной совместимости
- Состояние соглашения теперь обновляется после обновления документа и получателей.
- До версии 21 состояние обновлялось заранее.
- Объект подписанного документа (в нем сохранены URL-адреса изображений) теперь не вставляется.
- До версии 21 он вставлялся после завершения всех остальных обновлений.
- Максимальный размер запроса или ответа выноски ограничен до 12 МБ для асинхронного Apex в пределах возможностей руководителя Salesforce: https://developer.salesforce.com/docs/atlas.ru-ru.210.0.apexcode.meta/apexcode/apex_gov_limits.htm
- Документы размером более 12 МБ невозможно получить из Sign из-за указанного выше ограничения.
- Описания события документа изменены. Теперь оно совпадает с описанием, возвращенным Sign API, и содержит отчеты об аудите.
- Процесс обновления теперь выполняется как встроенный пакетный процесс Apex (асинхронный процесс) в приложении Salesforce.
- Ранее обновление выполнялось с помощью API-вызовов за пределами Salesforce.
- Триггеры этих обновлений состояния, которые запускают асинхронные процессы, теперь не выполняются, поскольку Salesforce ограничивает вызов другого асинхронного процесса из уже запущенного асинхронного процесса.
- До версии 21 обновления атрибутов документа разделялись на несколько вызовов; теперь объект документа обновляется одной операцией.
- До версии 21 документы со сбоями повторно запускались только путем обновления вручную в приложении Salesforce.
- Теперь обновления стали более надежными, так как внутренний сервер Sign повторяет попытку запуска событий со сбоями указанное число раз.
- Обновление, запускаемое вручную, теперь включает все аспекты документов, включая связанные объекты.
- Передача документов теперь запускается в асинхронном режиме (так же, как регулярные обновления); при этом аналогично регулярным обновлениям дополнительные атрибуты обновляются.
- Реализованы новые параметры, которые позволяют включить и отключить обновление различных аспектов документа.
- После сохранения подписанного документа в Salesforce в конце имени файла PDF больше не будет добавляться дескриптор (-подписано или -утверждено).