实现了,泛微、蓝凌 中的枚举同步到致远!

阿里云教程2个月前发布
14 0 0

多系统主数据治理(MDM, Master Data Management)场景,尤其在企业办公协同平台(如泛微 e-cology、蓝凌 MK、致远 A8/A6 等)集成中超级关键。

实现目标

泛微(Weaver)蓝凌(Landray) 系统中的枚举类型主数据(如部门状态、岗位级别、业务分类等)自动/定期同步至 致远(Seeyon) 系统,确保多平台数据一致性。


常见实现方式

  1. 接口对接
  2. 泛微/蓝凌提供 RESTful API 或 WebService 接口导出枚举数据。
  3. 致远提供接收接口(或通过数据库直写、中间表等方式写入)。
  4. 中间通过调度服务(如定时任务、ETL 工具、自研同步服务)完成数据拉取与推送。
  5. 中间库/消息队列
  6. 三方系统通过共享数据库表或 Kafka/RabbitMQ 等消息中间件解耦。
  7. 枚举变更时发布事件,致远消费并更新本地缓存或数据库。
  8. 统一主数据平台(推荐)
  9. 引入 MDM 平台作为“唯一可信源”,各系统从 MDM 订阅枚举数据。
  10. 避免点对点集成,提升可维护性。

关键注意事项

  • 枚举编码一致性:确保三端使用一样的 code(而非仅名称),避免映射错乱。
  • 增量同步 vs 全量同步:提议支持增量(带时间戳或版本号),减少性能开销。
  • 冲突处理机制:如同一 code 在不同系统含义不同,需建立映射表或标准化规范。
  • 日志与监控:记录每次同步结果,失败时告警,支持人工干预。
  • 权限与安全:API 调用需鉴权(如 Token、IP 白名单),敏感数据脱敏。

  1. 接口对接代码实现

致远的表分枚举项和枚举值

CtpEnumItem item=new CtpEnumItem();

item.setId(id);

item.setEnumItemCode(code);

item.setDescription(name);

item.setShowvalue(name);

if(res.get(“sortnumber”)!=null)

{long Sortnumber=Long.parseLong(res.get(“sortnumber”).toString());

item.setSortnumber(Sortnumber);}

if(res.get(“enumvalue”)!=null)

{String Enumvalue=Long.toString(Long.valueOf(res.get(“enumvalue”).toString()));

item.setEnumvalue(Enumvalue);

}

if(!fParentId.equals(“”))

sql=” select * from ctp_enum_item where code ='”+fParentId.toString()+”' “;

else {

if(baseCode.equals(“1003”) && fParentId.equals(“”))

}

Map res1=获取现有枚举;

// System.out.println(“sql res1:”+JSONUtil.toJSONString(res1));

LOG.info(“sql res1:”+JSONUtil.toJSONString(res1));

if(res1 !=null && !res1.isEmpty())

{

long pid=Long.parseLong(res1.get(“ref_enumid”).toString());

int level_num=Integer.parseInt(res1.get(“level_num”).toString());

level_num++;

ParentId=Long.parseLong(res1.get(“id”).toString());

if(fParentId.equals(“”))

ParentId=0;

item.setParentId(ParentId);

item.setRefEnumid(pid);

item.setLevelNum(level_num);

Map res2=现有枚举值;

if(res2 !=null && !res2.isEmpty())

{

long num=Long.parseLong(res2.get(“num”).toString());

if(num>1)

{

errmsg.put(“errorMsgs”, name+”同级有一样的名称,是不能增加档案和枚举!”);

LOG.info(JSONUtil.toJSONString(errmsg));

return (JSONUtil.toJSONString(errmsg));

}

}

}

if(boDataStatus.equals(“ENABLE”)){

item.setState(1);

item.setOutputSwitch(1);

LOG.info(“setState(1)setOutputSwitch(1)”+boDataStatus );

}else {

item.setState(0);

item.setOutputSwitch(1);

LOG.info(“setState(0)setOutputSwitch(1)”+boDataStatus );

}

List<CtpEnumItem> listItems=new ArrayList<CtpEnumItem>();

listItems.add(item);

enumManagerNew.updateEnumItemCache(listItems);

实现了,泛微、蓝凌 中的枚举同步到致远!

实现了,泛微、蓝凌 中的枚举同步到致远!

© 版权声明

相关文章

暂无评论

none
暂无评论...