对一些需求变化多样的产品而言,做好可变性设计是非常重要的。国外做得好的有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元模型分析的更多相关文章

  1. 金蝶BOS

    1, 金蝶BOS 金蝶BOS是一个开放的集成与应用平台,是金蝶企业管理软件解决方案.合作伙伴解决方案以及客户定制应用的技术平台.能够为企业灵活而迅速的设计.构建.实施和执行一套随需应变的企业管理软件系 ...

  2. k3 Bos开发百问百答

              K/3 BOS开发百问百答   (版本:V1.1)           K3产品市场部       目录 一.基础资料篇__ 1 [摘要]bos基础资料的显示问题_ 1 [摘要]单 ...

  3. 金蝶EAS——登录某个数据中心门户时报错“获取用户相关信息失败!请查看服务器日志,并确认是否数据库设置错误或者版本不匹配!”

    登录服务器后台,查看金蝶BOS控制台,选择数据中心中的目标数据中心,点击测试连接,提示报错如下: 说明是数据库问题,需要登录数据库服务器去检查数据库.详细操作见:

  4. Enterprise Solution 开源项目资源汇总 Visual Studio Online 源代码托管 企业管理软件开发框架

    Enterprise Solution 是一套管理软件开发框架,在这个框架基础上开发出一套企业资源计划系统Enterprise Edition. 现将Enterprise Solution开发过程中遇 ...

  5. Enterprise Solution 企业管理软件开发框架

    Enterprise Solution 开源项目资源汇总 Visual Studio Online 源代码托管 企业管理软件开发框架 Enterprise Solution 是一套管理软件开发框架,在 ...

  6. 金蝶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新建寄 ...

  7. 金蝶EAS BOS上如何打补丁

    主要分为2种方式,直接通过BOS管理平台,去安装补丁 另一种方式就是通过本地zip压缩包去打补丁,以我的安装目录包为例路径为:E:\kingdee\kingserver\eas\admin\patch ...

  8. 用SQL查询分析实现类似金蝶K3的收发存明细表

    使用SQL查询分析实现类收发存的报表,原始需求在 另外一篇文章 的第四部分.下图是实现需求. 一.准备 删除临时表 [buy]判断是否存在临时表,存在则删除[/buy] if OBJECT_ID('t ...

  9. 金蝶云星空BOS开发视频分享

    https://vip.kingdee.com/school/implementCourseOnline

随机推荐

  1. Java虚拟机所管理的内存,包含的运行时数据区域?

    运行时数据区域 线程私有(随用户线程的启动和结束而建立和销毁)或所有线程共享(随虚拟机进程的启动而存在) 抛出的异常 备注 程序计数器(Program Counter Register) 线程私有 唯 ...

  2. window-Mysql下载安装

    1.Mysql安装 1.Mysql官网下载安装包 Mysql官网 2.Mysql绿色安装 安装指导

  3. SLAM:暑期学校

    专门开个(大)坑: RGB-D SLAM:姜翰青,商汤 视觉SLAM:章国锋,浙大CAD&CG国家重点实验室

  4. 每天一道Rust-LeetCode(2019-06-05)

    每天一道Rust-LeetCode(2019-06-05) 最长回文子串 坚持每天一道题,刷题学习Rust. 接续昨天,最长会问字符串的另一种解法 题目描述 解题过程 //leetcode最快解法 / ...

  5. koa中的路由

    原生路由 网站一般都有多个页面.通过ctx.request.path可以获取用户请求的路径,由此实现简单的路由. const main = ctx => { if (ctx.request.pa ...

  6. bdd框架之lettuce

    安装 执行 :lettuce  (需要在特定的文件夹下) 结果指定到文件中

  7. React的一些原则

    做React的一些原则, ① 我的交互,总是改变的是数据,而不是视图,视图是React来负责更新的,数据驱动开发,我永远都在改数据而不是控制视图 这个图的做法是先获取list数据,再等用户点击 查看详 ...

  8. Linux学习笔记-第7天 - 编程还是要多写多练

    编程思路很重要,多写是要熟悉命令用法,多练不只是要熟悉语句常用在什么环境,更要在其基础上,尝试更多的写法.

  9. [RN] React-Native中Array渲染的优化

    React-Native中Array渲染的优化 例如用Push加进去的数据: constructor(props){    super(props);    this.state = {      b ...

  10. [THUPC2018]生生不息(???)

    SB题,写来放松身心. 首先 $n,m\le 5$,这是可以打表的. 本地怎么对于一个 $n,m$ 求答案?此时虽然复杂度不需要太优,但是还是得够快. 一个想法是枚举每个初始状态,不停模拟.因为总状态 ...