Расширение от ProcessInstance EditRuntimeFragment

jmix 1.6.2
понадобилось расшириться от ProcessInstanceEditRuntimeFragment

@UiController("bpm_ExtProcessInstanceEditRuntimeFragment")
@UiDescriptor("ext-process-instance-edit-runtime-fragment.xml")
public class ExtProcessInstanceEditRuntimeFragment extends ProcessInstanceEditRuntimeFragment {
    @Autowired
    private AccessManager accessManager;
    @Autowired
    private Metadata metadata;

    @Named("tasksTable.reassignTask")
    private BaseAction tasksTableReassignTask;

    @Subscribe
    public void onAfterInit(final AfterInitEvent event) {
        initButtonsSecurity();
    }

    private void initButtonsSecurity() {
        UiSecurityUtils.setActionEnabled(tasksTableReassignTask, accessManager, metadata.getClass(TaskData.class), CrudEntityContext::isUpdatePermitted);
    }
}

соответствующий xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<fragment xmlns="http://jmix.io/schema/ui/fragment"
          messagesGroup="io.jmix.bpmui.screen.processinstance"
          extends="io/jmix/bpmui/screen/processinstance/process-instance-edit-runtime-fragment.xml">
    <layout/>
</fragment>

но вкладки не перевелись
image

Добрый день

