在商业产品开发中,如何有效的控制同一产品的多个衍生版本是一个非常重要的问题。客户的需求是多样化,差异化的。这些差异有些很小,可以通过参数配置,资源装载,skin切换等方式加以吸收,而有些则要求对界面布局和程序逻辑等作出较大调整。Witrix开发平台在系统基础架构方面为程序的客户化提供了有力的支持。
1. 多版本控制的关键首先在于系统良好的模块划分。因此Witrix平台的beans,auth-map(权限归约规则)等配置文件格式都支持import/include等基础的分解策略,字符串资源和错误码映射等支持多重定义文件,而对于sql.xml(外部sql语句定义), meta.xml, biz.xml, hbm.xml等配置文件采用分模块动态装载机制。
2. 在Witrix系统中定义了一个特殊的custom目录,规定了一般性的覆盖规则:custom目录作为系统根目录的影子目录,如果custom目录下存在同名文件,则优先装载custom目录下的文件。例如,如果custom目录下存在/_config/my/my.biz.xml文件,同时在根目录下也存在/_config/my/my.biz.xml文件, 则实际装载的是custom目录下的实现。这里的一个关键在于只有meta.xml(元数据),biz.xml(BizFlow描述文件),.lib.xml(tpl模板库)等具有一定完整性的文件才支持custom机制,而并不是所有资源都采用custom机制。如果每一个tpl文件,css文件,js文件等都优先从custom目录下装载,则很快就会出现循环引用,相对路径计算将会变得非常混乱,更重要的是我们将无法定义资源删除语义。
3. 元数据文件,BizFlow描述文件,PageFlow描述文件等都支持复杂的extends机制,使得我们在扩展时只需要对于系统差异部分进行描述,而不是大段拷贝代码。
4. tpl模板库和sql-map机制等采用的是追加覆盖策略。例如custom目录下的ui.xml标签库文件并不是直接覆盖系统根目录下的ui.xml文件,而是按照标签名进行细粒度的覆盖。系统编译时会自动检查覆盖标签的所有参数要求和原标签相兼容(例如允许增加参数而不允许减少参数),确保所有引用到原标签的tpl代码仍然有效。实际上整个witrix平台多版本扩展机制的一个设计目标就是确保平台主系统向各个分支产品的单向信息流动。在具体的表现上就是我们随时可以拷贝平台主系统覆盖到分支产品的相应目录,所有扩展实现与主系统实现保持分离状态。当然为了保持设计的弹性,系统中也定义了开关参数用来有选择的跳过一致性检查。
分享到:
相关推荐
多版本支持-随着版本的更多版本可用,可以添加它们 支持的客户端版本 我的世界基岩 我的世界基岩v1.16.0 我的世界基岩v1.16.2 我的世界基岩v1.16.3 我的世界基岩v1.16.100 我的世界教育 我的世界教育v1.14.31 ...
unidac是一个功能强大的支持多数据库的引擎,可以安装在Delphi, Delphi for .NET, and C++Builder 。unidac的目的是帮助程序员更快的开发跨数据库应用软件。 unidac是一个完整的标准数据库连接解决方案,可以支持 ...
**正文** libopencore-amr 是一个开源的音频编码解码库,专注于支持AMR (Adaptive Multi-Rate) 音频格式。AMR 是一种广泛用于移动通信中...它的多版本支持和良好的平台兼容性,使得它成为开发高效音频应用的理想选择。
虚拟机注册机支持多版本的虚拟机 虚拟机注册机支持多版本的虚拟机 虚拟机注册机支持多版本的虚拟机
标题提到的"多版本protobuf",意味着这里包含了不同版本的protoc.exe,这是protobuf的编译器,用于将.proto文件(protobuf的接口定义语言)转换为相应编程语言的源代码。protoc.exe有多个版本,分别对应proto、proto...
CUDA详细参数(算力+CUDA支持版本) CUDA是NVIDIA推出的集成技术,允许用户利用NVIDIA的GPU进行图像处理之外的运算。通过这个技术,用户可以将自家的CUDA C语言编译成PTX中间语言或是特定NVIDIA GPU架构的机器代码...
亲测可用,win7以后微软不在维护,很多网站下载的版本都不支持win7了,该资源收藏了win7能支持的node最新版本
Vs番茄小助手,支持13,15,17,19,22等多个版本Vs番茄小助手,支持13,15,17,19,22等多个版本Vs番茄小助手,支持13,15,17,19,22等多个版本Vs番茄小助手,支持13,15,17,19,22等多个版本Vs番茄小助手,...
VS Code X86版本在Windows 7上运行时,可以享受到诸如语法高亮、代码智能提示、Git集成、内置终端、多语言支持以及丰富的扩展库等核心功能。同时,它还支持调试多种编程语言,如JavaScript、Python、C++、Java等,...
IE多版本共存,支持多个版本的IE,可以同时安装5.0-8.0的IE浏览器,便于测试开发
CEF3 版本 3071.1649 windows64 最后一个完美支持MFC的版本
总的来说,WPS 2019对VBA 7.1的支持,不仅为用户带来了更强大的编程能力,也使得WPS Office在与Microsoft Office的竞争中具备了更多优势。无论你是初次接触VBA的新手,还是已经熟悉VBA的老手,都可以在WPS 2019中...
标题"CPU支持的AVX版本检测代码"指的是一个程序,这个程序可以检测运行它的计算机CPU是否支持AVX以及支持的具体版本。AVX为处理器提供了更宽的寄存器和更强大的运算能力,包括双倍宽度的浮点运算和更多的整数操作。...
最常使用的ojdbc14.jar有多个版本,classes12.jar有多个版本你了解吗? ojdbc7.jar:支持JDK7、JDK8,支持JDBC 4.0,新的java.sql.SQLXML类型没有被支持。 ojdbc6.jar:支持JDK6,支持JDBC 4.0,新的java.sql.SQLXML...
- 在3.10版本中,POI加强了对Excel图表的处理,支持更多类型的图表和自定义设置。 - 提高了处理XML Spreadsheet的效率,优化了读取和写入速度。 - 支持了新的Excel功能,如条件格式化、数据验证和表格样式。 - ...
CEF3 版本 3071.1649 windows32 最后一个完美支持MFC的版本
- **DevExpress VCL 2011 VOL1.6 至 VOL2.6**:这一系列版本主要支持Delphi XE2,提供了更多的控件和功能改进。 - **DevExpress VCL 2012 VOL1.5 至 VOL2.6**:这些版本增加了对Delphi XE3的支持,并进一步扩展了...