Групповая операция подписания

В данном разделе описан пример реализации групповой операции Подписание документа.

Ссылка на пример на GitHub: DocumentSignBatchOperation.

Описание файлов проекта

  1. copy-path.js — константы с именем расширения и параметрами сборки (в частности, путь, куда копировать файлы после сборки).

  2. gulpfile.js — конфигурация сборки стилей для Gulp

  3. package.json — файл конфигурации NPM. Содержит определение команд сборки, а также используемые npm-зависимости.

  4. package-lock.json — файл, который автоматически генерируется NPM при выполнении команды npm install. Это служебный файл NPM, он необходим для того, чтобы зависимости всегда устанавливались в одной и той же последовательности.

  5. rollup.config.js — файл конфигурации Rollup, который используется для сборки файлов скриптов в один бандл.

  6. tsconfig.json — файл конфигурации TypeScript

  7. node_modules — служебная папка NPM, которая появляется после выполнения команды npm install. Содержит npm-зависимости проекта, используемые в процессе сборки.

  8. src — исходные файлы расширения

Пример рассчитан на версию Web-клиента 6.1 или выше.

Перечень необходимых инструментов:

Начало работы

  1. Переименуйте расширение. Например, новое имя будет MyWebExtension (замените на уникальное имя своего расширения).

    Для этого:
    • Переименуйте саму папку TemplateWebExtension на MyWebExtension.

    • Откройте файл copy-path.js и замените значение EXTENSION_NAME на MyWebExtension.

    • Проверьте, что путь SITE_ROOT указывает на то место, куда должны копироваться файлы расширения после сборки. Может быть указан только относительный путь (относительно самого файла).

  2. Откройте командную строку в корне проекта, выполнить npm install. В результате появится папка node_modules со всеми необходимыми зависимостями.

  3. В командной строке выполните npm run build.

    После выполнения команды по пути SITE_ROOT (из файла copy-path.js) будут подготовлены файлы и папки, которые необходимо скопировать в папку Site в установке Web-клиента. В частности:

    • Файл скриптов (Content/Modules/MyWebExtension/extension.js).

    • Файл стилей (Content/Modules/MyWebExtension/extension.css).

      Файлы в данной папке подключаются автоматически в алфавитном порядке.

Сборка и установка

  1. Откройте консоль в папке DocumentSignBatchOperationWebExtension и выполните последовательно команды:

    npm install
    npm update
    npm run build:prod
  2. Скопируйте каталог SamplesOutput\Content\Modules\DocumentSignBatchOperationWebExtension в каталог Каталог-установки-Web-клиента\Content\Modules.

  3. Скопируйте файл расширения программы Конструктор Web-разметок из папки DocumentSignBatchOperationDesignerExtension в папку Путь к директории с исполняемым файлом конструктора Web-разметок\Plugins в каталоге Web-клиента.

  4. Перезапустите dvappserver.

Проверка примера

  1. Запустите конструктор разметок.

  2. Импортируйте решение из файла DocumentSignBatchOperation.xml.

  3. Сделайте решение DocumentSignBatchOperation активным для локации Папка. Проверить, что в ЭУ FolderGridBatchOperationsNode разметки присутствует дочерний ЭУ DocumentSignBatchOperation.

  4. Перезапустите dvappserver.

  5. Откройте Справочник сотрудников в Web-клиенте и назначьте пользователю, которым планируется подписание, сертификат по умолчанию.

  6. Авторизуйтесь в Web-клиенте под именем пользователя из предыдущего пункта.

    Убедитесь на любой тестовой карточке документа, что подписание сертификатом из предыдущего пункта проходит корректно.

  7. Откройте папку с документами в представлении Дайджест. Выделите при помощи флагов документы для подписания. На панели групповых операций нажмите кнопку Подписать документ.

  8. При необходимости просмотрите подписываемые документы, нажатием на ссылки карточек в открывшемся окне подтверждения. Нажмите OK.

    В случае успешного подписания всех документов будет выведено сообщение об успешном подписании.

  9. Проверьте на нескольких документах, что подписание прошло корректно.

Чтобы ссылки на карточки отображались корректно в представлении, отличном от Дайджест, требуется настроить свойство Столбцы представления для презентации ЭУ DocumentSignBatchOperation в программе Конструктор Web-разметок. Через запятую укажите columnName столбцов представления, выбранных для отображения.

Если в выбор документов в таблице попадет документ, недоступный для подписания по состоянию или настройкам, появится сообщение об ошибке, документ не будет подписан. Для остальных документов процесс подписания будет продолжен.

Дальнейшая разработка

Новые исходные файлы следует добавлять в папку src. Структура подчинённых в этой папке не имеет значения. Стили и скрипты могут находиться рядом или быть разнесены — это также неважно.

Единственное обязательное условие — файл src/Index.ts должен прямо или косвенно импортировать все остальные файлы расширения. Под косвенным импортированием подразумевается что файл Index.ts импортирует файл A.ts, а файл A.ts в свою очередь импортирует B.ts (в этом случае импортировать B.ts в файле Index.ts не обязательно). Также рекомендуется в файле Index.ts располагать код по регистрации обработчиков событий в глобальной области видимости (в объекте window), регистрации ЭУ через controlFactory, сервисов и т.д. В противном случае в процессе сборки директивы импорта будут проигнорированы как неиспользуемые.

Для редактирования файлов удобно использовать Visual Studio Code 2022. Достаточно открыть саму папку в редакторе, после чего все файлы будут доступны в дереве проекта. Можно также использовать Visual Studio версии 2022 аналогичным образом.

При использовании сущностей Web-клиента можно использовать функцию авто-импорта. Например, мы можем начать писать вызов функции publishAsGlobal, и Visual Studio Code 2022 автоматически предложит добавить импорт во всплывающем меню.

В процессе разработки можно однажды запустить команду (для этого удобно воспользоваться встроенным терминалом VSCode):

npm run watch

Данная команда начнет отслеживание изменений в исходных файлах, и при каждом изменении будет повторно собирать расширение и копировать файлы в SITE_ROOT. В режиме отслеживания сборка осуществляется значительно быстрее.

npm run build

Команда npm run build собирает скрипты в один бандл extension.js без сжатия и с включенным маппингом исходных файлов. То есть, в браузере исходные файлы будут отображаться в том же виде, в каком они есть в папке src, что удобно для отладки. При некорректной работе маппинга, можно отключить в браузере маппинг, и использовать в отладке сам файл extension.js (т.к. он не минифицирован).

В процессе сборки используется rollup и gulp, однако можно использовать любую другую систему сборки (webpack, parcel и т.д.). Единственное требование — необходимо использовать какую-либо систему javascript модулей, поддерживаемую SystemJS (amd, commonjs, system).

Обратите внимание, что файлы модулей устанавливаются в папку Content/Modules/<НазваниеРешения>

Для сборки расширения в режиме production необходимо запустить команду:

npm run build:prod

Единственное её отличие от npm run build в том, что результирующие файлы минифицируются.