5.9.4.2. Отображение журнала

Для просмотра журнала изменений некоторого экземпляра сущности достаточно обычным способом загрузить в источники данных экрана коллекцию экземпляров EntityLogItem и ассоциированных с ними EntityLogAttr, и создать визуальные компоненты, связанные с этими источниками. Например:

<dsContext>
    <datasource id="customerDs"
                class="com.sample.sales.entity.Customer"
                view="customerEdit"/>
    <collectionDatasource id="logDs"
                          class="com.haulmont.cuba.security.entity.EntityLogItem"
                          view="logView">
        <query>
            select i from sec$EntityLog i
            where i.entityRef.entityId = :ds$customerDs order by i.eventTs
        </query>
        <collectionDatasource id="logAttrDs"
                              property="attributes"/>
    </collectionDatasource>
</dsContext>
<layout>
...
<split orientation="vertical" width="100%" height="100%">

    <table id="logTable" width="100%" height="100%">
        <columns>
            <column id="eventTs"/>
            <column id="user.login"/>
            <column id="type"/>
        </columns>
        <rows datasource="logDs"/>
    </table>

    <table id="logAttrTable" width="100%" height="100%">
        <columns>
            <column id="name"/>
            <column id="value"/>
        </columns>
        <rows datasource="logAttrDs"/>
    </table>

</split>
...
</layout>

Для отображения локализованных значений журналируемых атрибутов эти атрибуты должны содержать аннотацию @LocalizedValue. При ее наличии механизм журналирования заполняет поле EntityLogAttr.messagesPack, и таблица, отображающая значения атрибутов из примера выше может использовать колонку locValue вместо value:

<table id="logAttrTable" width="100%" height="100%">
  <columns>
      <column id="name"/>
      <column id="locValue"/>
  </columns>
  <rows datasource="logAttrDs"/>
</table>