3.9.3. Инспектор сущностей

Инспектор сущностей позволяет работать с любыми объектами предметной области без создания специфических экранов. Инспектор динамически генерирует экраны просмотра списка и редактирования экземпляра выбранной сущности.

Это дает возможность администратору системы просматривать и редактировать данные, которые недоступны в стандартных экранах в силу их дизайна, а на этапе прототипирования создать только модель данных и пункты главного меню, ссылающиеся на инспектор сущностей.

Точкой входа в инспектор является экран com/haulmont/cuba/gui/app/core/entityinspector/entity-inspector-browse.xml.

Если в экран передан параметр entity типа String с именем сущности, то инспектор отобразит список экземпляров этой сущности с возможностью фильтрации, выбора и редактирования экземпляров. Параметр может быть указан при регистрации экрана в screens.xml, например:

screens.xml

<screen id="sales$Product.lookup"
      template="/com/haulmont/cuba/gui/app/core/entityinspector/entity-inspector-browse.xml">
  <param name="entity"
         value="sales$Product"/>
</screen>

menu.xml

<item id="sales$Product.lookup"/>

Идентификатор экрана вида {имя_сущности}.lookup дает возможность использовать этот экран компонентам PickerField и LookupPickerField в стандартном действии PickerField.LookupAction.

В общем случае данный экран можно вызывать без передачи параметров, тогда в его верхней части отображается поле для выбора сущности. В компоненте cuba экран инспектора зарегистрирован с идентификатором entityInspector.browse, поэтому для его вызова достаточно наличия пункта меню:

<item id="entityInspector.browse"/>
Экспорт и импорт с помощью инспектора сущностей

С помощью инспектора сущностей можно экспортировать и импортировать любые простые сущности, в том числе и системные (например, назначенные задания, блокировки).

После выбора типа сущности на экране инспектора появляются действия для экспорта выделенных в списке экземпляров сущности в форматах ZIP или JSON, а также для импорта в систему (с помощью кнопок Export/Import).

Имейте в виду, когда сущность экспортируется c помощью EntityInspector, то ссылочные атрибуты с типом связи one-to-many или many-to-many не экспортируются. Импорт и экспорт с помощью инспектора сущностей работает для простых случаев, если же у вас сложный граф объектов, то лучше делать импорт/экспорт в коде приложения с помощью EntityImportExportService.