3

我有 4 个实体:

人员(姓名、电子邮件等)

  • 对方扩展人(银行和付款信息等)
  • 客户扩展对应方(折扣、crm 信息等)
  • 提供者扩展对应方(供应、产品等)

我需要 3 个屏幕,每个屏幕一个,除了 Counterpart,我在几种设计可能性中犹豫不决。目标是避免给定屏幕中的重复字段,其中父实体的屏幕已经存在。例如,如果我为 Person 设计了一个屏幕,我想以某种方式在子实体的屏幕中重用这个屏幕(而不是复制“名称”等字段)。

我提供了以下选项:

  1. 对平台屏幕/xml 继承非常感兴趣,这似乎很适合我的问题,但遗憾的是,它仅适用于平台屏幕,而不是用户设计的屏幕。

  2. 设计一个(智能)屏幕,您可以在其中以某种方式选择实体类型,然后屏幕添加动态 GUI 组件来处理实体的细节。屏幕将更加复杂,主要由代码而不是视觉设计来管理,这让我很恼火(为什么要有视觉设计师)。除非有设计技巧。

  3. 设计 3 个不同的屏幕,但有办法重用例如以前视觉设计的字段组。我知道我可以完全在代码中生成一个 GUI 组件。

  4. Design 3 编辑器筛选每个实体细节,并有一些方法来组合/嵌入它们,但在这种情况下,我可能不得不将实体模型从继承更改为组合,以使其更容易。

现在我倾向于选项 2),使用例如框架在它们处理的细节不再相关时自行折叠,但我担心它不会起作用,因为编辑器绑定到特定的类。

有哪些经验丰富的 CUBA 开发人员会给出建议?

4

1 回答 1

5

这取决于您可以重用的控制器逻辑的数量。使代码结构复杂化以实现代码重用真的值得吗?我认为应该至少有 10 个具有复杂验证/动态外观逻辑的通用字段才能重用。

我会选择框架。将布局的可重用部分和相关逻辑提取到框架中,然后将框架嵌入到实体编辑器中。

通过使用框架,您可以将任何大块屏幕分解为更小且更易于管理的部分。

此外,包含非平凡逻辑的字段验证器、自定义字段生成器、表格样式提供程序、格式化程序等可以提取为上层类。因此,它们可以在整个项目中重复使用。

于 2016-08-19T06:52:27.723 回答