当前位置: 首页 > news >正文

Association, Composition and Aggregation in UI5, CRM, S/4HANA and C4C

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

UI5

UI5使用Association和Aggregation描述控件之间的关系。

Aggregation:parent和子控件在lifecycle上存在依赖关系:

When a ManagedObject is destroyed, all aggregated objects are destroyed as well and the object itself is removed from its parent. That is, aggregations won't contain destroyed objects or null/undefined.

比如UI5的转盘控件Carousel: 一旦转盘被析构,里面显示的page当然也没有继续存在的意义了,需要跟着被析构。

而Association描述了在lifecycle层面的一种soft dependency关系:

Managed associations also form a relationship between objects, but they don't define a lifecycle for the associated objects. They even can 'break' in the sense that an associated object might have been destroyed already although it is still referenced in an association. 

最明显的例子就是控件和其label的关系,比如button和label:技术上来说,可以彼此分开独立存在。

CRM

CRM的Genil model存在三种类型的relation,可以在doman CRM_RELATION_KIND里查看:

区别:

  • Association: Link between any kind of objects. Can also be defined across components with root or access object as target. 依赖关系最为loose的一种relation,可以用来连接跨model之间的节点。

  • Aggregation: Binds child objects to a root object. Only access and dependent objects can be aggregated. 只适用于同一模型的节点之间的关联。

  • Composition: Like an aggregation, but composed child objects always exist. 特殊类型的Aggregation。目标节点的Cardinality为1或者1..n

S/4HANA

只有两种:association或者composition。Composition的含义同CRM里的aggregation,而association的含义同UI5和CRM中的association一致。

C4C

只有两种: association或者composition。C4C的这两种relation多了一个限制:relation的目标BO必须和源BO在同一个部署单元Deployment Unit,或者目标BO位于Foundation部署单元内。

Association的语法如下图:

association的multiplicity只支持[0,1]或者[1,1], 如果不显式指定,默认为[1,1].

C4C relation的一个特色是,一旦申明了一个子节点之后,系统会默认生成一个对应的composition。

下图第4行代码会自动生成一个[0,n]的从root节点到Item节点的composition。

要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:

转载于:https://my.oschina.net/u/3771578/blog/1790276

相关文章:

  • iOS 组件化开发(三):加载资源文件
  • swift中利用系统线程实现异步加载数据同步更新UI
  • T56
  • pyqt5的下载进度条 实现模板
  • 用servlet校验密码2
  • PHP 生成唯一订单号函数
  • SSE图像算法优化系列二十九:基础的拉普拉斯金字塔融合用于改善图像增强中易出现的过增强问题(一)...
  • Confluence 6 LDAP 服务器配置
  • tp5.0中及其常用方法的一些函数方法(自己看)和技巧(不断添加中)
  • SpringBoot 从application.yml中通过@Value读取不到属性值
  • python开发环境
  • 网页排版布局--从里到外先搞定结构
  • 常见的Web安全及其攻防姿势
  • 利益相关者分析
  • 长春网站建设×××,网站制作的步骤
  •  D - 粉碎叛乱F - 其他起义
  • es6(二):字符串的扩展
  • HTTP那些事
  • Object.assign方法不能实现深复制
  • Tornado学习笔记(1)
  • 安装python包到指定虚拟环境
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 机器学习中为什么要做归一化normalization
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 前端临床手札——文件上传
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 前端学习笔记之观察者模式
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 微信小程序:实现悬浮返回和分享按钮
  • 一个JAVA程序员成长之路分享
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • 云大使推广中的常见热门问题
  • 再谈express与koa的对比
  • 在Docker Swarm上部署Apache Storm:第1部分
  • 在weex里面使用chart图表
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (二)正点原子I.MX6ULL u-boot移植
  • (二十四)Flask之flask-session组件
  • (附源码)spring boot建达集团公司平台 毕业设计 141538
  • (剑指Offer)面试题34:丑数
  • (接口封装)
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (十一)手动添加用户和文件的特殊权限
  • (四)模仿学习-完成后台管理页面查询
  • (转) Android中ViewStub组件使用
  • (转)http-server应用
  • (转)nsfocus-绿盟科技笔试题目
  • (转)程序员疫苗:代码注入
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil