金蝶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
随机推荐
- 201871010109-胡欢欢《面向对象程序设计(java)》第八周学习总结
博文正文开头:(2分) 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/ ...
- 201871010101-陈来弟《面向对象程序设计(Java)》第十一周学习总结
201871010101-陈来弟<面向对象程序设计(Java)>第十一周学习总结 实验九 泛型程序设计技术 实验时间 2019-11-8 第一部分:理论基础知识 1.什么是泛型类 泛型是 ...
- 201871010132--张潇潇--《面向对象程序设计(java)》第十六周学习总结
博文正文开头格式:(2分) 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh 这个作业的要求在哪里 https://www.cnblogs.c ...
- cookie 用户认证
客户端浏览器上的一个文件 可认为是键值对集合 基于浏览器的功能 可以实现一个用户验证的功能 因为要在页面上显示当前用户的信息 修改 写index urls 运行直接输入index时 会自动进入lo ...
- LeetCode 21. Merge Two Sorted Lists合并两个有序链表 (C++)
题目: Merge two sorted linked lists and return it as a new list. The new list should be made by splici ...
- Computer Network Chapter4 solution
1.以太网使用曼彻斯特编码,效率50% 2.侦听信道时间:来回延时时间(10usec):发送数据(25.6usec): 3.单向时延t=S(距离)/V(电缆传输速率):最小帧长=2*t*C(数据传输速 ...
- MySQL实战45讲学习笔记:第二十讲
一.引子 在上一篇文章最后,我给你留了一个关于加锁规则的问题.今天,我们就从这个问题说起吧. 为了便于说明问题,这一篇文章,我们就先使用一个小一点儿的表.建表和初始化语句如下(为了便于本期的例子说明, ...
- DP问题(2) : hdu 1421
题目转自hdu 1421,题目传送门 题目大意: 给你n个物品,你要搬走2*k个(也就是搬k次) 每次搬需要花费v,v=(ai-aj)2 (i表示左手拿的物品重量,j表示右手拿的物品的重量) 要求所有 ...
- Linux系统运维笔记(6),CentOS 7.6双网卡路由配置
Linux系统运维笔记(6),CentOS 7.6双网卡路由配置. 一,先确认系统版本: [root@localhost ~]# cat /etc/redhat-releaseCentOS Linux ...
- 第21课 shared_ptr共享型智能指针
一. shared_ptr的基本用法 (一)与unique_ptr的比较 比较 shared_ptr unique_ptr 备注 初始化 ①shared_ptr<T> sp; sp.res ...