1.背景
标准弹性模型如果数据量比较大时, 一些弹性字段被使用作过滤,排序,关联等操作,页面的加载速度就会很慢,性能很差;
这时候,我们就需要通过把弹性字段映射到实体字段的操作,来优化页面加载速度,也就是我们常说的,把字段升级到标准字段里面。
2. 哪些模型可以使用实体字段映射呢
1.标准弹性模型
2.EmployeeEducation 教育信息模型
3.TechnicalSkills 技术技能信息模型
4.EmployeeSubSetFlexData 人员信息子集
5.SalaryDataEntry 薪酬明细数据 模型
6.WorkFlowFormDataFlexData 流程数据
7.WorkFlowFormDataChildFlexData 流程子表
8.等其他可以在弹性字段详情页面选择到映射实体字段操作的模型
实体字段映射操作界面
3.操作前需要思考!!!!
1.是不是只要升级了字段 速度就一定会提升呢?
答案是否定的,我们要讲究策略
2.什么样的字段需要升级字段?
首选有关联的,第二选需要过滤的,第三选排序的 ,预制字段有限选前三思
3.多个弹性字段选择映射时是否有策略?
我们在数据库中添加的索引如下(下图示意为标准弹性模型的索引,加了索引的字段,在过滤和查询的时候速度就会快一些)
其中data_object_id=对象id,data_depart_id=组织id。
针对业务主键,经常被关联,过滤,排序使用的字段,映射实体字段的时候优先映射以下字段。
当有多个弹性字段需要映射的时候,优先参考的搭配为:整数型-对象id,字符型-data_object_key1, 日期型-对象生效日期(data_effect_date)
如果要给某个日期字段映射到 对象生效日期(data_effect_date)实体字段的时候,
其他字段的映射就优先考虑以下字段: 对象id,组织id,data_object_key1,data_object_key2,data_object_id2
当 对象生效日期(data_effect_date)这个实体字段已经被用掉时,除了上述字段,还可以映射到data_object_id3, data_object_id4
注意:1. 以上为最优搭配,优先考虑以上字段的映射,如果上述字段被映射完了,再考虑其他字段
2. 组织id只是在【映射实体字段】的选项中名字叫做组织id,不一定非得是组织id才能映射,只要是整数类型的字段都能映射上去
4.操作步骤
a.修改弹性字段
注意,这里不同模型,数据库预制的实体字段是不同的,所以会出现选项和截图中不一样的情况,不用担心
打开弹性字段的详情页,找到【映射实体字段】,可以选择一个实体字段,根据上面思考内容建议的对应类型,选中实体字段选即可;
注意,实体字段一旦选中保存不可修改,每个实体字段是一次性的,只能使用一次。
b.修改弹性字段
通用模型升级接口 hcm.db.flex.field.flex.model.update.mapping.entity.field 参数为 {"model_name":"xxxx"} xxxx替换成模型名称
调用该接口的目的是,将已存在的数据进行升级
流程相关的表升级接口为 流程数据表 接口 workflow.mapping.entity.field 传入的参数 为 {"business_id":xxxxx}
例如:wf_form_data_flex_data.10001 business_id 为10001
流程的数据需要 1.取消发布后,2.再表单中修改弹性字段映射,3.再执行接口升级
流程子表升级 接口为 workflow.mapping.entity.field.child 传入的参数为{"business_id":xxxxx,"detail_key":xxxx}
例如 :wf_form_data_flex_data_child.12#detail business_id 就是22 detail_key就是detail
5.快速检查需要配置的字段小妙招