当前位置: 首页 > Web前端 > HTML5

UI5、CRM、S-4HANA中的Association、Composition和Aggregation

时间:2023-04-05 00:34:33 HTML5

UI5UI5使用Association和Aggregation来描述控件之间的关系。聚合:父控件和子控件依赖于生命周期:当一个ManagedObject被销毁时,所有聚合对象也被销毁,对象本身从其父控件中移除。也就是说,聚合不会包含已销毁的对象或null/undefined。比如UI5的轮播控件Carousel:一旦轮播被销毁,当然其中显示的页面就没有继续存在的意义了,需要进行相应的销毁。Association在生命周期层面描述了一种软依赖关系:Managedassociations也形成了对象之间的关系,但它们不定义关联对象的生命周期。它们甚至可以在关联对象可能已经被销毁的意义上“中断”,尽管它仍然在关联中被引用。最明显的例子就是控件和它们的标签的关系,比如按钮和标签:从技术上讲,它们可以相互独立存在。CRMCRM的Genil模型中存在三种关系,可以在domanCRM_RELATION_KIND中查看:区别:关联:任何一种对象之间的联系。也可以跨组件定义,以根或访问对象为目标。最松散的依赖关系,可用于跨模型连接节点。聚合:将子对象绑定到根对象。只能聚合访问和依赖对象。仅适用于同一模型的节点之间的关联。组合:类似于聚合,但组合的子对象始终存在。特殊类型的聚合。目标节点的Cardinality为1或1。nS/4HANA只有两种类型:association或composition。Composition和CRM中的aggregation同义,association和UI5、CRM中的association同义。只有两种类型的C4C:关联或组合。C4C的两种关系多了一个限制:关系的目标BO必须和源BO在同一个部署单元,或者目标BO在Foundation部署单元。Association的语法如下图所示:关联的重数只支持[0,1]或[1,1],如果没有明确指定,默认为[1,1]。C4C关系的一个特点是,一旦声明了一个子节点之后,系统会默认生成一个对应的组合。下图中第四行代码会自动生成一个从根节点到Item节点的[0,n]组合。