当前位置: 首页 > news >正文

iBizModel 实体映射模型(PSDEMAP)详解

iBizModel 实体映射模型(PSDEMAP)详解

引言

在iBizModel模型体系中,实体映射模型(PSDEMAP)是实现实体间功能映射的核心机制。它允许开发者在不同实体之间建立属性、行为、数据集和查询的映射关系,从而实现数据的转换、同步和功能复用。实体映射在现代企业应用系统中具有重要作用,特别是在系统集成、数据迁移、多版本兼容等场景下。本文将全面介绍实体映射模型及其相关组件,包括PSDEMAP、PSDEMAPDETAIL、PSDEMAPACTION、PSDEMAPDS和PSDEMAPDQ,通过详细的图例和DSL示例展示其应用方式。

实体映射模型体系概述

实体映射模型是iBizModel中PSDATAENTITY实体的重要组成部分,它定义了一个完整的映射框架,支持从源实体到目标实体的全方位功能映射。整个映射体系采用分层结构,PSDEMAP作为根模型,包含四个主要的成员模型,共同构成完整的映射解决方案。

核心模型关系图

PSDATAENTITY实体
PSDEMAP实体映射
PSDEMAPDETAIL属性映射
PSDEMAPACTION行为映射
PSDEMAPDS数据集映射
PSDEMAPDQ查询映射
目标实体PSDATAENTITY
值转换器PSSYSTRANSLATOR
实体行为PSDEACTION
实体数据集PSDEDATASET
实体查询PSDEDATAQUERY

PSDEMAP模型详解

基本定义与属性

PSDEMAP是实体映射的根模型,定义了映射的基本配置和目标关系。其主要属性包括:

  • codename(必填):映射的代码标识,在所在实体中必须唯一
  • name(必填):映射名称,在所在实体中具备唯一性
  • psdeid(必填):引用源实体PSDATAENTITY
  • dstpsdeid:引用目标实体PSDATAENTITY
  • maptarget(必填):映射目标类型,当前仅支持"SYSCUR"(当前系统实体)
  • mapmode:处理映射模式,支持"DEFAULT"(默认)和"INNER"(内部处理)
  • autodefieldmap:是否自动进行属性映射(1:是,0:否)
  • autodeactionmap:是否自动进行行为映射
  • autodedsmap:是否自动进行数据集映射
  • autodedqmap:是否自动进行数据查询映射
  • defaultmode:是否为默认映射

枚举类型详解

逻辑所有者(logicholder)
  • 1:后台 - 逻辑具备在前端模板执行的能力
  • 2:前台 - 逻辑具备在后台模板执行的能力
  • 3:后台及前台 - 逻辑同时具备执行能力
实体映射处理映射模式(mapmode)
  • DEFAULT:默认处理,在入口处进行映射,不附加当前实体的处理逻辑
  • INNER:内部处理,仅映射的实际处理操作,在当前实体中完成逻辑附加操作
实体映射目标类型(maptarget)
  • SYSCUR:当前系统实体,映射到当前系统实体

自动映射机制

PSDEMAP支持四种自动映射模式,极大地简化了映射配置:

  1. 属性自动映射:自动将当前实体未映射属性与目标实体相同标识的属性进行映射,主键与主信息属性优先映射
  2. 行为自动映射:自动映射相同行为标识的实体行为
  3. 数据集自动映射:自动映射相同标识的数据集
  4. 数据查询自动映射:自动映射相同标识的数据查询

PSDEMAPDETAIL属性映射模型

模型定义与属性

PSDEMAPDETAIL定义了属性级别的映射关系,支持双向映射:

  • dstfieldname:目标实体属性名称
  • srctype(枚举):源值类型,包括FIELD、VALUE、EXPRESSION等
  • srcpsdefid:引用源属性PSDEFIELD
  • srcvalue:直接值或表达式
  • pssystranslatorid:引用值转换器PSSYSTRANSLATOR

源值类型详解

FIELD(属性等价)

源属性与目标属性直接等价映射,适用于属性名称和类型相同的情况。

VALUE(直接值到目标属性)

将固定的直接值设置到目标属性,适用于常量赋值场景。

EXPRESSION(计算值到目标属性)

通过表达式计算值设置到目标属性,支持动态计算逻辑。

VALUE_SRC(直接值到源属性)

将直接值设置回源属性,支持反向映射。

