实体对象
实体对象(Entity Object)是 Chameleon 平台的核心数据模型,定义了业务数据的结构和行为。实体对象是应用下承载业务的主体,一个应用通常包含多个实体对象,通过多个对象的互相协作来完成复杂的业务场景。
概述
实体对象类似于传统软件开发中的数据库表,一个实体对象对应一个数据库表,对象中的字段相当于数据库表中的字段。
创建实体对象的同时,会同步在数据库中创建对应的真实视图列表。实体对象下创建的字段即数据库表中的字段。
重要说明
- 实体对象没有状态的概念,创建即可使用
- 实体对象不可删除,创建后将永久保留
- 实体对象的字段一旦创建不可修改和删除
在 Chameleon 平台中,通过定义实体对象,您可以:
- 快速建模:无需编写 SQL,通过可视化界面定义数据结构
- 默认接口:系统提供默认的增删改查接口,无需单独开发
- 灵活扩展:通过可视化节点编排配置复杂业务逻辑
- 数据安全:内置审计日志和软删除机制
实体对象的核心价值
- 低代码开发:通过配置而非编码来定义数据模型
- 快速建模:创建实体对象同步生成数据库表
- 统一管理:所有实体对象集中管理,便于维护
- 权限控制:支持实体级别的数据权限控制
示例:图书管理系统
如果我们要完成一个图书管理系统,可能需要构建如下几个实体对象:
| 对象名称 | 说明 |
|---|---|
| 图书 | 用于管理图书库中的图书 |
| 图书分类 | 用于对图书进行分类,方便借阅时检索 |
| 借阅记录 | 用户对图书的借阅记录 |
| 人员信息 | 系统内置了人员对象,可直接采用进行业务处理,节约开发时间 |
实体结构
每个实体对象包含以下核心组成部分:
对象设置
对象设置功能提供了不同的 Tab 页对对象下的元素进行设置:
| 设置项 | 说明 |
|---|---|
| 字段 | 定义对象的数据结构,包括字段类型 、验证规则等 |
| 表单 | 配置数据的录入界面,支持多种布局方式 |
| 视图列表 | 配置数据的列表展示方式,只有列表功能,详情页通过表单呈现 |
| 审批流 | 配置与对象关联的审批流程 |
| 接口 | 以当前实体及字段为基础,通过可视化节点编排配置复杂业务逻辑,扩展标准接口能力 |
核心属性
| 属性 | 说明 | 配置建议 |
|---|---|---|
| 名称 | 实体显示名称 | 使用业务术语,如"客户"、"订单" |
| 编码 | 实体唯一标识 | 建议使用英文驼峰,如Customer、Order |
| 描述 | 实体功能说明 | 详细描述实体的业务含义 |
| 数据源 | 以实体对象所在表的所有数据作为下拉选项的数据源,可指定某列作为显示标签 | 用于其他字段引用该实体数据 |
系统级内置字段
为减少重复工作,系统已经内置了一些常用的系统字段。在创建对象时,会自动预置以下系统级字段:
| 字段名称 | 字段编码 | 说明 |
|---|---|---|
| 是否删除 | isdeleted | 逻辑删除标识 |
| 创建人 | createdby | 当前数据的创建人 |
| 创建时间 | createdtime | 当前数据的创建时间 |
| 修改人 | modifiedby | 当前数据的修改人 |
| 修改时间 | modifiedtime | 当前数据的最新修改时间 |
| 数据所属组织 | organization | 用于 MOU 数据权限过滤 |
| 工作流数据Id | workflowdataid | 当前审批流实例ID |
| 审批状态 | approvalstatus | 当前审批流的审批状态 |
| 工作流节点Id | approvalnodeid | 当前审批流所处的节点ID |
| 工作流节点 | approvalnodetitle | 当前审批流所处的节点Title |
| 数据共享 | shared | 数据共享标识 |
审计日志
系统字段自动记录数据的创建和修改信息,便于:
- 追踪数据变更历史
- 问题排查和审计
- 数据恢复和回溯
实体操作
创建实体
- 进入 开发管理 > 实体对象
- 点击 新建实体
- 填写基本信息(名称、编码、描述)
- 添加业务字段
- 配置表单和视图列表
注意
实体对象创建后不可删除,请在创建前确认业务需求。
字段管理
实体对象的字段一旦创建不可修改和删除,请在创建前确认字段设计。
- 添加字段:可随时添加新字段,同步更新数据库表
- 修改字段:不支持修改已创建的字段
- 删除字段:不支持删除已创建的字段
数据操作
系统为实体对象提供了一套默认的数据操作接口,通过传入实体ID(metaObjectId)来操作对应的数据:
| 操作 | 接口 | 说明 |
|---|---|---|
| 查询列表 | POST /api/biz/DefaultQueryList?metaViewId=xxx | 根据视图列表ID查询数据列表 |
| 查询单条 | POST /api/biz/DefaultGet?metaObjectId=xxx | 根据实体ID查询单条数据 |
| 详情查询 | POST /api/biz/DefaultQuerySingle?metaFormId=xxx | 根据表单ID查询详情数据 |
| 新增 | POST /api/biz/DefaultAdd?metaObjectId=xxx | 新增一条数据 |
| 编辑 | POST /api/biz/DefaultEdit?metaObjectId=xxx | 编辑指定数据 |
| 逻辑删除 | POST /api/biz/DefaultLogicDelete?metaObjectId=xxx | 软删除(标记删除) |
| 真删除 | POST /api/biz/DefaultDelete?metaObjectId=xxx | 物理删除 |
重要说明
默认接口的定位:
- 默认接口是平台为了实现基础组件访问数据的能力,如列表组件、表单组件等内部使用
- 不建议业务方直接调用这些默认接口来获取数据
- 这些默认 API 可能会随着平台迭代而调整参数与签名,直接调用可能导致兼容性问题
推荐做法:
如果业务方需要通过接口进行增删改查操作,推荐使用实体对象中的接口配置来创建自定义接口,这样可以获得稳定的接口签名,便于业务系统调用和维护。
实体关系
实体之间可以建立关联关系,实现复杂的数据模型:
一对一关系
通过字段引用实现,如:
- 用户实体与用户详情实体
- 订单实体与订单扩展信息实体
一对多关系
通过数据源字段实现,如:
- 客户实体与订单实体(一个客户有多个订单)
- 部门实体与员工实体(一个部门有多个员工)
多对多关系
通过中间实体实现,如:
- 学生实体与课程实体(通过选课记录实体关联)
- 用户实体与角色实体(通过用户角色关联实体)
实体配置最佳实践
命名规范
- 名称:使用清晰的业务术语,避免技术术语
- 编码:使用英文驼峰命名,首字母大写
字段设计
- 合理规划字段数量,避免单个实体字段过多
- 使用合适的数据类型,避免类型转换
- 设置合理的验证规则,确保数据质量
关系设计
- 明确实体间的关系类型
- 合理使用数据源字段建立关联
- 考虑数据冗余与查询性能的平衡