<a name="imPZx"></a>
Foxnic-Web —— 模块的多版本支持
<a name="Y0wob"></a>
概述
站在产品角度,如何满足不同客户的需求定制?如何积累丰富的业务功能,尽可能复用避免重复开发?针对最近实施的几个客户,Foxnic-Web 为模块增加了多版本特性,在一定程度上解决了甲方需求的多样性和差异性。<br /> Foxnic-Web 模块多版本主要是从 UI 界面和 Service 层着手。
本文中的示例代码均可在 https://gitee.com/LeeFJ/foxnic-samples 项目中找到。
<a name="zm293"></a>
UI界面多版本支持
为了实现UI界面多版本,我们首先要在模块页面内新建一个目录,如图所示:<br /><br /> 第一步:建立目录与文件<br /> 如图所示,profile 目录下包含 advance 目录和另外5个js以及html文件,这5个文件是模式实现。现在为了实现高级版本在 profile 目录下创建了 advance 目录,并把 UI 代码放置其中。需要注意的是,页面入库文件名需保持一致,如菜单入口页面是 profile_list.html 那么在 advance 目录下也同样需要一个同名文件 profile_list.html。<br /> 第二步:配置菜单<br /> 版本目录建好后,需要将目录配置到菜单,如图所示。进入对应的菜单页面,点击 “版本管理”按钮,维护一个版本。<br />
<br />
<br />维护完毕,重新登录 即可。这时,我们可以看到两个版本可以切换使用了<br />
<br />因为在项目实 施时,用户只会固定使用一个特定的版本,所以版本切换的菜单受权限是需要控制的,需要勾选 “菜单管理”下的 “功能版本切换(Fork)”权限。<br />
<a name="QBw3r"></a>
UI界面多版本的代码生成
例如,我们要为数据字典管理生成另外一个版本的代码,此时,我们已经实现了默认的代码生成类 SysDictConfig ,新版本的代码实现类继承 SysDictConfig 类,并调用 context.setViewImplDir("tree") 指定界面生成的目录名即可,如下代码所示:
1public class SysDictConfig_Tree extends SysDictConfig { 2 public SysDictConfig_Tree() { 3 super(); 4 // 指定实现的目录名称 5 this.context.setViewImplDir("tree"); 6 } 7 @Override 8 public void configSearch(ViewOptions view, SearchAreaOptions search) { 9 search.inputLayout(new Object[]{ 10 SYS_DICT.NAME,SYS_DICT.CODE 11 }); 12 } 13}
执行后生成将在 tree 目录下生成代码,如图所示:<br />
<a name="qVLpO"></a>
UI界面版本规则
事实上,在项目实施过程中,我们只需要锁定一个版本,或按登录人不同的身份使用不同的界面,我们在系统参数进行配置即可。目前支持按账户、租户指定不同的界面。当然也可以逐步支持到按角色、部门、岗位、业务角色等不同的身份使用不同的界面。<br /> 参数配置界面如图所示:<br />
<a name="YYdcw"></a>
Service多版本支持
所谓 Service 的多版本,即一个 Service 有多个实现,不同的场合使用不同的版本,如图所示:<br /><br /> 在这个示例中,我们 对 IDictService 接口有4个实现。通过参数配置,指定默认实现为 DictServiceImplForChinaYIE 类,Service 实现类的配置规则和 UI 类似,可按不同的身份使用不同的 Service 实现。如图所示:<br />
<a name="GTaFG"></a>
Service多版本的代码生成
多版本 Service 的代码生成比较简单,在 configService 方法中执行 serviceImpl 配置方法即可。由代码生成工具自动生成这些其它版本的实现类。
1@Override 2public void configService(ServiceOptions service) { 3 //开启多服务实现的支持 4 service.serviceImpl("ForCLPS","实现CLPS客户EAM定制逻辑"); 5 service.serviceImpl("ForChinaYIE","实现 ChinaYIE 客户定制逻辑"); 6 service.serviceImpl("ForAUX","实现奥克斯 PMS 项目定制逻辑"); 7}
<a name="Umww6"></a>
小结
本小节主要介绍了 Foxnic-Web 的多版本特性,包括UI界面的多版本和Service的多版本。 <a name="VZBg5"></a>
相关项目
https://gitee.com/LeeFJ/foxnic<br /> https://gitee.com/LeeFJ/foxnic-web<br /> https://gitee.com/lank/eam<br /> https://gitee.com/LeeFJ/foxnic-samples <a name="HPU3W"></a>
