1 使用场景

在满足不同参数或条件时对元数据进行动态重载从而实现页面字段或参数等差异化展示的效果,范围包括:列表、编辑页面及详情页面。
比如:列表页面选择不同查询参数,使列表页面字段名称的显示有所不同、或者显示不同的列;

业务场景举例:
税务部门的日常服务对象是企业,企业信息数据对象包括很多属性(如:注册地址、注册资本、投资总额、行业、法人、办税人等等几十种属性),税务部门日常工作是需要核实企业这些信息,会发起不同类型的工作任务,在不同类型的任务时,表单显示及处理的企业信息字段不一样,即需要根据任务类型,表单字段动态。

2 重载原理说明

2.1 动态重载机制

传统的重载功能是,在模板设计时对所选元数据进行重载配置,目的是让一个元数据可以应用到多个模板中。属于模板设计阶段重载元数据。
动态重载,也称为实时重载,是在模板运行时,进行二次重载元数据,属于模板运行阶段重载元数据,因此应用场景会更灵活。

简要说明:
1)设计者在模版上配置动态重载依据
一般是指定

  • 一个元数据(存储了需动态重载的信息)
  • 对应的查询条件(模板运行时,根据查询条件找到一条仅且一条动态重载信息记录)
  • 对应的重载json串字段(告诉模板动态重载配置信息取自上面记录的哪个字段,即存储动态配置信息的字段)

2)模板执行时,查询并获取到动态重载信息并二次重载模板
用户在访问模板页面时,后端根据查询依据获取重载的json串,在反序列化之后实现重载
当无法读取对应的结构或者读取出错时,不执行重载

2.2 重载配置表

上述介绍了基本原理。
在此之前,要使用动态重载需先建立一张存储重载业务与重载配置json串对应表,下表为重载配置样表,其它字段根据业务自行删减。

字段名称(任意) 字段类型 字段长度 描述
id 不限 不限 主键
business_id varchar/int 不限 用于查询过滤的条件字段
override_content text
重载内容,json格式

2.3重载json结构

当前支持的重载结构和属性如下。更多参考 重载支持实时从数据库读取的机制

{
    "OverrideFields": [//重载字段列表
        {
            "NickName": "field1",//字段标识
            "DisplayName": "展示名称1",//显示名称
      "Edit": {//编辑配置
                "ReadOnly": false//控件是否只读
            },"Permission": {//字段权限
                "Readable": true,
                "Writeable": true,
                "AcceptQueryString": true,
                "SendToQueryString": true,
        "Importable":false//是否可导入
            },
        }, {
            "NickName": "field2",
      "DisplayName": "展示名称1"//显示名称
        }
    ],
    "DeleteFields": [//删除字段列表
        "field1", "field2"
    ],
    "OverrideSearchFields": [//重载查询参数列表
        {
            "NickName": "field1",//字段标识
            "DisplayName": "展示名称1"//显示名称

        }, {
            "NickName": "field2",
      "DisplayName": "展示名称1"//显示名称
        }
    ],
    "DeleteSearchFields": [//删除查询参数列表
        "field1", "field2"
    ]
}

注意:这应该是这个动态重载功能使用的最大障碍,构造JSON格式的动态重载信息。当然,若所有的动态重载情况是固定的,那手动编写JSON,也不难。难在动态重载信息,也需要动态构造的应用场景下。

3 配置说明

结合一个具体案例说明下重载的配置,比如我们要对某员工信息表单进行动态重载,重载内容为列表的某个字段“直属领导”(direct_superior)在不同部门时需要重载显示为不同的名称
首先我们可以参照上方的样表创建一个重载配置表,结合我们的案例业务编码可以使用对应部门编码对“直属领导”(direct_superior)字段进行字段显示名称的重载,大致如下。


为上述重载配置表创建相应的元数据,然后在需要动态重载的表单中进行动态重载的配置,如下图所示。

  • 元数据选择重载信息配置表元数据
  • 过滤条件可以使用表达式自定义,此处根据应用场景过滤结果一般需要唯一,需要读取相应的某一个配置信息json结构
  • 选择存储字段,存储字段即json结构存储字段
  • 如上图所示,结合我们的案例,过滤条件等于业务编码值为列表的查询参数“部门”,即根据部门选择不同动态重载元数据加载不同的字段内容。

如图,产品经理组对应部门编号为 16,根据重载配置表的json结构,将“直属领导”字段显示名称重载为“总监”显示,相应新增、修改、详情页面的字段也同样会进行重载。

变更查询参数部门为“Java开发组”对应部门编号为17则根据重载配置表所配置的将“直属领导”重载为“老板”,如下图所示,实现根据条件进行元数据的动态重载。

4 扩展阅读

重载支持实时从数据库读取的机制

作者:Eric  创建时间:2023-06-15 10:39
最后编辑:Eric  更新时间:2025-04-24 13:55