XAF之深入理解Application Model

开发框架DevExpress XAF v24.2产品路线图预览——增强跨平台性 开发框架DevExpress XAF v24.2在今年年末更新,今天我们一起来抢先预览一波新功能,欢迎下载组件体验~ 阅读详情

 一.鸟瞰Application Model

            XAF的两大特色是1.自动生成UI;2.使用相同的业务逻辑产生不同平台的程序,而这两大特色都归功于Application Model才能完成。首先,XAF扫描程序代码,提取声明的类做出分析后创建数据结构和用户接口。扫描分析的结果是创建中性的数据格式,使用该格式定义数据库结构和程序特性,才能跨平台地读取使用。这个中性格式的元数据就是Application Model,实际上Application Model就是使用XML语言写成的文本,自然能够很方便地分享和更改,所以就为XAF程序提供了极大的自定义自由度。可以在设计时利用它修改程序配置(设置),也可以在运行时修改。由于Application Model是用XML书写的,使用简单的文本编辑器就能够对程序做出更改,但XAF提供了模块编辑器Model Editor能够很方便地修改Application Model,如图1所示。当然,也可以在代码中修改,这也是本文探讨修改Application Model的主要方式。

图1 Application Model Editor

          Application Model将信息组织成树形结构,如图2所示。根节点是Application,根节点下有许多子节点,如图2中的ActionDesign, BOModel, CreatableItem, ImageSource, NavigationItems, ViewItems, View等等,每一个树中的节点都拥有一系列的属性,它们决定特定程序元素的特性。如果要对某类程序元素做出配置,则到对应节点下设置即可,如要配置导航栏,则展开NavigationItems节点,在其中做出适当的配置即可。


图2 Application Model(树形结构)

         下面简单介绍几个二级节点,如图3所示。


图3  Application Model主要节点

1.ActionDesign

       该节点下存放了程序中所有的Action的相关信息,其下的Actions节点存放了程序中所有Controller的包含的Action的定义,ActionToContainerMapping节点下是所有ActionContainer的信息,而Controllers节点下记录了所有的WindowController和ViewController,还有DisableReasons下存在了一些已声明的禁用某些UI元素的原因。

2.BOModel

      该节点下存放了所有的业务对象模型,包括XAF自带的XPO对象河我们自己定义的XPO对象。

3.NavigationItems

     该节点下存放了导航栏的项,通过对它进行设置可以改变导航栏的行为,该节点下的子节点可包含更多子节点,包含子节点的为导航分组,不包含的为导航项。

4.ViewItems

      该节点下存放了详细视图的UI元素,如PropertyEditors。

5.Views 

    该节点下存放了程序中全部视图,主要包括所有XPO对象的ListView, DetailView, LookupListView,以及DashboardView视图(图3中没有)。

     由此可见,Application Model包含了程序运行的大部分配置。经典的MVC架构的元素在这里都体现出来了,而据XAF开发团队的开发人员说,他们的确是读了MVC的基本经典著作后谋划开发的XAF,所以理解MVC架构的开发者应该很容易掌握XAF,不像我摸索地这么久,当然,这是题外话了。好了,既然XAF的配置信息都放在Application Model里了,那XAF程序是怎样使用Application Model来配置程序特性的呢,那就先要理解Application Model的分层结构了。

二. Application Model的层次结构

xaf项目集合(CRM,ERP,OA,SCM)源码 xaf项目集合(CRM,ERP,OA,SCM)源码,学习XAF值得一看 立即下载

相关推荐

XAF框架实现省市联动

本Demo主要XAf框架下实现国家省市实时联动。

SAP ABAP开发避坑:BAPI_MATVAL_PRICE_CHANGE调用报‘估价未维护’的完整解决流程

本文深入解析SAP ABAP开发中调用BAPI_MATVAL_PRICE_CHANGE函数时遇到的'估价未维护'错误,提供从基础配置检查到CKML_PRICE_SEND表维护的完整解决方案。通过实战案例和代码示例,帮助开发者快速定位问题并实现批量价格更新的自动化处理,提升开发效率。

weixin_28705087的博客 427

TOD和PPS精确时间同步技术

授时

u010783226的专栏 1万+

AutoLISP 学习 (一)

AutoLISP基本语法结构、语法 以括号组成表达式,左右括号一定要成对,单、双引号也要成对,例如: (defun c:hello() (princ "\nHello world!") (prin1) ) 表达式格式:(函数名 操作数 操作数 …),例如: (setq p1 (list 0 0)) (setq p2 (list 10 10)) (setq p3 (list 20 20)) ;;; CAD中画直线,经过p1 p2 p3 (command "LINE" p1 p2 p3 ""

m0_54575622的博客 2122

告别里程焦虑:手把手教你用MATLAB/Simulink仿真电动车AMT换挡规律(附代码)

本文详细介绍了如何使用MATLAB/Simulink仿真电动车AMT换挡规律,帮助解决里程焦虑问题。通过搭建完整的仿真系统,包括电机MAP图处理、Stateflow逻辑实现和动力性与经济性换挡曲线生成,优化电动车换挡策略以提升续航与性能。附带的代码示例和实用技巧使开发者能够快速上手并验证仿真结果。

weixin_26757925的博客 306

告别Godot默认编辑器:手把手教你用VSCode配置C#开发环境(附中文注释避坑指南)

本文详细介绍了如何将VSCode配置为Godot引擎的C#开发环境,提升游戏开发效率。从环境准备、扩展配置到解决中文编码问题,提供完整的避坑指南和高级调试技巧,帮助开发者充分利用VSCode的智能补全和调试功能,打造高效工作流。

weixin_30596023的博客 189

wsl2上运行带有Isaac Gym的程序报错: GPU Pipeline: disabled

显示GPU Pipeline:disabled,查找相关文档发现是WSL2目前不支持Isaac Gym,时,想要在wsl2上运行,最后报错如下。

2303_78660611的博客 957

YOLOv11 改进策略之 Conv 篇:基于 C2fC 与 RepC_SPELAN4 的性能跃迁教程

某工业质检场景中,采用本文改进模块的 YOLOv11 模型,对微小零件缺陷的检测准确率提升 22%;YOLOv10 提出的 C2fC 模块与 RepC_SPELAN4 结构,是针对特征融合与卷积效率的突破性设计,掌握它们,你就能让自己的 YOLOv11 模型在精度与速度的平衡上实现“质的飞跃”。别再让“模型精度不足”成为你的瓶颈——现在就动手修改代码,让你的 YOLOv11 模型在特征提取与检测效率上实现质的飞跃,用技术实力证明你的 AI 研发能力!中的卷积层为 RepC_SPELAN4。

m0_71589036的博客 97

069、PCIE属性字段:缓存、顺序与安全

上个月调试一块自研的PCIE采集卡,遇到了一个诡异的问题:主机通过DMA从设备读取图像数据,大部分帧正常,但偶尔会出现局部数据错位,像是缓存没刷干净。用逻辑分析仪抓链路层报文,发现TLP(事务层包)本身完好,但内存中的数据就是不对。排查三天后,终于锁定在设备端TLP的**属性字段(Attribute Field)**配置上——那几位看似不起眼的缓存、顺序控制位,差点让项目延期。今天我们就拆解PCIE事务头中的这个关键区域,看看它如何影响系统性能与数据安全。

z534437748的博客 50

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

上一篇: .NET中的三种Timer的区别和用法
下一篇: PS批量处理:转格式、压缩图片的方法
qjpcpu
博客等级 码龄15年 59粉丝 106原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值