EXPRESSION_SRC(计算值到源属性)

通过表达式计算值设置回源属性,支持复杂的反向计算逻辑。

值转换器应用

通过pssystranslatorid引用PSSYSTRANSLATOR,可以实现复杂的值转换逻辑,如数据类型转换、格式转换、业务规则转换等。

PSDEMAPACTION行为映射模型

模型定义与属性

PSDEMAPACTION定义实体行为之间的映射关系:

  • psdeactionid:引用源行为PSDEACTION
  • dstpsdeactionid:引用目标行为PSDEACTION
  • mapmode:行为处理映射模式
  • name(必填):映射行为名称

映射模式应用

行为映射支持两种模式,与实体映射的mapmode保持一致,但可以单独配置覆盖实体级别的设置。

PSDEMAPDS数据集映射模型

模型定义与属性

PSDEMAPDS定义实体数据集之间的映射关系:

  • psdedatasetid(必填):引用源数据集PSDEDATASET
  • dstpsdedatasetid:引用目标数据集PSDEDATASET
  • enabledqcond:是否转换查询条件
  • mapmode:数据集处理映射模式
  • name(必填):映射数据集名称

查询条件转换

当enabledqcond启用时,系统会自动将源数据集的查询条件转换为目标数据集的等效条件。

PSDEMAPDQ数据查询映射模型

模型定义与属性

PSDEMAPDQ定义数据查询之间的映射关系:

  • psdedataqueryid(必填):引用源数据查询PSDEDATAQUERY
  • dstpsdedataqueryid(必填):引用目标数据查询PSDEDATAQUERY
  • enabledqcond:是否转换查询条件
  • mapmode:查询处理映射模式
  • name(必填):映射查询名称

实体映射应用场景详解

场景一:系统集成与数据同步

在企业系统集成中,经常需要将本地实体数据映射到外部系统实体。例如,将本地员工实体映射到云端HR系统的员工实体。

场景二:版本升级与数据迁移

系统升级时,新旧版本实体结构可能发生变化,通过实体映射可以实现平滑的数据迁移。

场景三:多租户数据隔离

在SaaS系统中,不同租户可能需要不同的数据视图,通过映射实现数据隔离和定制。

场景四:业务流程自动化

将不同实体的行为进行映射,实现跨实体的业务流程自动化。

完整DSL示例

以下是一个完整的实体映射DSL示例,展示如何定义从本地员工实体到云端员工实体的映射:

//iBizModelDSL建模指令,目标:定义本地员工到云端员工的完整映射
def emp_id = "Demo.SYS_EMP"
def cloud_emp_id = "Cloud.EMP"psdemap(name: "本地员工到云端员工映射",codename: "LocalToCloudEmpMap",psdeid: emp_id,dstpsdeid: cloud_emp_id,maptarget: "SYSCUR",mapmode: "DEFAULT",autodefieldmap: 1,autodeactionmap: 1,autodedsmap: 1,autodedqmap: 1,defaultmode: 1,logicholder: 1 //仅后台支持
){// 属性映射配置psdemapdetail(name: "姓名映射",srctype: "FIELD",srcpsdefid: emp_id + ".NAME",dstfieldname: "FULL_NAME")psdemapdetail(name: "部门映射",srctype: "FIELD" ,srcpsdefid: emp_id + ".DEPT_ID",dstfieldname: "DEPARTMENT_ID")psdemapdetail(name: "设置默认状态",srctype: "VALUE",srcvalue: "ACTIVE",dstfieldname: "STATUS")psdemapdetail(name: "职级转换",srctype: "EXPRESSION",srcvalue: "entity.get(\"level\") * 10",dstfieldname: "GRADE")psdemapdetail(name: "使用转换器处理日期格式",srctype: "FIELD",srcpsdefid: emp_id + ".HIRE_DATE",dstfieldname: "EMPLOYMENT_DATE",pssystranslatorid: "DateFormatter")// 行为映射配置psdemapaction(name: "创建员工行为映射",psdeactionid: emp_id + ".CREATE",dstpsdeactionid: cloud_emp_id + ".CREATE_EMP",mapmode: "DEFAULT")psdemapaction(name: "更新员工行为映射" ,psdeactionid: emp_id + ".UPDATE",dstpsdeactionid: cloud_emp_id + ".UPDATE_EMP",mapmode: "INNER")// 数据集映射配置psdemapds(name: "员工列表数据集映射",psdedatasetid: emp_id + ".EMP_LIST",dstpsdedatasetid: cloud_emp_id + ".EMPLOYEE_LIST",enabledqcond: 1,mapmode: "DEFAULT")// 数据查询映射配置psdemapdq(name: "按部门查询映射",psdedataqueryid: emp_id + ".QUERY_BY_DEPT",dstpsdedataqueryid: cloud_emp_id + ".QUERY_BY_DEPARTMENT",enabledqcond: 1,mapmode: "DEFAULT")
}

