金蝶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
随机推荐
- VC 静态库与动态库(一)介绍
定义: 静态库与动态库都属于库,库从本质上来说就是种代码重用的方式. 把需要重复使用的公共代码抽离出来,生成库文件,外部程序只需包含库文件,调用相关接口即可 静态库与动态库区别: 静态库:需要库的.h ...
- redis 在 windows 中的安装
redis 在 windows 中的安装 redis 官方并没有提供 redis 的 windows 版本.但是微软提供了 redis 的 windows 版本.有2.8和3.0版本.3.0版本支持集 ...
- 洛谷 U87561 魔法月饼
洛谷 U87561 魔法月饼 洛谷传送门 题目背景 \(9102\)年的中秋节注定与往年不同...因为在\(9102\)年的中秋节前夕,\(Seaway\)被告知今年的中秋节要新出一款月饼--魔法月饼 ...
- VIJOS-P1625 精卫填海
JDOJ 1587 VIJOS-P1625 精卫填海 https://neooj.com/oldoj/problem.php?id=1587 洛谷 P1510 精卫填海 https://www.luo ...
- python cookbook3
1.算GC含量 def validate_base_sequence(base_sequence, RNAflag = False): #判断序列是否只含有A.T.G.C.U seq = base_s ...
- day 25
Nothing is more dangerous than discontinued labor. 没有什么比半途而废更危险.
- Linux性能优化实战学习笔记:第五十七讲
一.上节回顾 上一节,我带你一起梳理了常见的性能优化思路,先简单回顾一下.我们可以从系统和应用程序两个角度,来进行性能优化. 从系统的角度来说,主要是对 CPU.内存.网络.磁盘 I/O 以及内核软件 ...
- Deepin (Linux Debian)使用日记
(现在Deepin使用了debian的stable源,如果求新,推荐使用排行榜前三的Linux发行版——> Manjaro) 修复开启混合显卡驱动后,屏幕泛白偏灰问题“: https://blo ...
- 第04组 Alpha冲刺(2/6)
队名:new game 组长博客:戳 作业博客:戳 组员情况 鲍子涵(队长) 燃尽图 过去两天完成了哪些任务 整理了一下之前敲的代码 实现了一些新的功能 接下来的计划 实现更多的功能 还剩下哪些任务 ...
- TJOI 2015 概率论(生成函数)
题意 求一棵随机生成的有根二叉树(节点无标号,各种不同构的情况随机出现)叶子结点个数的期望. 思路 用生成函数做是个好题. 我们考虑设 \(n\) 个节点,所有不同构二叉树叶子结点的总和为 ...