Групповая операция подписания
В данном разделе описан пример реализации групповой операции Подписание документа.
Ссылка на пример на GitHub: DocumentSignBatchOperation.
Описание файлов проекта
-
copy-path.js— константы с именем расширения и параметрами сборки (в частности, путь, куда копировать файлы после сборки). -
gulpfile.js— конфигурация сборки стилей для Gulp -
package.json— файл конфигурации NPM. Содержит определение команд сборки, а также используемые npm-зависимости. -
package-lock.json— файл, который автоматически генерируется NPM при выполнении командыnpm install. Это служебный файл NPM, он необходим для того, чтобы зависимости всегда устанавливались в одной и той же последовательности. -
rollup.config.js— файл конфигурации Rollup, который используется для сборки файлов скриптов в один бандл. -
tsconfig.json— файл конфигурации TypeScript -
node_modules— служебная папка NPM, которая появляется после выполнения командыnpm install. Содержит npm-зависимости проекта, используемые в процессе сборки. -
src— исходные файлы расширения
Пример рассчитан на версию Web-клиента dv6 или выше.
-
Microsoft Visual Studio 2022.
Начало работы
-
Переименуйте расширение. Например, новое имя будет
MyWebExtension(замените на уникальное имя своего расширения).Для этого:-
Переименуйте саму папку
TemplateWebExtensionнаMyWebExtension. -
Откройте файл
copy-path.jsи замените значениеEXTENSION_NAMEнаMyWebExtension. -
Проверьте, что путь
SITE_ROOTуказывает на то место, куда должны копироваться файлы расширения после сборки. Может быть указан только относительный путь (относительно самого файла).
-
-
Откройте командную строку в корне проекта, выполнить
npm install. В результате появится папкаnode_modulesсо всеми необходимыми зависимостями. -
В командной строке выполните
npm run build.После выполнения команды по пути
SITE_ROOT(из файлаcopy-path.js) будут подготовлены файлы и папки, которые необходимо скопировать в папкуSiteв установке Web-клиента. В частности:-
Файл скриптов (
Content/Modules/MyWebExtension/extension.js). -
Файл стилей (
Content/Modules/MyWebExtension/extension.css).Файлы в данной папке подключаются автоматически в алфавитном порядке.
-
Сборка и установка
-
Откройте консоль в папке
DocumentSignBatchOperationWebExtensionи выполните последовательно команды:npm install npm update npm run build:prod -
Скопируйте каталог
SamplesOutput\Content\Modules\DocumentSignBatchOperationWebExtensionв каталогКаталог-установки-Web-клиента\Content\Modules. -
Скопируйте файл расширения программы Конструктор Web-разметок из папки
DocumentSignBatchOperationDesignerExtensionв папкуПуть к директории с исполняемым файлом конструктора Web-разметок\Pluginsв каталоге Web-клиента. -
Перезапустите dvappserver.
Проверка примера
-
Запустите конструктор разметок.
-
Импортируйте решение из файла
DocumentSignBatchOperation.xml. -
Сделайте решение
DocumentSignBatchOperationактивным для локации Папка. Проверить, что в ЭУFolderGridBatchOperationsNodeразметки присутствует дочерний ЭУDocumentSignBatchOperation. -
Перезапустите dvappserver.
-
Откройте Справочник сотрудников в Web-клиенте и назначьте пользователю, которым планируется подписание, сертификат по умолчанию.
-
Авторизуйтесь в Web-клиенте под именем пользователя из предыдущего пункта.
Убедитесь на любой тестовой карточке документа, что подписание сертификатом из предыдущего пункта проходит корректно.
-
Откройте папку с документами в представлении Дайджест. Выделите при помощи флагов документы для подписания. На панели групповых операций нажмите кнопку Подписать документ.
-
При необходимости просмотрите подписываемые документы, нажатием на ссылки карточек в открывшемся окне подтверждения. Нажмите OK.
В случае успешного подписания всех документов будет выведено сообщение об успешном подписании.
-
Проверьте на нескольких документах, что подписание прошло корректно.
Чтобы ссылки на карточки отображались корректно в представлении, отличном от Дайджест, требуется настроить свойство Столбцы представления для презентации ЭУ 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 в том, что результирующие файлы минифицируются.