Foxnic-Web —— 模块的多版本支持

237 阅读3分钟

Foxnic-Web —— 模块的多版本支持

概述

  站在产品角度,如何满足不同客户的需求定制?如何积累丰富的业务功能,尽可能复用避免重复开发?针对最近实施的几个客户,Foxnic-Web 为模块增加了多版本特性,在一定程度上解决了甲方需求的多样性和差异性。
  Foxnic-Web 模块多版本主要是从 UI 界面和 Service 层着手。

  本文中的示例代码均可在 gitee.com/LeeFJ/foxni… 项目中找到。

UI界面多版本支持

  为了实现UI界面多版本,我们首先要在模块页面内新建一个目录,如图所示:
image.png
  第一步:建立目录与文件
  如图所示,profile 目录下包含 advance 目录和另外5个js以及html文件,这5个文件是模式实现。现在为了实现高级版本在 profile 目录下创建了 advance 目录,并把 UI 代码放置其中。需要注意的是,页面入库文件名需保持一致,如菜单入口页面是 profile_list.html 那么在 advance 目录下也同样需要一个同名文件 profile_list.html。
  第二步:配置菜单
  版本目录建好后,需要将目录配置到菜单,如图所示。进入对应的菜单页面,点击 “版本管理”按钮,维护一个版本。
image.png
image.png
维护完毕,重新登录  即可。这时,我们可以看到两个版本可以切换使用了
111.gif
因为在项目实  施时,用户只会固定使用一个特定的版本,所以版本切换的菜单受权限是需要控制的,需要勾选 “菜单管理”下的 “功能版本切换(Fork)”权限。
image.png

UI界面多版本的代码生成

  例如,我们要为数据字典管理生成另外一个版本的代码,此时,我们已经实现了默认的代码生成类 SysDictConfig ,新版本的代码实现类继承 SysDictConfig 类,并调用 context.setViewImplDir("tree") 指定界面生成的目录名即可,如下代码所示:

public class SysDictConfig_Tree extends SysDictConfig {
    public SysDictConfig_Tree() {
        super();
        // 指定实现的目录名称
        this.context.setViewImplDir("tree");
    }
    @Override
    public void configSearch(ViewOptions view, SearchAreaOptions search) {
        search.inputLayout(new Object[]{
            SYS_DICT.NAME,SYS_DICT.CODE
        });
    }
}

  执行后生成将在 tree 目录下生成代码,如图所示:
image.png

UI界面版本规则

  事实上,在项目实施过程中,我们只需要锁定一个版本,或按登录人不同的身份使用不同的界面,我们在系统参数进行配置即可。目前支持按账户、租户指定不同的界面。当然也可以逐步支持到按角色、部门、岗位、业务角色等不同的身份使用不同的界面。
  参数配置界面如图所示:
image.png

Service多版本支持

  所谓 Service 的多版本,即一个 Service 有多个实现,不同的场合使用不同的版本,如图所示:
image.png
  在这个示例中,我们  对 IDictService 接口有4个实现。通过参数配置,指定默认实现为 DictServiceImplForChinaYIE 类,Service 实现类的配置规则和 UI 类似,可按不同的身份使用不同的 Service 实现。如图所示:
image.png

Service多版本的代码生成

  多版本 Service 的代码生成比较简单,在 configService 方法中执行 serviceImpl 配置方法即可。由代码生成工具自动生成这些其它版本的实现类。

@Override
public void configService(ServiceOptions service) {
	//开启多服务实现的支持
    service.serviceImpl("ForCLPS","实现CLPS客户EAM定制逻辑");
	service.serviceImpl("ForChinaYIE","实现 ChinaYIE 客户定制逻辑");
	service.serviceImpl("ForAUX","实现奥克斯 PMS 项目定制逻辑");
}

小结

  本小节主要介绍了 Foxnic-Web 的多版本特性,包括UI界面的多版本和Service的多版本。

相关项目

  gitee.com/LeeFJ/foxni…
  gitee.com/LeeFJ/foxni…
  gitee.com/lank/eam
  gitee.com/LeeFJ/foxni…

官方文档

  foxnicweb.com/docs/doc.ht…