Не блокируется действие в таблице

Имеется сложный MasterDetailScreen для сущности Student следующей структуры данных:
Student @MtO-> Person <-@MtO PersonDocument. В панели информации/редактирования выводится список документов, принадлежащих персоне, на которую ссылается выбранный студент. Data-контейнеры организованы следующим образом:

<collection id="studentsDc"
            class="com.example.intd.entity.student.Student">
    <fetchPlan extends="_base">
        <property name="person" fetchPlan="_base"/>
    </fetchPlan>
    <loader id="studentsDl">
        <query>
            <![CDATA[select e from IntD_Student e]]>
        </query>
    </loader>
</collection>
<instance id="studentDc"
          class="com.example.intd.entity.student.Student">
    <fetchPlan extends="_base">
        <property name="person" fetchPlan="_base"/>
    </fetchPlan>
    <loader/>
    <instance id="personDc" property="person">
        <collection id="documentsDc" property="documents"/>
    </instance>
</instance>

Дальше есть таблица с собственно документами:

<table id="documentsTable"
       width="100%"
       dataContainer="documentsDc">
    <actions>
        <action id="createDocument" type="create"/>
        <action id="edit" type="edit"/>
        <action id="remove" type="remove"/>
    </actions>
    <columns>
        <column id="type"/>
        <column id="number"/>
        <column id="issueDate"/>
        <column id="scan"/>
    </columns>
    <simplePagination/>
    <buttonsPanel id="docsButtonsPanel"
                  alwaysVisible="true">
        <button id="docCreateBtn" action="documentsTable.createDocument" caption="msg:///actions.Add" icon="ADD_ACTION"/>
        <button id="docEditBtn" action="documentsTable.edit"/>
        <button id="docRemoveBtn" action="documentsTable.remove"/>
    </buttonsPanel>
</table>

У действия createDocument есть кастомный хендлер, который программно вызывает редактор, т.к. создаваемой сущности необходимо присвоить правильную персону:

@Subscribe( "documentsTable.createDocument" )
public void onCreateDocument( Action.ActionPerformedEvent event ) {
   //...
}

Хендлер работает правильно, все вроде бы здорово. НО. Если не выбран студент, почему-то кнопка docCreateBtn остается активной! Со всеми вытекающими. Эксперимента для сгенерировал следующий enabledRule:

@Install( to = "documentsTable.createDocument", subject = "enabledRule" )
private boolean documentsTableCreateDocumentEnabledRule() {
    return false; // отдаем false всегда, чтобы посмотреть на блокировку кнопки
}

Но даже при таком жестком вроде бы блокировании действия кнопка остается активной и действие выполняется… При этом “стандартные” действия редактирования и удаления блокируются корректно. Где я ошибся?

Снимок экрана 2023-01-09 115905

Добрый день.

CreateAction активе всегда, т.к. в своей дефолтной реализации не зависит от внешних условий, особенно от активной строки в таблице, т.к. создает новый экземпляр сущности.

К сожалению у меня не получилось воспроизвести проблему. enabledRule, возвращающий false корректно отключает действие.

Исходя из того, что от стандартного действия создания осталась только иконка и признак primary, я бы посоветовал создать новое действие с типом itemTracking, например:

<action id="createDocument"
        type="itemTracking" <!-- действие будет реагировать на выбранную строку в таблице -->
        caption="msg://createDocument.caption"
        icon="CREATE_ACTION"
        shortcut="${TABLE_ADD_SHORTCUT}"
        primary="true"
        />

Глеб