ADN Open CIS
Сообщество программистов Autodesk в СНГ

31/07/2019

Руководство по Design Automation для 3Ds Max: 5. Загрузка результатов выполнения задачи

Содержание

1. Авторизация

2. Создание Activity

3. Подготовка хранилища в облаке

4. Запуск workitem

5. Загрузка результатов выполнения задачи

Краткое описание

После запуска созданного workitem-а необходимо дождаться его выполнения, после чего можно будет скачать результаты.

Результатом выполнения данной части руководства будет скачанный на Ваш компьютер zip-архив с результатами задачи, выполненной сервисом Design Automation, а так же у Вас будет доступ к файлу отчёта, содержащего в том числе всё, что было выведено в консоль приложением 3dsmaxbatch.exe

Используемые API

1. Проверка статуса workitem-а. Базовый URL - https://developer.api.autodesk.com/da/us-east/v3, URL конечной точки - /workitems/:id, метод GET. Подробное описание доступно здесь.

2. Загрузка объекта из OSS. Базовый URL - https://developer.api.autodesk.com/oss/v2, URL конечной точки - /buckets/:bucketKey/objects/:objectName, метод GET. Подробное описание доступно здесь.

Шаг 1. Ожидаем выполнения workitem

Время выполнения workitem зависит, в основном от того, что требуется запустить в его рамках. Однако, оно так же зависит от текущей загрузки сервиса Design Automation. В этом руководстве мы будем ожидать выполнения workitem путем запроса его статуса, хотя лучше использовать параметр onComplete при запуске workitem. В этот параметр передается url, который будет запрошен сервисом Design Automation при завершении выполнения запущенной задачи. onComplete не нужно задавать при создании activity, достаточно передать его при запуске workitem.

Мы будем периодически отправлять запрос для проверки статуса workitem пока в ответе значение status отличается от pending или inprogress. Если задача workitem была выполнена успешно, то в конце концов мы получим статус success. В противном случае, будет возвращен один из множества статусов, сигнализирующих о том, что при выполнении workitem возникли проблемы. В этом случае Вы сможете скачать текстовый файл с отчетом о выполнении  задачи по ссылке, предоставленной в параметре reportUrl ответа сервера. Тогда Вы сможете проанализировать причины возникновения проблем и исправить их. Запрос проверки статуса workitem:

Код - HTML: [Выделить]
  1. curl -i -X GET  https://developer.api.autodesk.com/da/us-east/v3/workitems/YOUR_WORKITEM_ID  -H 'Authorization: Bearer YOUR_ACCESS_TOKEN'  -H 'Content-Type: application/json'  -H 'cache-control: no-cache'

Примечание: замените YOUR_WORKITEM_ID в URL запроса полученным при запуске workitem-а идентификатором.

Пример ответа сервера:

Код - JavaScript: [Выделить]
  1. {
  2.     "status": "success",
  3.     "reportUrl": "Some temporary url to download your report file",
  4.     "stats": {
  5.         "timeQueued": "2019-06-19T19:29:19.2116634Z",
  6.         "timeDownloadStarted": "2019-06-19T19:29:19.8867532Z",
  7.         "timeInstructionsStarted": "2019-06-19T19:29:20.1055176Z",
  8.         "timeInstructionsEnded": "2019-06-19T19:29:42.4372923Z",
  9.         "timeUploadEnded": "2019-06-19T19:29:42.7341647Z",
  10.         "timeFinished": "2019-06-19T19:29:42.892238Z",
  11.         "bytesDownloaded": 56546,
  12.         "bytesUploaded": 97471
  13.     },
  14.     "id": "c19fd1a1236541bea1235fae6dcd281b"
  15. }

Шаг 2. Загрузка созданного сервисом файла

После успешного выполнения workitem-а, zip-архив с результатами его выполнения был загружен в OSS, соответственно, теперь мы можем использовать OSS API для его загрузки.

Запрос:

Код - HTML: [Выделить]
  1. curl -X GET \
  2.     https://developer.api.autodesk.com/oss/v2/buckets/YOUR_BUCKET_KEY/objects/YOUR_OBJECT_KEY \
  3.     -H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
  4.     -H 'Content-Type: application/json' \
  5.     -H 'cache-control: no-cache' \
  6.     -d '{}'
  7.     -o 'SOME/PATH/ON/YOUR/COMPUTER/result.zip'

Примечания:

  • замените значение YOUR_BUCKET_KEY в URL запроса именем bucket-а, созданного на этапе подготовки хранилища в облаке
  • замените значение YOUR_OBJECT_KEY в URL запроса именем объекта, созданного для загрузки результатов выполнения задачи сервисом Design Automation
  • замените значение SOME/PATH/ON/YOUR/COMPUTER/result.zip путем к файлу на локальном компьютере, в который будет сохранен загружаемый объект

Ответ сервера - содержимое файла

Назад к запуску workitem

Источник: https://forge.autodesk.com/en/docs/design-automation/v3/tutorials/3dsmax/task-5-download-results/

Автор перевода: Александр Игнатович
Опубликовано 31.07.2019