高级映射技巧

条件映射实现

通过表达式类型的映射,可以实现基于条件的动态映射:

//iBizModelDSL建模指令,目标:实现条件性属性映射
psdemapdetail(name: "条件性状态映射",srctype: "EXPRESSION",srcvalue: "entity.get(\"local_status\") == 1 ? \"ACTIVE\" : \"INACTIVE\"",dstfieldname: "CLOUD_STATUS"
)

复杂类型转换

利用值转换器处理复杂的数据类型转换:

//iBizModelDSL建模指令,目标:使用转换器处理复杂数据类型
psdemapdetail(name: "地址信息转换",srctype: "FIELD",srcpsdefid: emp_id + ".ADDRESS",dstfieldname: "FULL_ADDRESS",pssystranslatorid: "AddressTransformer"
)

反向映射支持

通过VALUE_SRC和EXPRESSION_SRC类型实现双向数据同步:

//iBizModelDSL建模指令,目标:实现双向数据同步映射
psdemapdetail(name: "状态反向映射",srctype: "EXPRESSION_SRC",srcvalue: "entity.get(\"cloud_status\") == \"ACTIVE\" ? 1 : 0",srcpsdefid: emp_id + ".STATUS"
)

总结

实体映射模型(PSDEMAP)是iBizModel体系中功能强大的数据转换和集成工具。通过PSDEMAP及其成员模型的组合使用,可以实现从简单属性映射到复杂业务流程映射的全方位功能。本文详细介绍了各个模型的属性、枚举类型、应用场景,并通过完整的DSL示例展示了实际应用方式。

实体映射的核心价值在于:

  1. 提高开发效率:通过自动映射机制减少重复配置
  2. 增强系统灵活性:支持动态映射和条件映射
  3. 保证数据一致性:通过双向映射实现数据同步
  4. 降低集成复杂度:简化系统间的数据交换

在实际项目中,建议根据具体业务需求合理选择映射模式和配置参数,平衡功能需求与性能要求。随着业务的发展,实体映射模型可以持续演进,支持系统的平滑升级和扩展。

http://www.dtcms.com/a/434654.html

相关文章:

  • 国家工程建设标准化网站一站式网站建设设计
  • k8s知识点总结5
  • 一级a做爰片官方网站山东城市建设职业学院教务网网站
  • Vue Vben Admin 使用指南
  • 网站建设科技风网站网站制作网站
  • 2019 年真题配套词汇单词笔记(考研真相)
  • 【复习】计网每日一题---BGP路由选择
  • 学习爬虫第一天
  • leetcode460.LFU缓存
  • 如何进入网站后台管理网站信用中国 网站截图怎么做
  • 百度网站推广电话数据分析师资格证书
  • 高低点通道突破策略
  • 【ROS2学习笔记】服务
  • 建站是什么东西建公司网站需要自己有系统吗
  • Leetcode热题100(8-12)
  • 六站合一的优势123上网之家网址
  • C++中的多线程编程及线程同步
  • 湛江做网站从微信运营方案
  • 伊吖学C笔记(8、结构体、链表、union、enum、typedef)
  • 2022 年真题配套词汇单词笔记(考研真相)
  • HTML5消费收入矩阵计算器
  • 霸州做阿里巴巴网站庆安建设局网站
  • PCB学习——STM32F103VET6-STM32主控部分
  • 大学生作业做网站网站建设公司比较
  • 写一个星河社区aistudio大模型部署之后的AI agent转发程序
  • 网站上的中英文切换是怎么做的wordpress页面移动端
  • 八、Scala 集合与函数式编程
  • 腾讯CODING Maven的aar制品添加上传流程
  • Effective Modern C++ 条款29: 移动语义的局限性与实践指南
  • 2025年渗透测试面试题总结-98(题目+回答)