
# 开发对象
您可以根据业务需求自定义对象，用来存储组织或者业务特有的数据。
#### 背景信息
- **对象功能介绍**
  - 对象（也可以称为Object）相当于传统方式开发业务系统时，数据库中创建的一个表。每个对象对应一张数据库表，用于保存业务系统需要的配置数据和业务数据。
  
  - AppCube平台预置了一部分标准对象（Standard Object），开发者可以引入这些标准对象，标准对象名称和对象字段均已定义好， 只允许用户扩展新字段，禁止修改、删除预置字段。开发者也可以根据自己的业务需要，创建自定义对象（Custom Object），支持增、删、改自定义对象及自定义对象的字段。
  
  - 创建一个自定义对象后，系统会为自定义对象自动创建一些标准字段（Standard Fields），预置的标准字段，仅name支持修改。
   
- **对象定制开发说明**
  开发者基于BO定制开发时，可以新创建自定义对象，也可以使用BO中的对象。
  BO中对象说明：
  - BO中展示的对象，可以直接使用，但无法修改。 ![](https://support.huaweicloud.com/devg-isdp-Intel/zh-cn_image_0000001565384465.png)
    
  
  - BO中开放的4个扩展表（部署时后置脚本预置进去的），导入到应用后，可以根据业务需求定制修改使用。 ![](https://support.huaweicloud.com/devg-isdp-Intel/zh-cn_image_0000001514104698.png "点击放大")
    
   
 
#### 场景描述
本节以创建一个自定义对象（accruedLeaveApplicationRecord1）为例，描述创建对象的过程。
表1规划的对象自定义字段 
| **标签**  | **名称**               | **字段类型** | **取值**   | **读取/编辑权限**                                                 | **添加** **到页面布局** |
|:---|:---|:---|:---|:---|:---|
| 编码      | accruedLeaveCode     | 文本       | 数据长度：255 | Standard User Profile/Portal User Profile/Developer Profile | 选择               |
| 人员账号    | personCode           | 文本       | 数据长度：255 | Standard User Profile/Portal User Profile/Developer Profile | 选择               |
| 人员名称    | personName           | 文本       | 数据长度：255 | Standard User Profile/Portal User Profile/Developer Profile | 选择               |
| 审批状态    | approvalStatus       | 文本       | 数据长度：255 | Standard User Profile/Portal User Profile/Developer Profile | 选择               |
| 班次id    | shiftId              | 文本       | 数据长度：255 | Standard User Profile/Portal User Profile/Developer Profile | 选择               |
| 班次名称    | shiftName            | 文本       | 数据长度：255 | Standard User Profile/Portal User Profile/Developer Profile | 选择               |
| 召回开始时间  | recallStart          | 文本       | 数据长度：255 | Standard User Profile/Portal User Profile/Developer Profile | 选择               |
| 召回结束时间  | recallEnd            | 文本       | 数据长度：255 | Standard User Profile/Portal User Profile/Developer Profile | 选择               |
| 本次积假时间  | accruedLeaveThisTime | 文本       | 数据长度：255 | Standard User Profile/Portal User Profile/Developer Profile | 选择               |
| 审批流名称   | bpmName              | 文本       | 数据长度：255 | Standard User Profile/Portal User Profile/Developer Profile | 选择               |
| 审批流标签   | bpmLable             | 文本       | 数据长度：255 | Standard User Profile/Portal User Profile/Developer Profile | 选择               |
| 审批流实例id | bpmInstanceId        | 文本       | 数据长度：255 | Standard User Profile/Portal User Profile/Developer Profile | 选择               |
| 召回原因    | recallReason         | 文本区      | -        | Standard User Profile/Portal User Profile/Developer Profile | 选择               |
| 删除标志    | deleteFlag           | 文本       | 数据长度：255 | Standard User Profile/Portal User Profile/Developer Profile | 选择               |
| 提交时间    | submitTime           | 文本       | 数据长度：255 | Standard User Profile/Portal User Profile/Developer Profile | 选择               |
| 审批完成时间  | completeTime         | 文本       | 数据长度：255 | Standard User Profile/Portal User Profile/Developer Profile | 选择               |
   
#### 创建自定义数据对象
1. 如[图1]所示，在应用的开发页面，单击规划存放对象（数据对象）目录右侧的![](https://support.huaweicloud.com/devg-isdp-Intel/zh-cn_image_0000001565184233.png)，选择"对象"。
   
   图1创建对象   
   ![](https://support.huaweicloud.com/devg-isdp-Intel/zh-cn_image_0000001513945114.png)
   
   
2. 在弹出的"添加对象"页面，如[图2]所示，选择创建新对象，输入对象的"标签"、"名称"和描述信息，单击"添加"。
   
   添加成功后，进入对象详情页。
   图2添加对象   
   ![](https://support.huaweicloud.com/devg-isdp-Intel/zh-cn_image_0000001514264282.png "点击放大")
   
   
 
#### 定义自定义对象的字段
1. 新建自定义字段。 
   1. 在对象详情页，如[图3]所示，单击"自定义字段"页签，单击"新建"。
      图3新建自定义字段   
      ![](https://support.huaweicloud.com/devg-isdp-Intel/zh-cn_image_0000001565384481.png "点击放大") 
   
   2. 如[图4]所示，选择字段类型文本，单击"下一步"
      图4选择字段类型   
      ![](https://support.huaweicloud.com/devg-isdp-Intel/zh-cn_image_0000001514424242.png "点击放大") 
   
   3. 如[图5]所示，设置标签为"编码"、名称为"accruedLeaveCode"，数据长度为"255"，单击"下一步"。
      图5输入详情   
      ![](https://support.huaweicloud.com/devg-isdp-Intel/zh-cn_image_0000001565024309.png "点击放大") 
   
   4. 如[图6]所示，设置字段的访问权限，即设置哪些权限集可以查看或修改该字段，单击"下一步"。
      图6建立字段级安全性   
      ![](https://support.huaweicloud.com/devg-isdp-Intel/zh-cn_image_0000001565184221.png "点击放大") 
   
   5. 如[图7]所示，设置字段是否加入布局。该配置用于将字段加入到对象默认的布局页面。
      图7添加到页面布局   
      ![](https://support.huaweicloud.com/devg-isdp-Intel/zh-cn_image_0000001565184217.png "点击放大") 
   
   6. 单击"保存"，创建字段。
   
   7. 参见[1.a]～[1.f]，继续新建字段，完成规划字段的创建，示例如[图8]所示。
      图8规划的字段示例   
      ![](https://support.huaweicloud.com/devg-isdp-Intel/zh-cn_image_0000001565264569.png "点击放大")
      ![](https://support.huaweicloud.com/devg-isdp-Intel/public_sys-resources/note_3.0-zh-cn.png)
      新建字段时，可以单个新建，也可以批量新建（批量新建时，下载模板输入相关信息，再导入）。
      
   
   
   
   
2. （**可选，当需要给对象创建索引字段时，请执行该步骤** ）添加自定义索引。
   
   ![](https://support.huaweicloud.com/devg-isdp-Intel/public_sys-resources/note_3.0-zh-cn.png)
   本示例场景不涉及。
   1. 如[图9]所示，在"自定义字段"页签单击"自定义索引"。
      图9自定义索引   
      ![](https://support.huaweicloud.com/devg-isdp-Intel/zh-cn_image_0000001514104702.png "点击放大") 
   
   2. 如[图10]所示，在"自定义索引"页面单击"添加自定义索引"。
      图10自定义索引页面   
      ![](https://support.huaweicloud.com/devg-isdp-Intel/zh-cn_image_0000001514104682.png) 
   
   3. 如[图11]所示，定义索引，单击"创建"。
      图11添加自定义索引   
      ![](https://support.huaweicloud.com/devg-isdp-Intel/zh-cn_image_0000001514264270.png)
      表2参数说明 
      | **参数** | **配置说明**                                                                                                                                                                                                                         |
      |:---|:---|
      | 名称     | 自定义索引的名称。                                                                                                                                                                                                                        |
      | 类型     | 索引类型，支持如下两种类型： - 普通索引  - 唯一索引   唯一索引字段的字段取值必须唯一。 |
      | 字段*1*  | 从下拉框选择已创建的自定义字段作为索引字段。 默认最多只能创建一个索引，每个索引中最多创建两个索引字段。                                                                                                                                                  |
         
      
   
   
   
   
 
#### 为对象字段增加校验器（可选，当需要给对象增加校验器时，请执行该步骤）
![](https://support.huaweicloud.com/devg-isdp-Intel/public_sys-resources/note_3.0-zh-cn.png)
本示例场景不涉及。
在向对象中录入记录数据时，为了保证对象数据的有效性，可以定义一些校验规则，对字段值以及各字段之间的逻辑关系进行校验。
使用校验器主要是为了方便对字段做一些简单的规则限制。
1. 在对象详情页面，如[图12]所示，单击"验证规则"页签，再单击"新建"。
   
   图12验证规则   
   ![](https://support.huaweicloud.com/devg-isdp-Intel/zh-cn_image_0000001514424246.png "点击放大")
   
   
2. 如[图13]所示，输入校验规则，单击"保存"。
   
   图13新建验证规则   
   ![](https://support.huaweicloud.com/devg-isdp-Intel/zh-cn_image_0000001514264258.png "点击放大")
   表3参数说明 
   | **参数** | **配置说明**                                                                                                                                                                                                                                                                                                                                                                                                         |
   |:---|:---|
   | 基本信息   | - 标签：Validator标签名，用于展现在配置界面。  - 名称：Validator名称。  - 描述：描述信息。                                                                                                                                 |
   | 错误条件公式 | 配置校验公式时，配置的是错误条件。 规则由公式、字段、运算符组成： - 单击"字段"可选择逻辑表达式中涉及字段。  - 单击"操作符"可选择表达式中的运算符。  - 从"公式"下拉列表中选择公式，单击"插入"，可在表达式中嵌入公式。选中公式会有注释说明。   |
   | 错误消息   | 错误提示信息，可手动输入。                                                                                                                                                                                                                                                                                                                                                                                                    |
      
   
   
3. 在校验规则列表页面，在新建校验规则的"操作"列打开开关，启用该条规则。
 
#### 为对象配置内嵌触发器（可选，当需要给对象内嵌触发器时，请执行该步骤）
![](https://support.huaweicloud.com/devg-isdp-Intel/public_sys-resources/note_3.0-zh-cn.png)
本示例场景不涉及。
开发者可以为对象增加内嵌触发器，实现在增/删/改对象的记录数据时，自动执行内嵌触发器脚本（该脚本由用户自定义，其实就是一段普通的TypeScript脚本，没有输入输出参数）。比如在对象记录插入前、记录插入后、记录更新前、记录更新后、记录删除前或者记录删除后自动执行内嵌触发器脚本。
1. 在对象详情页面，如[图14]所示，单击"内嵌触发器"页签，再单击"新建"。
   
   图14内嵌触发器   
   ![](https://support.huaweicloud.com/devg-isdp-Intel/zh-cn_image_0000001514424230.png "点击放大")
   
   
2. 如[图15]所示，输入触发器的基本信息，单击"保存"。
   
   图15创建触发器   
   ![](https://support.huaweicloud.com/devg-isdp-Intel/zh-cn_image_0000001565024333.png "点击放大")
   表4参数说明 
   | **参数** | **配置说明**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   |:---|:---|
   | 标签     | 内嵌触发器在用户界面展示的名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
   | 名称     | 内嵌触发器的名称                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   | 事件触发时机 | 内嵌触发器在什么时候生效，可直接在下拉框中选择。即在系统执行如下某动作时，自动执行触发器的脚本： - 插入前：记录插入操作前触发。  - 修改前：记录更新操作前触发。  - 删除前：记录删除操作前触发。  - 插入后：记录插入操作后触发。  - 修改后：记录更新操作后触发。  - 删除后：记录删除操作后触发。   |
   | 描述     | 关于内嵌触发器的描述，不超过255个字节。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
      
   
   
3. 编写触发器的脚本。 
   对象的内嵌触发器脚本，其实就是一段普通的TypeScript脚本，没有输入输出参数，关于脚本的开发说明，请参加[开发脚本](https://support.huaweicloud.com/devg-isdp-Intel/seddev_018.html)。
   
   
4. 如[图16]所示，保存脚本并启用脚本。
   
   图16保存并启用脚本   
   ![](https://support.huaweicloud.com/devg-isdp-Intel/zh-cn_image_0000001565264581.png)
   启用后在内嵌触发器列表可查看到当前触发器状态为"ON"，表示当触发条件满足时，会自动执行该触发器脚本。
   ![](https://support.huaweicloud.com/devg-isdp-Intel/zh-cn_image_0000001514424234.png "点击放大")
   
   
 
