在MetaModelEngine:元模型引擎开发思路中介绍了对OpenExpressApp的建模支持将参考MetaEdit+,本篇考虑模型库的存储管理问题。
模型仓库管理
在Mendix和MetaEdit+中都存在一个元模型或对象资源仓储库,应用建模时都是读取这个仓储库。MetaModelEngine在OpenExpressApp中的应用模式也是基于这种仓储库来进行统一管理。
The case repository More than another database application
The model repository - More than just xml under version control
元模型和应用模型分离
- 应用模型是基于元模型定义的模型库对象来生成特定应用的模型实例,由一个元模型可以生成多个应用模型。
- 元模型和应用模型分别独立存储,元模型被应用模型引用。
模型数据和展现分离
- 考虑到一个模型可以支持图形、表格、矩阵等多种展现形式,或者同一种展现形式支持保持多份视图,所以决定在序列化时将模型和图形分离开来。
- 这样分离保存也有利于后期考虑的界面生成器,模型就是业务对象,展现就是图形UI。
使用XML存储格式
- 考虑XML是现在较为普遍的一种描述方式,MetaEdit+和VS DSL、以及我以前做的报表引擎均采用XML作为存储格式,在MetaModelEngine中我们也采用XML来存储,这样做也利于版本管理。
- 有两种方式来保存域属性,一种是作为XML属性,另一种是作为XML元素,我认为第一种可读性更好些,所以将把域属性作为XML元素来存储。如果一个域属性具有默认值,并且当前值就为默认值时,将不序列化。
- 元对象和应用对象均使用Guid标识,这个标识也作为引用参数来使用
- XML根节点增加一个Version版本说明,以便后期根据版本做向后兼容
- 目前不支持自动以序列化
- 具体对象存储内容将在后面对原模型分析中介绍......
OpenExpressApp let business engineers to develop applications
欢迎转载,转载请注明:转载自周金根 [ http://zhoujg.cnblogs.com/ ]