CUBA 平台:为 class 层级设计屏幕
CUBA platform : designing screens for a class hierarchy
我有 4 个实体:
人(姓名、电子邮件等)
- Counterpart extends Person(银行和支付信息等)
- 客户扩展对方(折扣、crm 信息等)
- 供应商扩展对方(供应、产品等)
我需要3个屏幕,除了Counterpart,一人一个,我在几种设计方案中犹豫不决。目标是避免给定屏幕中的重复字段,其中父实体已经存在屏幕。例如,如果我为 Person 设计了一个屏幕,我想以某种方式在子实体的屏幕中重用这个屏幕(而不是为 'name' 复制字段)。
我有以下选择:
对平台 screen/xml 继承非常感兴趣,这似乎很适合我的问题,但遗憾的是它只适用于平台屏幕,而不是用户设计的屏幕。
设计一个(智能)屏幕,您可以在其中以某种方式 select 实体类型,然后屏幕动态添加 GUI 组件来处理实体的细节。屏幕将更加复杂,并且基本上由代码而不是视觉设计来管理,这让我很恼火(那时候为什么要有视觉设计师)。除非有人有设计技巧。
设计 3 个不同的屏幕,但有一种方法可以重复使用,例如以前视觉设计的字段组。我知道我完全可以用代码生成一个GUI组件
为实体细节设计 3 个编辑器屏幕,并有一些方法 combine/embed 它们,但在那种情况下,我可能必须将实体模型从继承更改为组合才能实现容易多了。
现在我倾向于选项 2),例如,当它们处理的细节不再相关时,框架会自行折叠,但我担心它不会起作用,因为编辑器绑定到特定 class.
有经验的 CUBA 开发人员有什么建议?
这取决于您可以重复使用的控制器逻辑的数量。为了代码重用而使代码结构复杂化真的有好处吗?我认为至少应该有10个具有复杂验证/动态外观逻辑的公共字段才能进行重用。
我会选择相框。将布局和相关逻辑的可重用部分提取到框架中,然后将框架嵌入到实体编辑器中。
通过使用框架,您可以将任何大屏幕分解成更小且更易于管理的部分。
此外,字段验证器、自定义字段生成器、table 样式提供器、格式化器等包含重要逻辑,可以提取为上层 类。因此它们可以在整个项目中重复使用。
我有 4 个实体:
人(姓名、电子邮件等)
- Counterpart extends Person(银行和支付信息等)
- 客户扩展对方(折扣、crm 信息等)
- 供应商扩展对方(供应、产品等)
我需要3个屏幕,除了Counterpart,一人一个,我在几种设计方案中犹豫不决。目标是避免给定屏幕中的重复字段,其中父实体已经存在屏幕。例如,如果我为 Person 设计了一个屏幕,我想以某种方式在子实体的屏幕中重用这个屏幕(而不是为 'name' 复制字段)。
我有以下选择:
对平台 screen/xml 继承非常感兴趣,这似乎很适合我的问题,但遗憾的是它只适用于平台屏幕,而不是用户设计的屏幕。
设计一个(智能)屏幕,您可以在其中以某种方式 select 实体类型,然后屏幕动态添加 GUI 组件来处理实体的细节。屏幕将更加复杂,并且基本上由代码而不是视觉设计来管理,这让我很恼火(那时候为什么要有视觉设计师)。除非有人有设计技巧。
设计 3 个不同的屏幕,但有一种方法可以重复使用,例如以前视觉设计的字段组。我知道我完全可以用代码生成一个GUI组件
为实体细节设计 3 个编辑器屏幕,并有一些方法 combine/embed 它们,但在那种情况下,我可能必须将实体模型从继承更改为组合才能实现容易多了。
现在我倾向于选项 2),例如,当它们处理的细节不再相关时,框架会自行折叠,但我担心它不会起作用,因为编辑器绑定到特定 class.
有经验的 CUBA 开发人员有什么建议?
这取决于您可以重复使用的控制器逻辑的数量。为了代码重用而使代码结构复杂化真的有好处吗?我认为至少应该有10个具有复杂验证/动态外观逻辑的公共字段才能进行重用。
我会选择相框。将布局和相关逻辑的可重用部分提取到框架中,然后将框架嵌入到实体编辑器中。
通过使用框架,您可以将任何大屏幕分解成更小且更易于管理的部分。
此外,字段验证器、自定义字段生成器、table 样式提供器、格式化器等包含重要逻辑,可以提取为上层 类。因此它们可以在整个项目中重复使用。