Если еще актуально)

  1. Мы оверрайдим скрины
    image
  2. Проще всего скопировать layout
    image
  3. Ошибка в том что мы оверрайдим только фрагмент, в этом случае из jar нашего аддона подтягиваются только тот фрагмент который есть там. Потому мы должны заоверрайдить 2 экрана
  • ProcessInstanceEdit
  • ProcessInstanceEditRuntineFragment
    В этом случае у нас появляется возможность указывать какой айдишник у нового (переорпделенного) фрагмента, даже если он не изменился мы можем его переопределить
    image
  1. Сам ExtProcessInstanceEdit

      <window xmlns="http://jmix.io/schema/ui/window"
            caption="msg://io.jmix.bpmui.screen.processinstance/processInstanceEdit.caption">
        <data>
            <instance id="processInstanceDataDc"
                      class="io.jmix.bpm.entity.ProcessInstanceData">
                <fetchPlan extends="_local"/>
                <loader/>
            </instance>
        </data>
        <facets>
            <dataLoadCoordinator auto="true"/>
        </facets>
        <dialogMode height="600"
                    width="800"/>
        <layout expand="relatedEntitiesTabSheet"
                spacing="true">
            <hbox spacing="true" id="upperPanel">
                <groupBox id="processInstanceInfoGroupBox"
                          caption="msg://io.jmix.bpmui.screen.processinstance/processInstanceInfo"
                          orientation="horizontal"
                          collapsable="true"
                          spacing="true">
                    <form id="processInstanceForm" dataContainer="processInstanceDataDc" width="450px" editable="false">
                        <column width="100%">
                            <textField property="id"/>
                            <dateField property="startTime"/>
                            <dateField id="endTimeField" property="endTime"/>
                            <textField property="businessKey"/>
                            <hbox spacing="true" expand="processDefinitionField"
                                  caption="msg://io.jmix.bpmui.screen.processinstance/processDefinition">
                                <textField id="processDefinitionField" editable="false"/>
                                <button id="openProcessDefinitionEditorBtn" icon="ENTITYPICKER_OPEN"
                                        description="msg://io.jmix.bpmui.screen.processinstance/openProcessDefinition"/>
                            </hbox>
                        </column>
                    </form>
                    <vbox id="processActionsPanel"
                          width="200px"
                          spacing="true">
                        <button id="migrateBtn"
                                description="msg://io.jmix.bpmui.screen.processinstance/migrate"
                                caption="msg://io.jmix.bpmui.screen.processinstance/migrate"
                                icon="font-icon:FORWARD"
                                width="100%"/>
                        <button id="suspendBtn"
                                description="msg://io.jmix.bpmui.screen.processinstance/suspend"
                                caption="msg://io.jmix.bpmui.screen.processinstance/suspend"
                                icon="PAUSE"
                                width="100%"/>
                        <button id="activateBtn"
                                description="msg://io.jmix.bpmui.screen.processinstance/activate"
                                caption="msg://io.jmix.bpmui.screen.processinstance/activate"
                                icon="PLAY"
                                width="100%"/>
                        <button id="deleteBtn"
                                description="msg://io.jmix.bpmui.screen.processinstance/delete"
                                caption="msg://io.jmix.bpmui.screen.processinstance/delete"
                                icon="REMOVE"
                                width="100%"/>
                    </vbox>
                </groupBox>
            </hbox>
            <tabSheet id="relatedEntitiesTabSheet">
                <tab id="runtimeTab" caption="msg://io.jmix.bpmui.screen.processinstance/runtimeTabCaption"
                     margin="true;false;false;false;">
                    <label value="ASDSADSADSASA"/>
                    <fragment id="processInstanceEditRuntimeFragment" screen="bpm_ProcessInstanceEditRuntimeFragment"/>
                </tab>
                <tab id="historyTab" caption="msg://io.jmix.bpmui.screen.processinstance/historyTabCaption"
                     margin="true;false;false;false;">
                    <fragment id="processInstanceEditHistoryFragment" screen="bpm_ProcessInstanceEditHistoryFragment"/>
                </tab>
                <tab id="diagramTab" caption="msg://io.jmix.bpmui.screen.processinstance/diagramTabCaption"
                     margin="true;false;false;false;">
                    <fragment id="bpmnDiagramViewerFragment" screen="bpm_BpmnDiagramViewerFragment"/>
                </tab>
            </tabSheet>
            <hbox id="windowActions"
                  spacing="true">
                <button id="windowClose"
                        action="windowClose"
                        caption="msg:///actions.Close"
                        icon="EDITOR_OK"/>
            </hbox>
        </layout>
    </window>
    
  2. также для удобства при переопределении экарана копируем все элементы и можем делать что нам надо

    <fragment xmlns="http://jmix.io/schema/ui/fragment">
    <data>
        <collection id="variablesDc"
                    class="io.jmix.bpm.entity.VariableInstanceData"/>
        <collection id="tasksDc"
                    class="io.jmix.bpm.entity.TaskData"/>
        <collection id="executionsDc"
                    class="io.jmix.bpm.entity.ExecutionData"/>
        <collection id="jobsDc"
                    class="io.jmix.bpm.entity.JobData"/>
    </data>
    <layout width="100%" height="100%">
        <label value="OVERRIDED"/>
        <split width="100%" height="100%" pos="30" orientation="horizontal">
            <groupBox height="100%" caption="msg://io.jmix.bpmui.screen.processinstance/executionsTree"
                      width="100%" outerMargin="false;true;false;false;">
                <tree id="executionsTree" dataContainer="executionsDc" hierarchyProperty="parent"
                      captionProperty="description" width="100%" height="100%">
                </tree>
            </groupBox>
            <hbox width="100%" height="100%" margin="false;false;false;true;">
                <tabSheet id="tabsheet" height="100%">
                    <tab id="variablesTab"
                         caption="msg://io.jmix.bpmui.screen.processinstance/variablesTabCaption" spacing="true"
                         margin="true;false;false;false;">
                        <table id="variablesTable"
                               dataContainer="variablesDc"
                               height="100%"
                               width="100%">
                            <actions>
                                <action id="create"
                                        type="create"/>
                                <action id="edit"
                                        type="edit"/>
                                <action id="remove" type="remove"/>
                            </actions>
                            <columns>
                                <column id="name"/>
                                <column id="typeName"/>
                                <column id="value"/>
                                <column id="scope"/>
                                <column id="executionId" collapsed="true"/>
                            </columns>
                            <buttonsPanel>
                                <button id="variableCreateBtn"
                                        action="variablesTable.create"/>
                                <button id="variableEditBtn"
                                        action="variablesTable.edit"/>
                                <button id="variableRemoveBtn"
                                        action="variablesTable.remove"/>
                            </buttonsPanel>
                        </table>
                    </tab>
                    <tab id="tasksTab" caption="msg://io.jmix.bpmui.screen.processinstance/tasksTabCaption"
                         spacing="true" margin="true;false;false;false;">
                        <table id="tasksTable" width="100%" height="100%" dataContainer="tasksDc">
                            <actions>
                                <action id="reassignTask"
                                        caption="msg://io.jmix.bpmui.screen.processinstance/reassignTask"
                                        icon="font-icon:EXCHANGE"
                                        trackSelection="true"/>
                            </actions>
                            <columns>
                                <column id="id"/>
                                <column id="name"/>
                                <column id="taskDefinitionKey"/>
                                <column id="assignee"/>
                                <column id="createTime"/>
                                <column id="claimTime"/>
                                <column id="dueDate"/>
                            </columns>
                            <buttonsPanel>
                                <button action="tasksTable.reassignTask"/>
                            </buttonsPanel>
                        </table>
                    </tab>
                    <tab id="jobsTab" caption="msg://io.jmix.bpmui.screen.processinstance/failedJobsTabCaption"
                         spacing="true"
                         margin="true;false;false;false;">
                        <dataGrid id="jobsTable" width="100%" height="100%" dataContainer="jobsDc">
                            <columns>
                                <column property="id"/>
                                <column property="createTime"/>
                                <column property="retries"/>
                                <column property="exceptionMessage"/>
                            </columns>
                            <actions>
                                <action id="edit" type="edit"/>
                            </actions>
                            <buttonsPanel>
                                <button action="jobsTable.edit"/>
                            </buttonsPanel>
                        </dataGrid>
                    </tab>
                </tabSheet>
            </hbox>
        </split>
    </layout>
    </fragment>
    

По итогу получаем

image

Все переопределено

С уважением,
Дмитрий