
# 1 用户场景
标准产品自定义控件越来越多,不少开发对与自定义控件的开发、测试、发布全流程不是很清楚,本文将详细介绍标准产品下,自定义控件开发的全流程。标准产品的自定义控件发布是走补丁发布的流程,和ISV的开发存在差异,需要通过静态资源svn分支里面提交,走补丁发布的流程。
# 2 流程介绍
## 2.1 开发阶段

### 2.1.1 新增控件方案
首先新增控件方案,填写方案信息界面如下

### 2.1.2 开发自定义控件
关于如何开发自定义控件的相关文档。你可以在开发平台中,控件列表里面找到自定义控件,悬停鼠标点击了解更多即可

### 2.1.3 本地上传自定义控件
开发完自定义控件后,需要将自定义控件整个目录放在领域标识(对应新建方案时填写的领域标识)目录下,每个方案id(对应新建方案时填写的方案id)为命名的目录下,仍然是要有index.js文件。
对应的本地文件:`webapp/kingdee/领域标识/方案id`

例如:新建方案时,方案id填写为`avatar`,领域标识填写为`hr`,那么开发完自定义控件后,需要把自定义控件目录放在 `webapp/kingdee/hr/avatar`目录下
*注意:版本v4.0.004或更高版本的标准标定对isv目录做了调整,kingdee目录调整为与isv目录同级。因此只需要把文件放置在`webapp/kingdee/hr/avatar`目录下,但是如果是低版本,则需要把文件放在`webapp/isv/kingdee/hr/avatar`*
启动服务,访问 [http://localhost:8080/ierp/kingdee/hr/avatar/index.js](http://localhost:8080/ierp/kingdee/hr/avatar/index.js)。如果成功,如下所示

如果失败,检查一下文件存不存在、.bat批处理文件配置、控件方案存放路径是否错误等。
### 2.1.4 提交预置脚本
在研发内网中新增自定义控件方案,保存后会将这个控件信息存储在**t_meta_ctlschema**这个表里(当然,还有一个对应的多语言表),但是要再外网测试环境能够看到效果,需要写预置数据脚本,环境更新的时候外网的这个表里才会有领域下自定义控件方案相关数据。 *各个领域的预置脚本的预置脚本都有规范,可询问对应领域的架构师*,这里不再举例。
### 2.1.5 提交开发分支代码
在研发内网通过svn将自定义控件相关代码提交至**静态资源开发分支**([http://192.168.16.99/svn/bos-server/branches/bos-server-dev-20170724/kd_bos_server/bos-server/package-server/static-file-service/webapp/isv/kingdee/](http://192.168.16.99/svn/bos-server/branches/bos-server-dev-20170724/kd_bos_server/bos-server/package-server/static-file-service/webapp/isv/kingdee/) )
*注意:版本v4.0.004或更高版本的标准标定对isv目录做了调整,kingdee目录调整为与isv目录同级。地铁线会自动把 `webapp/isv/kingdee`目录挪到`webapp/kingdee`下面,因此无需关注该SVN地址差异。*
要提交到**静态资源开发分支**上的自定义控件代码应遵循以下规范:
* 提交的代码必须是打包后的运行文件(例如react/vue打包后的**dist**文件、jquery源文件),不应该包含开发源代码,源代码自行管理
* 单个自定义控件大小控制在1M以内,越小越好
* 只能上传如下格式文件 :jpg、jpeg、png、gif、ico、xml、js、java、css、html、htm、swf、txt、psd、json、eot、svg、ttf、woff、ftl、keep、wd3、eot@、woff2、otf、less、scss、map、md、php、yml、ai、tmpl、log、version、ts、wsdl、bat、xlsm、sfd、jsp、webp、mf
* 尤其不能含后缀为**rar**、**zip**和**中文名称**的文件
### 2.1.6 构建静态资源地铁线
构建对应领域相关的**静态资源更新地铁线**(例如财务部门需要构建[ patchfi_图片资源更新地铁线](http://crp.kingdee.com/cd/drawMetro?metroid=270308647098122240)、HR部门需要构建[patchhr_图片资源更新地铁线