第三方应用独立架构设计


我要做一个智能体,即卖给金蝶客户,又卖个用友的客户,又可以卖给非ERP的客户。 要做这种产品,如何做系统架构设计。我需要跟金蝶,用友深度集成(页面内嵌),API集成。
挑战
1 - 数据映射
2 - 独立,兼容多厂商的业务模型
3 - 数据隔离(多租户)

第三方应用和ERP的数据映射

ERP的租户,用户,组织等数据如何跟第三方应用做映射。

ERP的数据同步到第三方应用,第三方应用往ERP写数据的时候,需要转化为ERP的字段。(双向)。
比如把智能体通过iframe内嵌到ERP。 需要把ERP的租户,用户传给智能体。 智能体处理完业务需要把数据推给ERP,
主数据。 主数据的特征是外部的ID和编码和内部的不一致。

  • 租户
  • 用户
  • 组织
    基础数据(字典数据)。 基础数据的特征是枚举项的定义不一样,比如在A平台男性是male,在B平台可能定义的1.
  • 各种枚举,比如性别,XX类型。

业务数据
各种单据什么的。比如订单金额,商品名称等。 这种是标准,无需做转化。

设计方案

主数据映射

租户,组织,用户在表上增加外部数据源的映射关系。 外部数据ID,外部数据编码,外部数据源标识(厂商标识),外部数据ID2,外部数据编码2,外部数据源标识2(厂商标识)。为了增加扩展,某些ERP会存在过程态,比如目前在金蝶,但是准备往SAP迁移,所有有个2字段。

字典数据

建立个独立的关系表,或者在字典表扩展字段。 扩展字段有:外部编码,外部值,

三方应用和金蝶集成案例

场景:比如第三方应用以iframe形式集成到金蝶。 金蝶通过token(基于租户和用户id 签名后)给到第三方应用。第三方应用做完业务处理后,需要把处理结果给到金蝶。

流程

1 - 金蝶生成token (基于金蝶的开发平台的应用id+secretid+租户id+用户id+秘钥)
2 - (首次)第三应用验证token,从token获取租户,用户id,并将token和租户id,用户id存在redis设置失效时间。 . 第二次访问:验证token是否在redis,如果在,说明有权限访问,取redis的租户和用户id.
将ERP的租户id,用户id转化为三方应用的租户id和用户id。
3 - 业务处理
使用第三方应用自己的主数据(租户id,用户id)做业务处理。
4 - 调用金蝶的开放平台把数据传给金蝶。 需要做字段映射,如把三方应用的租户id,用户id,组织id转化为金蝶的id给到金蝶。

异常流程。

token过期,或者ERP session过期但是token未过期

  • 通过 iframe 的父页面(ERP)向子页面(合同云)发送消息,通知其当前用户是否已登出或Session失效。
  • 第三方应用自动刷新Token。OAuth2标准通常提供了一种称为“刷新令牌(Refresh Token)”的机制,允许在访问令牌过期后获取新的访问令牌,而无需用户重新登录

独立模型

多租户数据隔离

主数据

租户隔离

业务数据

租户隔离

基础数据

在实际应用中,往往可以根据具体需求采用一种混合策略,即对于那些确实属于公共性质的基础数据(如国家列表、货币单位等),可以选择多租户共享的方式;而对于那些可能存在差异或者需要根据租户特性进行调整/定制化扩展的数据(如地区划分、产品分类等),则采取租户隔离的方式。

参考资料

商用数据映射产品
https://cloud.seeyon.com/v8doc/docs/intergeration-application/710-basicsettings/71010-orgmapping/

posted @ 2025-07-12 16:05  向着朝阳  阅读(24)  评论(0)    收藏  举报