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.快速检查需要配置的字段小妙招

  • 无标签