Часто в ходе разработки появляются различные фреймы, отвечающие за какой-либо конкретный функционал. Для использования в них источников данных необходимо соблюдать соглашение о используемых наименованиях источников в экранах, использующих их. Это затрудняет разработку приложения и гибкость кода. Так же не возможно разрешить конфликтные ситуации при определении xml:
- Конфликт используемых источников данных: предположим, у нас имеются 2 фрейма ("frame1" и "frame2") использующих в качестве основного источник с наименованием "cardDs". Таки образом невозможно построить экран, использующих оба этих фрейма, но привязанных к разным источникам данных (к примеру к источнику "parentCardDs")
- Двукратное использование одного и того же фрейма по разным источникам на одном экране. По сути является разновидностью предыдущей ситуации с той лишь разницей, что экран один и тот же.
Предлагаемое решение: псевдонимы источников данных для источников данных. Пример возможного использования:
<window xmlns="http://schemas.haulmont.com/cuba/5.4/window.xsd"
class="org.example.proj.gui.common.card.CompareFrame"
messagesPack="org.example.proj.gui.common.card">
<dsContext>
<datasource id="cardDs" class="com.haulmont.workflow.core.entity.Card">
<datasource id="parentCardDs" property="parentCard"/>
</datasource>
</dsContext>
<layout>
<hbox>
<iframe id="cardDsFeatureFrame" screen="featureScreen" width="100%"/>
<iframe id="parentCardDsFeatureFrame" screen="featureScreen" width="100%">
<dsAlias ds="parentCardDs" alias="cardDs"/>
</iframe>
</hbox>
</layout>
</window>