Для работы с файлами в ELMA365 доступны три метода. Они позволяют создавать файлы в контексте бизнес-процессов, а также получать ссылку на скачивание существующего файла. Это удобно, например, при настройке интеграции с внешними сервисами, когда необходимо загрузить файл в систему.
1) create() - метод описания поля типа Файл, создает файл в контексте процесса;
2) createFromLink() - метод описания поля типа Файл, создает файл в контексте процесса из ссылки на файл во внешнем источнике;
3) getDownloadUrl() - метод объекта типа Файл, генерирует ссылку для скачивания файла.
Разберем примеры их использования.
create
Предположим, что нам нужно получить файл из внешней системы с помощью HTTP запроса и записать его в контекстную переменную процесса.
Создадим простой бизнес-процесс из двух шагов — задача пользователя и сценарий. В задаче разместим два поля: Название файла (name) с типом Строка и Ссылка на файл (link) с типом Ссылка. В контекст процесса также добавим поле типа Файл, чтобы в него записать полученный файл.
В блоке сценарий используем функцию:
Код:
async function createFile(): Promise {
// Загружаем файл по ссылке
const fileRq = await fetch(`${ Context.data.link }`);
// Преобразуем тело файла в объект с бинарными данными
const buf = await fileRq.arrayBuffer();
// Создаем файл и записываем его в контекстную переменную
Context.data.file = await Context.fields.file.create(`${ Context.data.name }`, buf);
}
Обратите внимание, что в имя файла, передаваемое в метод create, следует включать расширение для корректного скачивания.
Запустим процесс в режиме отладки.
После выполнения задачи и сценария, в контексте процесса появится созданный файл.
createFromLink
Если не требуется дополнительных сложных обработок, с помощью данного метода можно гораздо проще создать файл по ссылке, так как он принимает ссылку в качестве одного из параметров. Таким образом, мы можем переработать код из первого примера, и получить следующую функцию:
Код:
async function createFile(): Promise {
Context.data.file = await Context.fields.file.createFromLink(`${ Context.data.name }`, `${ Context.data.link }`)
}
getDownloadUrl
С помощью этого метода можно получить ссылку для скачивания файла в ELMA365 и, например, отправить ее в стороннюю систему. Рассмотрим пример отправки письма со ссылкой на электронную почту.
В примере будем использовать бизнес-процесс со сценарием и вебхуком:
В контексте процесса создадим переменные Ссылка (link), Электронная почта (email) и Файл (file). Последние две добавим на форму стартового события.
Для блока Сценарий напишем функцию:
Код:
async function downloadUrl(): Promise {
Context.data.link = await Context.data.file!.getDownloadUrl();
}
С помощью вебхука будем передавать адрес электронной почты и ссылку на скачивание файла в стороннюю систему, которая затем сформирует HTML-тело письма и отправит его на указанный адрес.
Таким образом, с помощью данных методов можно как получать файлы из сторонних систем, так и передавать файлы из ELMA365 .