金蝶BOS元模型分析
对一些需求变化多样的产品而言,做好可变性设计是非常重要的。国外做得好的有Siebel,国内有金蝶的BOS,实际上金蝶的BOS很多理念跟Siebel是相似的,呵呵。。。他们都是采用MDD的方式来解决可变性问题的。
这里的难点在于如何抽象出一套稳定的元模型,能描述各种各样的变化,以达到通过配置即可搞定需求变更的目的。
这里着重讲一下金蝶BOS的元模型,所谓元模型,是模型的模型。
在数据层,有Table,Table对应到数据库表,直接三种Table之间的关系,什么交叉表、扩展表之类的,基本与平常大家设计表的范式对应,不多说;
在业务逻辑层,有实体,实体表示系统的领域实体对象,一个实体对应到一个Table,实体的属性对应到Table的field或其扩展表的Field,实体与实体之间有关系,关系分为One2One,One2Many,Many2One,Many2Many。还可以对实体的属性定义计算公式,约束。但缺乏实体级别的约束。我认为金蝶可以增加这一个小特性:)。实体可继承另一个实体,以获得另一个实体的定义。
可以为实体定义方法,方法映射到一个规则。也就是说调用这个方法的时候实际执行的是这个规则;
可以为实体定义查询方案、过滤方案、排序方案,主要是以OO的方式做实体查询,对外暴露OO化的用户接口,对内生成SQL用;
可以为实体定义事件,Function和Facade可监听事件,事件由Function触发。
金蝶对Function的解释是“业务功能是对运行系统的Entity对象、UI对象及其方法的一定封装,供其它模块或二次开发使用”,比如上文提到的事件,即是由Function触发的,但不知为什么还要指定事件的方法,Function是事件的生产者,事件的方法表示事件的消费者(监听者),这样做不是导致生产者与消费者耦合了吗??那还要事件干什么,不知道有没有朋友能解答这个问题??Function还可以绑定到一个UI的Action,意味着当该UI对象的Action触发时,会执行这个Function。对UI Action的绑定是可选的。
Facade表示领域Service对象,相比实体,其仅仅有方法,没有属性。
UI对象表示一个界面对象,比如订单创建对象,可以对其指定Layout,UI对象支持绑定实体、Query对象。UI对象也有事件、Action和状态,事件和Action应该可以绑定到Function和Facade,State表示界面对象的状态,比如界面通常有编辑状态、查看状态等等。UI对象还有个父对象,还没怎么弄清楚UI对象与UI对象之间的关系,没有看到描述,需要进一步研究;感觉BOS对UI层的抽象略显简单,通常UI层是最复杂的,有字段联动,子页面联动等等,没见到BOS怎么来搞定这种联动场景。
查询表示对对象的查询,需要绑定一个对象树,可定义查询方案、过滤方案、排序方案,生成SQL用;
还有其它的一些非主要元模型。
通过UI Object、Entity/Function/Facade、和Table,可支持描述界面、领域对象/服务、数据库表以及它们之间的绑定关系,如果对象模型有变更、或者业务逻辑有变更,会导致这三层的对象的变化,而变化可基于这三层的元模型描述,实现配置即可用。
————————————————
版权声明:本文为CSDN博主「liaoxingya276」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/liaoxingya276/article/details/7342656
金蝶BOS元模型分析的更多相关文章
- 金蝶BOS
1, 金蝶BOS 金蝶BOS是一个开放的集成与应用平台,是金蝶企业管理软件解决方案.合作伙伴解决方案以及客户定制应用的技术平台.能够为企业灵活而迅速的设计.构建.实施和执行一套随需应变的企业管理软件系 ...
- k3 Bos开发百问百答
K/3 BOS开发百问百答 (版本:V1.1) K3产品市场部 目录 一.基础资料篇__ 1 [摘要]bos基础资料的显示问题_ 1 [摘要]单 ...
- 金蝶EAS——登录某个数据中心门户时报错“获取用户相关信息失败!请查看服务器日志,并确认是否数据库设置错误或者版本不匹配!”
登录服务器后台,查看金蝶BOS控制台,选择数据中心中的目标数据中心,点击测试连接,提示报错如下: 说明是数据库问题,需要登录数据库服务器去检查数据库.详细操作见:
- Enterprise Solution 开源项目资源汇总 Visual Studio Online 源代码托管 企业管理软件开发框架
Enterprise Solution 是一套管理软件开发框架,在这个框架基础上开发出一套企业资源计划系统Enterprise Edition. 现将Enterprise Solution开发过程中遇 ...
- Enterprise Solution 企业管理软件开发框架
Enterprise Solution 开源项目资源汇总 Visual Studio Online 源代码托管 企业管理软件开发框架 Enterprise Solution 是一套管理软件开发框架,在 ...
- 金蝶K/3 BOS产品培训教案
K/3 BOS产品培训教案 1 K/3 BOS IDE练习案例... 2 1.1新建基础资料... 2 1.1.1新增基础资料交货地点... 2 1.2新建业务单据... 2 1.2.1新建寄 ...
- 金蝶EAS BOS上如何打补丁
主要分为2种方式,直接通过BOS管理平台,去安装补丁 另一种方式就是通过本地zip压缩包去打补丁,以我的安装目录包为例路径为:E:\kingdee\kingserver\eas\admin\patch ...
- 用SQL查询分析实现类似金蝶K3的收发存明细表
使用SQL查询分析实现类收发存的报表,原始需求在 另外一篇文章 的第四部分.下图是实现需求. 一.准备 删除临时表 [buy]判断是否存在临时表,存在则删除[/buy] if OBJECT_ID('t ...
- 金蝶云星空BOS开发视频分享
https://vip.kingdee.com/school/implementCourseOnline
随机推荐
- 【我的第一个现实漏洞分析】 CVE-2017-17215 华为智能路由器HG532 漏洞分析笔记
0x00 基本信息 2017.11.27 Check Point团队报告华为 HG532 产品的远程命令执行漏洞(CVE-2017-17215),Mirai的升级版变种中已经使用该漏洞. 华为HG53 ...
- Pycharm中使用from appium import webdriver时报错:ModuleNotFoundError: No module named 'appium'
此时先检查一下有没有安装Appium-Python-Client,如果没有安装Appium-Python-Client就在控制台输入pip install Appium-Python-Client进行 ...
- 【Spring AOP】AOP的实现(三)
一.Spring 对AOP的支持 Spring中AOP代理由Spring的IOC容器负责生成.管理,其依赖关系也由IOC容器负责管理.因此,AOP代理可以直接使用容器中的其它bean实例作为目标,这种 ...
- 配置Hive 支持 JSON 存储
1.说明 hive默认使用分隔符如空格,分号,"|",制表符\t来格式化数据记录,对于复杂数据类型如json,nginx日志等,就没有办法拆分了,这时候需要更加强大的SerDe来处 ...
- [POI2011]Lightening Conductor(决策单调性)
好久没写过决策单调性了. 这题其实就是 $p_i=\lceil\max\limits_{j}(a_j-a_i+\sqrt{|i-j|})\rceil$. 拆成两边,先只考虑 $j<i$,然后反过 ...
- Linux性能优化实战学习笔记:第三十二讲
一.上节总结 专栏更新至今,四大基础模块的第三个模块——文件系统和磁盘 I/O 篇,我们就已经学完了.很开心你还没有掉队,仍然在积极学习思考和实践操作,并且热情地留言与讨论. 今天是性能优化的第四期. ...
- [LeetCode] 380. Insert Delete GetRandom O(1) 常数时间内插入删除和获得随机数
Design a data structure that supports all following operations in average O(1) time. insert(val): In ...
- Ubuntu18.04开机挂载硬盘
一.查看磁盘信息 fstab文件的格式如上,其中: 1.设备文件名称是指磁盘或分区的文件名称,也可以使用label或uuid.UUID可以通过"sudo blkid"命令 ...
- [比赛题解]CWOI2019-1
[比赛题解]CWOI2019-1 比赛日期:2019.10.12 T1 一道神仙DP题. 我们考虑\(dp[i][j][k]\)表示最后\(i\)位数,\(i-1\)位都是9,最后一位为\(j\),最 ...
- 【redis】分布式锁实现,与分布式定时任务
如果你还不知道redis的基本命令与基本使用方法,请看 [redis]redis基础命令学习集合 写在前面 redis辣么多数据结构,这么多命令,具体一点,都可以应用在什么场景呢?用来解决什么具体的问 ...