外观
开发规范
约 2474 字大约 8 分钟
2026-07-27
1. 对象建模规范
1.1 编码规范
1.1.1 业务对象编码
- 格式:
系统码_编码 - 系统码由开发平台自动生成。
- 特殊含义对象命名规则:
- 配置类型:以
Config结尾 - 资料类型:以
Info结尾 - 明细条目:以
Items结尾 - 详细描述/扩展信息:以
Detail结尾 - 单据/凭证行:以
Lines结尾
- 配置类型:以
1.1.2 实体编码
- 主实体:与业务对象编码一致
- 子实体:需在主实体基础上扩展
- 示例:主实体
AccountPay,子实体AccountPayAttachment
- 示例:主实体
1.1.3 属性编码
采用小驼峰命名(camelCase),首字母小写,应采用有意义的英文单词组合,避免缩写不清晰。
| 字段类型 | 命名规则 | 示例 |
|---|---|---|
| 通用字段 | 小驼峰 | merchantCode |
| 布尔字段 | 以 bl 开头,禁止使用 is | blJoin(是否参会) |
| 日期字段 | 以 Date 结尾 | startDate |
| 时间字段 | 以 Time 结尾 | createTime |
| 主键关联外键 | 以 Id 结尾 | orgId、workerId |
| 编码关联外键 | 以 Code 结尾 | deptCode(部门编码) |
| 料品 | 以material开头 | materialName(物料名称) |
| 部门 | 以dept开头 | deptName(部门名称) |
| 员工 | 以staff开头 | staffName(员工名称) |
| 是否生效 | blActive | |
| 数量 | qty | |
| 工序号 | seqNo |
1.1.4 系统保留关键字
禁止使用以下系统保留关键字作为属性编码:
approvalFlow、base、bizFlowName、bizFlowVersion、bizFlowInstanceId、businessType、bustype、
businessFlow、bizFlowId、creator、createTime、code、dr、disablets、enable、enablets、
foreignerKey、id、ITree、isFlowCoreBill、isEnd、isWfControlled、level、modifier、modifyTime、
name(档案类可以)、org_id、pubts、pk_temp、pk_procdefins、pk_procdef、path、parent、startdept、
source_id、sourcechild_id、startorg、source_billtype、sort、status、tenant_id、type、version、
verifystate、ytenant、secretLevel、secretLimit1.2 数据库表规范
1.2.1 表名生成
- 规则:表名 = 应用编码 + 实体编码(大写字母转
_+ 小写字母) - 示例:实体
AccountPay→ 表名cxcrmfinpayment_account_pay
1.2.2 平行表
建议使用系统自动生成的表名,表名中租户编码(租户 ID)禁止删除。
1.2.3 主子表关联字段
系统自动创建,无需手工创建。
1.2.4 表字段名
- 属性编码中的大写字母转
_+ 小写字母 - 示例:
merchantCode→merchant_code - 命名时避开数据库关键字,多数据库关键字可参考在线文档
1.3 索引规范
1.3.1 索引命名规则【强制】
- 索引以
i_开头,唯一索引以i_u_开头,后面接表名/列名 - 非唯一索引:
i_字段1_字段2 - 唯一索引:
i_u_字段1_字段2 - 索引名必须小写,表名加索引名总长度不超过 60 个字符
1.3.2 索引设置要求
- 必须为常用查询条件字段建立索引
- 组合索引字段顺序需与主要查询条件一致
- 避免过宽索引或过多冗余索引
1.4 扩展规范
1.4.1 扩展属性
原厂扩展属性必须加前缀 extend:
- 属性编码:
extendMerchantCode - 表字段:
extend_merchant_code
1.4.2 多方扩展
当多方扩展同一实体时,需加上特定编码前缀避免冲突(例如:行业编码、应用编码):
- 示例:
extendItMerchantCode
2. 页面建模规范
2.1 页面编码规范
2.1.1 页面编码
- 命名格式:
{业务对象编码}{页面编码} - 建议仅使用业务对象编码作为整个页面编码,并确保在系统内唯一
- 示例:业务对象编码
AccountPay→ 页面编码AccountPay - 若同一业务对象下需创建多个页面,可在后缀追加简短描述,如
AccountPayDetail
2.1.2 页面名称
- 命名格式:
{业务对象名称}{页面名称} - 建议仅使用业务对象名称作为页面名称,并确保唯一性
- 示例:业务对象名称「应付款项」 → 页面名称「应付款项」
- 多页面情况下可使用后缀区分,如:「应付款项明细」
2.2 扩展与参照规则
- 原厂扩展的 UI 迁移仅支持新增,不支持更新
- 参照带入逻辑能实现的情况,避免使用公式替代
- 页面规则与前端脚本不得同时控制同一组件状态,以避免冲突;如必须同时存在,应明确优先级确保不冲突
3. 函数规范
3.1 命名法
3.1.1 驼峰式命名法
- 大驼峰式(Pascal Case):首字母大写。例:
StudentInfo - 小驼峰式(Camel Case):首字母小写。例:
studentInfo
3.1.2 变量命名
- 方法:小驼峰式
- 规范:前缀为名词,体现数据类型
// 正确示例
var maxCount = 10; // 数值类型
var tableTitle = "LoginTable"; // 字符串类型
// 错误示例
var setCount = 10; // 动词前缀
var getTitle = "LoginTable";3.1.3 函数命名
- 方法:小驼峰式
- 规范:前缀为动词
| 动词 | 含义 | 返回值 |
|---|---|---|
can | 判断是否可执行操作(权限) | Boolean:true/false |
has | 判断是否包含某个值 | Boolean:true/false |
is | 判断是否为某个值 | Boolean:true/false |
get | 获取值 | 非布尔值 |
set | 设置值 | 无返回值、返回是否设置成功或者返回链式对象 |
load | 加载数据 | 无返回值或者返回是否加载完成的结果 |
// 是否可读
function canRead() {
return true;
}
// 获取名称
function getName() {
return this.name;
}3.1.4 常量命名
- 方法:全大写 + 下划线分隔
const MAX_COUNT = 10;
const API_URL = "https://api.example.com";3.2 注释规范
3.2.1 单行注释
// 单独一行的注释(双斜杠后加空格)
setTitle();
var maxCount = 10; // 代码行尾注释
// 被注释的代码(双斜杠后加空格)
// setName();3.2.2 多行注释
/**
* 代码说明:
* 1. 执行setTitle()函数
* 2. 设置标题值
*/
function initPage() {
setTitle();
}3.2.3 函数文档注释
/**
* 合并Grid单元格
* @param {Object} grid - 需要合并的Grid对象
* @param {Array} cols - 合并列序号数组(从0开始)
* @param {Boolean} [isAllSome=false] - 是否严格匹配
* @returns {void}
* @author 张三 - zhangsan@company.com
* @example
* mergeCells(grid, [0], true);
*/
function mergeCells(grid, cols, isAllSome = false) {
// 实现逻辑
}4. 流程与自动化规范
4.1 脚本命名规范
命名格式采用小驼峰式,名称要具有业务含义:
- 示例:保存前金额合计脚本 →
beforeSaveSum
4.2 YonScript 开发规范
适用范围与核心目标
- 适用范围:适用于 YonBIP/IUAP 平台下所有 YonScript 脚本的开发、编写与维护,所有自定义脚本开发均需遵循本规范要求
- 核心目标:保障脚本运行安全、性能稳定、资源可控,避免因不规范开发导致的平台服务异常、数据错误或性能瓶颈
异步长耗时脚本调用规范
平台提供 YonScript 脚本异步长耗时脚本调用机制,针对超长时间运行的脚本任务,需优先使用异步长耗时模式提交执行,避免阻塞主线程或占用同步资源。
安全开发规范
- 防止 YonQL 注入:禁止直接拼接用户输入的内容到 YonQL 语句中,需使用参数化查询方式
- 防止 XSS 攻击:脚本输出或存储用户提交的富文本、字符串内容时,需进行 XSS 过滤与转义处理
- 错误处理:所有 YonQL、API 调用、数据操作均需添加异常捕获,避免脚本因未捕获异常直接中断,导致数据不一致或任务异常
性能优化规范
- 处理大量数据时应使用平台提供的批量接口,避免单条循环处理数据,减少 IO 交互次数
- 禁止在循环中执行 YonQL 操作:循环内的数据查询需提前在循环外批量完成,循环内仅做内存数据处理
- 禁止在循环中执行 DML 操作(增/删/改):批量数据变更需使用批量提交接口,减少数据库事务提交次数
- 禁止在循环中执行 API 调用或其他脚本调用:外部接口/脚本调用需提前批量完成,循环内避免跨服务交互
- YonQL 中禁止使用
select *全字段查询,必须指定明确的查询字段,减少数据传输量与内存占用 - 查询和更新数据时,仅传输必要的业务字段,避免冗余字段的传输与存储,降低内存占用与带宽消耗
脚本资源限制规范
| 限制项 | 同步脚本 | 异步脚本 | 异步长耗时脚本 |
|---|---|---|---|
| 字符数上限 | < 64K | < 64K | < 64K |
| 最大执行时间 | 10s / 30s(按场景适配) | 60s | 3600s |
| 并发限制 | - | - | 同一租户同一时间仅 1 个 |
| 堆内存占用上限 | 20M | 40M | 80M(自行控制) |
| YonQL 语句执行数量上限 | 100 条 | 200 条 | 不设上限 |
| YonQL 返回结果最大记录数 | 500 条 | 500 条 | 500 条 |
| ObjectStore 操作最大记录数 | 100 条 | 100 条 | 不设上限 |
| REST API/函数调用数量上限 | 50 条 | 50 条 | 不设上限 |
日志与预警规范
脚本设计器、调度引擎应增加对上述资源限制的日志记录能力,对脚本的执行时间、内存占用、YonQL 执行数量、API 调用次数等关键指标进行日志采集。
4.3 前端脚本
前端脚本代码规范需严格遵循前端脚手架代码规范。
4.4 后端脚本 & API 脚本
数据查询与操作
- 跨
domainKey查询单据时,优先使用 YonQL - 避免使用子查询或复杂 YonQL 函数
接口调用
- 避免连续调用保存/更新/删除接口
- 调用第三方查询类接口时必须实现分页,每页数据量建议 ≤ 100 条
5. 发布管理规范
5.1 分组管理
发布管理的分组列表建议按应用命名规则创建,确保分组名称与应用保持一致,便于识别和归类。
5.2 菜单管理
菜单编码建议与页面编码保持一致,避免二次命名造成混淆。
更新日志
2026/8/19 10:57
查看所有更新日志
74d2f-chore(dev): 清理不再使用的模块文档并统一字段表格式于99218-docs(dev): 统一基础资料与月末数据字段表格式于b745d-规范开发文档 修改基础资料部分的开发文档于800c8-重新整理目录结构 修改主题为plume 适配主题plume 增加部署功能于4c42c-first Commit于