字段映射系统

701 阅读3分钟

背景:

       业务流程冗长,涉及多个子系统,还可能存在和第三方外部系统交互,且业务逻辑经常性的变动;

       对于上述场景,业务流程往往涉及需要多个模块配合,模块之间交互涉及大量字段,每次新增业务逻辑或修改原有的业务逻辑时都涉及大量字段的映射和逻辑处理;

举例:

    一、保险投保系统

      业务流程:前端页面A-》前端后台B-》转发站C-》核心系统D-》第三方交互系统E;

其中 B与C进行交互时,B需要将原本字段按照规则映射为不同名称字段;C和D交互也需要同样操作;D和E外部系统交互时也需要进行映射操作;

同时其中还需要对字段做一些规则处理,有些规则通用,有些规则不通用,依赖具体外部接口;

  二、注册审核系统

    业务流程:前端页面A-》前端后台B-》核心系统C-》第三方交互系统或内部审核系统D;

其中B与C交互需要字段映射,C和D需要字段映射, 同时为了审核系统方便使用,在审核系统中配置审核任务时需要规定字段名称和C传递过来的参数名称一致;

代码:

//下面代码形式在各个系统中是非常常见的;
//字段映射$aInfo['country']=$bInfo['country_name'];$aInfo['name']=$bInfo['first_name'];$aInfo['last']=$bInfo['last_name'];$aInfo['sex']=$bInfo['gender'];$aInfo['birth']=$bInfo['user_birth'];

//处理字段逻辑function dealBirth($birthValue){   return date("Y-m-d",strtotime("+ 1 day",$birthValue);}//校验数据类型function checkType($value){  if(is_array($value){     return true;  }else{   return false;  }}

痛点:

  • 大量的字段映射操作重复代码冗长繁琐;

  • 添加新字段或修改原有老字段改动点多,改动点很大概率改不全,部分逻辑被遗漏,代码重新发布,;

  • 字段相关处理逻辑:_字段各种校验,类型检查_等无法复用;,后续相关统计很难着手;

  • 逻辑复杂,时间过长,人员变动导致字段含义丢失,字段逻辑维护难;

解决方案:

     针对上述问题可以构建一个字段映射平台,通过创建字段之间的映射关系,字段的类型校验,字段注释,字段处理逻辑;

     比如字段需要类型转化:可以在配置中添加相应的标示或者公共函数名称,这样在实际使用时直接调用相关公共函数或者根据标示做相关处理达到要求;

     针对请求量大的可以采用qconf等第三方组件将配置实时同步机器,避免网络io,量小的直接数据库查询即可;

成本:

  • 需要构建一个字段映射配置平台,根据使用场景其逻辑较简单;

  • 对于新系统代码改造成本忽略;对于老系统,增加数据解析和转化,改造成本和风险都可控;

收益:

  • 新增字段可减少相关模块上线次数,比如保险投保系统,增加映射后从B-》C-》D-》E只要是字段处理逻辑不需要新函数或规则就可以直接添加上线,无需代码上线;
  • 删除字段,增加字段公共类规则,直接后台即可操作;
  • 字段改动可追溯历史,同时可查询字段使用场景及逻辑,改动不遗漏改动点;
  • 大大减少代码量,提高代码复用率;
  • 通过后台对字段的含义,使用情况,校验规则,注释等一目了然;无需追代码,维护高效简单;

TODO:

  • 字段映射平台不仅可以是一维的,也可以是多维度的,可以将其扩展到多层维度,并直接将其作为数据结构使用;
  • 字段维护对应相应的维护人员,注释,通过这种方式还能保证其能及时更新,能找到对应负责人,及获取到其准确含义。解决了传统的mock平台更新维护不及时的问题;