泽元软件:基于插件的松耦合体系(图)
优采云 发布时间: 2021-05-26 02:34泽元软件:基于插件的松耦合体系(图)
1.基于插件的松耦合系统
在软件行业中存在一个普遍现象:软件公司,尤其是基于产品的软件公司,倾向于抵制对其产品功能的定制更改。这种现象的出现并非全部是由于修改本身的工作量(在大多数情况下,修改的工作量实际上很小),而是这种修改要求软件公司为每个客户维护一个产品版本库分支。将来,对该客户的任何响应都将基于此分支,这与主版本同时发展并不容易,这将带来相对较大的管理成本。特别是熟悉该分支机构的关键人员离开后,客户的服务水平将急剧下降。
针对此问题,Zeyuan Software构建了一套插件系统,并为此系统提供了基于Eclipse的ZDeveloper开发工具,以便可以通过插件插件实现客户的个性化需求。特别是,ZDeveloper允许通过声明插件中的扩展点和项来覆盖和扩展Z cms中的原创功能,而不会影响产品本身的升级。这样,每个项目仅需要维护一个或几个该项目独有的插件的代码。大大减少了项目存储库中的代码量,并大大提高了代码的可读性和可维护性。修改产品的核心代码,因此您只需要关注与测试项目相关的插件,并且测试的工作量也大大减少,从而更好地考虑了个性化实现和管理费用。
Z cms中的插件与Eclipse中的插件非常相似。它是由.plugin文件描述的一组插件,旨在扩展其他插件的功能,并可以为其他插件提供扩展点和服务,请遵循标准化的业务逻辑及其页面(可以独立进行)部署,启用和禁用。插件收录以下内容:
菜单,扩展服务,扩展点,扩展项目和扩展行为由插件的.plugin配置文件描述。 JAVA代码,JSP页面和国际化文件是实际的磁盘文件,它们的存储由.plugin文件位置记录。
2.二次开发工具
Z cms通过基于Eclipse的ZDeveloper(Zeyuan开发平台)提供辅助开发支持。通过ZDeveloper,Z cms允许专业的JAVA开发人员为Z cms创建插件,并扩展Z cms的UI界面,视图,菜单,定时任务,内容类型,交互功能,模板类型和模板通过插件标记,并允许系统干预各种行为,包括权限,工作流以及通过扩展点和扩展项进行的全文检索。 ZDeveloper还提供数据库模型设计,数据库模型自动仓库,数据库反向建模,SQL语句生成,CURD文件创建和全面的国际化功能,从而实现了业界最高水平的内容管理二次开发支持。
3.菜单扩展
在Z cms中,所有功能菜单均由插件提供。系统启动时,框架将读取所有.plugin文件并在菜单管理器中注册菜单。如果部署并启用了插件,则会显示与此插件相关的菜单,否则该菜单会消失。
Z cms二级开发工程师可以通过在插件编辑器的“菜单”选项卡中添加菜单来向Z cms添加新功能菜单。
图片:为Z cms添加菜单
4.扩展服务和扩展项目
当某个插件实现的功能需要依赖于此插件定义的某个接口的子类集时,有必要定义扩展服务。扩展服务是一个插件配置项,用于声明此插件的扩展项注册条目;扩展项目也是插件配置项目,用于声明向其注册了扩展服务的扩展项目。扩展程序指定的类必须实现扩展程序服务指定的接口。
例如:内容核心插件需要管理所有模板标签,但是内容核心插件不知道其他插件实现了什么标签,因此它需要提供模板标签扩展服务。其他插件可以为其服务注册其自己的模板标签扩展实现,从而通知内容核心在模板编译,执行和标签显示中使用此标签。
扩展的服务配置界面:
扩展的配置界面:
5.扩展点和扩展行为
为了使插件的JAVA类或JSP页面运行到指定的行数,可以执行其他插件中的指定程序逻辑(通常是附加的数据校验和处理逻辑),并可以扩展点需要定义。
扩展点是一个插件配置项,用于声明此插件的扩展行为注册条目。当程序执行到扩展点所在的行时,它将找到注册到扩展点的所有扩展行为,并执行扩展行为指定的所有类。扩展项也是一个插件配置项,用于声明向哪个扩展点注册扩展行为,并指定在调用扩展点时要执行的类。
扩展点类型是SWING中的一个事件,扩展行为类似于侦听器。
例如:文章编辑插件将扩展点添加到文章中保存的JAVA方法中,其他插件可以向该扩展点注册扩展方法以实现文章保存前的预检查信息。文明词汇等
扩展点配置界面:
扩展行为配置界面: