Проверяемые компоненты:

    • Основное веб-приложение Vitro — загрузка моделей для хранения и организации совместной работы.
    • Брокер сообщений (RabbitMQ) — используется для автоматизации процессов конвертации загружаемых моделей при помощи публикации и обработки сообщений в виде упорядоченных очередей.
    • Консьюмер — приложение, запускающее процессы, выполняющие конвертацию по командам в сообщениях от брокера.
    • BIM-вьюер — интегрированное в веб-приложение хранилища средство просмотра 3D-моделей.

Форматы и очереди по умолчанию:

    • IFC → IfcToXkt
    • Navisworks (.nwd, .nwc, .nwf) → NavisToXkt
    • Revit (.rvt, .rte) → RevitToXkt
    • DWG → DXF → DwgToDxf
    • LAS → LasToXkt.

1) Предварительные условия (без них система не будет работать).

1.1 Windows-хосты с установленным ПО Autodesk. 

Цель: убедиться, что Revit/Navisworks установлены и активированы под тем пользователем, от имени которого запускается конвертация.
Примечание: данный пункт проверки актуален исключительно при наличии соответствующих настроенных очередей RevitToXkt/NavisToXkt. Если предполагается конвертация только Ifc формата и документов DWG, то следует пропустить.


Действия:
    1. Проверьте, что установлены все версии Revit, Navisworks, используемые в компании. 
    2. Убедитесь, что создан отдельный Windows-пользователь, войдите под ним и активируйте лицензии Revit/Navisworks. 
    3. Удостоверьтесь, что консьюмер запускается по расписанию корректно.
Перезагрузитесь и войдите под этим пользователем. 


Ожидаемый результат: Revit, Navisworks стартуют без ошибок лицензии, под нужным пользователем.


Если не так: лицензии не активированы/нет доступа к лицензии — конвертация для Revit/Navisworks зависнет/упадёт.


Диагностика/исправление: снова войдите под этим пользователем, проверьте лицензию Autodesk.

1.2 Поддержание  сеанса Windows для сервисного пользователя запуска консьюмера

Цель:  убедиться, что выполнены настройки поддержания сеанса пользователя Windows в активном состоянии. 
ВАЖНО! Поддержание  сеанса в активном состоянии требуется, поскольку процесс конвертации возможен только в рамках графического окружения рабочего.  


Действия:
    1. Проверьте, что параметры ограничений сессии удаленного рабочего стола в редакторе локальной групповой политики заданы в соответствии с указаниями в п.4 статьи.
    2. Убедитесь, что настроен автоматический вход в систему для пользователя в соответствии с указаниями в примечании 3 в статье


Если не так: При завершении сеанса Windows, либо при невыполненном входе в сеанс Windows (к примеру, после перезагрузки ОС) конвертация моделей выполняться не будет!


Диагностика/исправление: Выполните указания в п.4 и примечании 3 статьи.

1.3 Установка RabbitMQ

Цель: брокер поднят, управление доступно, тайм-аут консьюмера отключён.
Действия:

  1. Убедитесь, что установлено все перечисленное в документации по установке и настройке фермы ПО, рекомендованных версий: Erlang, RabbitMQ-Server, плагины rabbitmq_management. 
  2. Удостоверьтесь, что в конфигурационном файле advanced.config отключен consumer_timeout:

Ожидаемый результат: веб-панель доступна, плагины активны, тайм-аут отключён, порты прослушиваются.


Если не так: сервис RabbitMQ не запущен/порт занят.


Диагностика/исправление: services.msc → перезапустить RabbitMQ (или sudo systemctl restart rabbitmq-server.service под Linux); проверить файрвол, порты 15672,25672,5672. 

1.3 Обменник и очереди в RabbitMQ

Цель: маршрутизация сообщений настроена.


Действия:

  1. Проверьте в панели управления RabbitMQ наличие обменника Vitro.
  2. Убедитесь, что созданы необходимые очереди: IfcToXkt, NavisToXkt, RevitToXkt, DwgToDxf, LasToXkt, Error.
  3. Удостоверьтесь, что для каждой очереди существуют привязка к обменнику Vitro с одноимённым Routing key. 

Ожидаемый результат: все очереди существуют, привязки активны.


Если не так: нет привязки → сообщения «теряются»; нет очереди → консьюмер нечего слушать.


Диагностика/исправление:  проверьте Bindings во вкладке Exchange и Queue. 


1.4 Доступ веб-приложения к RabbitMQ / кэш вьюера

