做一个复杂的需求,要求对于同一份建模数据,不同的用户在新建、编辑、查看时使用不同的布局。实现时,先做一个完整的母版布局,然后复制出用户布局并修改。Ecology 9没有提供复制建模布局的功能,因此我们自己实现。
为了避免使OA系统出现未知的问题,我们限定,只允许在同一个模块内,复制一个已存在的布局到另一个已存在的布局。
从接口/formmode/exceldesign/excelLayoutSave.jsp?operation=saveExcel出发,逆向分析OA系统保存建模布局的机制,得出结论,只需复制以下表的数据即可实现复制建模布局:
| 表 | 数据内容 | 复制方式 |
|---|---|---|
modehtmllayout | 布局自身的信息,例如布局设计、代码块等 | update,注意保留布局名称 |
modeformfield | 布局的字段信息,例如是否必填等 | 先delete再insert,注意复制到显示布局时字段全部变为只读 |
modefieldattr | 布局的字段属性信息,例如计算日期差等 | 先delete再insert |
modeformgroup | 布局的明细表信息,例如是否允许增行等 | 先delete再insert,注意复制到显示布局时关闭修改的相关配置 |
mode_layout_querysql | 布局的明细表的固定查询条件 | 先delete再insert |
mode_layout_sortfield | 布局的明细表的字段排序信息 | 先delete再insert |