Хранит информацию о подписании элемента приложения. Содержит в себе методы создания файла с телом подписи и атрибутами, а также метод для получения детальной инфомации о подписи.

Type parameters

Hierarchy

Properties

Readonly code

code: string

Код приложения цели ссылки (код приложения).

Readonly data

data: Based<Partial<EntitySign>>

Значения полей объекта.

Readonly fields

fields: Readonly<object>

Описание полей объекта.

Readonly id

id: string

Идентификатор цели ссылки.

Readonly namespace

namespace: string

Пространство имен цели ссылки (код раздела приложения).

Methods

createAttributesFile

  • createAttributesFile(): Promise<FileItem | undefined>
  • Метод создает файл из подписанных атрибутов элемента приложения.

    Возвращает значения атрибутов, которые были подписаны, в виде файла.

    В примере выполняется извлечение всех подписей атрибутов у элемента приложения:

    // Идентификатор подписи хранится в контексте
    const signId = Context.data.signId;
    if (!signId) {
        throw new Error('Идентификатор подписи не найден');
    }
    // Поиск подписи по идентификатору
    const sign = await System.signs.entitySigns.search().where(q => q.__id.eq(signId)).first();
    if(!sign) {
        throw new Error('Подпись не найдена');
    }
    // Запрос на получение файлов подписей
    const awaitSigns = sign.signs.map(signData => signData.createAttributesFile());
    // Ожидание завершения запросов
    Context.data.signFiles = await Promise.all(awaitSigns);
    

    Returns Promise<FileItem | undefined>

    Файл с атрибутами элемента приложения, которые были подписаны.

createSignFile

  • Метод генерирует файл с подписью.

    Возвращает файл с содержимым подписи. Используется для получения тела подписи в виде файла.

    В примере выполняется извлечение всех подписей файлов у элемента приложения:

    // Идентификатор подписи хранится в контексте
    const signId = Context.data.signId;
    if (!signId) {
        throw new Error('Идентификатор подписи не найден');
    }
    // Поиск подписи по идентификатору
    const sign = await System.signs.entitySigns.search().where(q => q.__id.eq(signId)).first();
    if(!sign) {
        throw new Error('Подпись не найдена');
    }
    // Запрос на получение файлов подписей
    const awaitSigns = sign.signs.map(signData => signData.createSignFile());
    // Ожидание завершения запросов
    Context.data.signFiles = await Promise.all(awaitSigns);
    

    Returns Promise<FileItem>

    Файл с подписью.

fetch

getDetails

  • Метод получает детальную информацию о подписи.

    Возвращает подробную информацию о подписи и публичном ключе, с помощью которого она вычислена. Из публичного ключа извлекаются атрибуты выдавшего и получившего сертификат, а также даты действия, название и номер публичного ключа. Атрибуты именуются в соответствии с RFC 2253, однако атрибуты, не входящие в список стандартных CertNames, не кодируются в формат hex.

    В примере извлекается детальная информация о подписи для сохранения серийного номера сертификата в контекст процесса:

    // Идентификатор подписи хранится в контексте
    const signId = Context.data.signId;
    if (!signId) {
        throw new Error('Идентификатор подписи не найден');
    }
    // Поиск подписи по идентификатору
    const sign = await System.signs.entitySigns.search().where(q => q.__id.eq(signId)).first();
    if(!sign) {
        throw new Error('Подпись не найдена');
    }
    // Извлечение последней подписи из истории
    const lastSign = sign.signs[0];
    if (!lastSign) {
        throw new Error('Необходима подпись для извлечения детальной информации');
    }
    // Извлечение деталей подписи
    const signDetails = await lastSign.getDetails();
    // Сохранение серийного номера сертификата в контекст
    Context.data.certificateId = signDetails.certSerialNumber;
    

    Returns Promise<SignDetails>

    Детальная информация о подписи.

normalize

  • normalize(): void
  • Удаление дублирующихся данных в массивах.

    Выполнить удаление дубликатов в полях, в которых хранятся массивы ссылок на объекты системы (пользователи, файлы, элементы приложений, документы).

    Этот метод, например, можно вызвать после массового изменения данных в объекте.

    const app1 = await Context.data.app1.fetch();
    const app2 = await Context.data.app2.fetch();
    
    app1.data.executors.push(app2.data.executors);
    app1.normalize();
    
    // Далее перебираем элементы нового массива
    app1.data.executors.forEach( ... );
    

    Returns void

setComment

  • setComment(comment: string): Promise<void>
  • Метод добавляет комментарий к подписи.

    После подписания элемента с помощью внешнего провайдера можно сохранить результат операции как черновик подписи. Комментарий добавляется в виде строки.

    В примере комментарий сохраняется в черновик после подписания у внешнего провайдера:

    // Извлечение идентификатора подписи для черновика
    const draftSignId = Context.data.draftSignId;
    if (!draftSignId) {
        throw new Error('Необходим идентификатор подписи');
    }
    // Поиск подписи по идентификатору
    const entitySign = await System.signs.entitySigns.search().where(f => f.__id.eq(draftSignId)).first();
    // Загрузка содержимого в черновик подписи
    let comment = "some comment";
    await entitySign.setComment(comment);
    

    Parameters

    • comment: string

    Returns Promise<void>

setStatus

  • Метод позволяет установить статус заявки подписи элемента приложения.

    С помощью данного метода можно сменить статус заявки. В метод передается новый статус.

    const entitySign = await System.signs.entitySigns.search().where(f => f.__id.eq('<some id>')).first();
    // `getEntitySignStatus` — внутренняя функция для получения статуса, который необходимо установить
    // для заявки подписи элемента приложения
    const status = getEntitySignStatus();
    await entitySign.setStatus(status);
    

    Parameters

    Returns Promise<void>

uploadSign

  • uploadSign(sign: ArrayBuffer): Promise<void>
  • Метод загружает содержимое подписи.

    После подписания элемента с помощью внешнего провайдера можно сохранить результат операции как черновик подписи. Подпись загружается в виде файла, полученного в результате подписания.

    В примере подпись сохраняется в черновик после подписания у внешнего провайдера:

    // Извлечение идентификатора подписи для черновика
    const draftSignId = Context.data.draftSignId;
    if (!draftSignId) {
        throw new Error('Необходим идентификатор подписи');
    }
    // Поиск подписи по идентификатору
    const entitySign = await System.signs.entitySigns.search().where(f => f.__id.eq(draftSignId)).first();
    // Извлечение подписи, полученной через внешнего провайдера, функция `getSignContentFromExternalProvider` вызывается для примера
    const sign = await getSignContentFromExternalProvider();
    // Загрузка содержимого в черновик подписи
    await entitySign.uploadSign(sign);
    

    Parameters

    • sign: ArrayBuffer

    Returns Promise<void>