Цель: портал умеет публиковать задания, вьюер знает путь к локальному кэшу.


Действия: Проверить в списке «конфигурация» Веб-приложения Vitro что корректно заданы параметры:

  1. Viewer.BIM.Model.LocalStorage.Path.Root — путь к серверному кэшу (напр. /tmp/Vitro/BimViewer).
  2.  Receiver.Converter.Rabbit.Connection — строка подключения к RabbitMQ (напр. amqp://admin:admin@127.0.0.1:5672). 

Ожидаемый результат:  при загрузке модели портал публикует сообщение в нужную очередь (на вкладке Queues в панели RabbitMQ можем наблюдать кратковременное изменение в счетчике в столбцах Unacked/> Total>0).


Если не так: сообщения не появляются — проверьте строку подключения/права пользователя в RabbitMQ. 

2) Проверяем консьюмер 

2.1 Установка и запуск

Цель: служба/задача консьюмера запускается под правильным пользователем.


Действия:

  1. Проверьте в панели управления Windows что установлен пакет Vitro Forge MultiPlatform. И в установочной директории C:\Program Files\Vitro Software\Vitro\Forge\MultiPlatform\Consumer существуют директории и программные файлы
  2. Убедитесь в наличии задачи VitroForgeTask в планировщике Windows, для которой в триггере запуска выбран пользователь, кому активированы лицензии Autodesk. Если используется сетевая лицензия — убедитесь, что задана задержка старта. 

Ожидаемый результат: задача в Планировщике в состоянии Готово / Выполняется, в сессии нужного пользователя открыто окно консоли консюмера 
Если не так: запущено от другого пользователя — Revit/Navisworks не смогут запуститься, т.к. не настроено лицензирование.
Диагностика/исправление: пересоздайте задание, проверьте учётные данные.

2.2 Конфигурация Consumer.json

Цель: консьюмер подключается к RabbitMQ и знает, чем и как конвертировать.
Действия:

откройте файл C:\Program Files\Vitro Software\Vitro\Forge\Consumer\Conf\Consumer.json и внимательно проверьте основные параметры для каждой очереди:

Ожидаемый результат: при старте консьюмер без ошибок подключается к брокеру и «слушает» свои очереди.

Если не так: в панели управления RabbitMQ на вкладках «Channels» и «Connections» отсутствуют данные о соответствующих каналах/соединениях либо присутствуют но не для всех очередей.
Диагностика/исправление: исправьте строку подключения, проверьте физическую доступность сетевых ресурсов указанных в параметрах ConnectionString и VitroSitePath, а также доступность соответствующих сетевых портов в файле Consumer.json, проверьте доступ к каталогам, наличие исполняемых файлов плагинов. 

3) Функциональный прогон 

3.1 Публикация задания

Цель: удостовериться, что веб-приложение публикует сообщение в очередь.

Действия: загрузите в хранилище модель поддерживаемого типа (например, IFC). Затем в RabbitMQ-UI откройте соответствующую очередь (например, IfcToXkt).

Ожидаемый результат: кратковременное появление сообщения (Ready > Unacked > 0).

Если не так: сообщение не появляется — некорректная строка подключения портала к RabbitMQ/права; застряло в Ready — нет консьюмера/он не подключён к этой очереди.

Диагностика/исправление: см. разделы 1.4, 2.2 и 1.3. 

3.2 Работа консьюмера

Цель: убедиться, что задание реально обрабатывается.

Действия: наблюдайте консоль/лог консьюмера — процесс конвертации должен быть виден (старт плагина, выполнение, завершение без исключений).

Ожидаемый результат: выполнение завершается без исключений.

Если не так: см. очередь Error — там будет сообщение об ошибке конвертации с деталями.

Диагностика/исправление: проверяйте версию Revit/Navisworks/путь к плагину/права, используйте NextQueue, если требуется более новая версия.

3.3 Проверка во вьюере

Цель: визуально подтвердить пригодность результата.

Действия: откройте модель во встроенном BIM-вьюере портала и оцените корректность отображения (геометрия/дерево/свойства).

Ожидаемый результат: модель отображается корректно.

Если не так: проверьте кэш-путь Viewer.BIM.Model.LocalStorage.Path.Root, права доступа и сообщение в Error. 

4) Быстрый «диагностический маршрут» по симптомам

5) Чек-листы 

Брокер:

Консьюмер(ы):

BimViewer / Портал:

6) Полезные команды и «точки наблюдения»

Логика первичного принятия решения