历史版本5 :防止填报笛卡尔积 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 描述编辑

如果笛卡儿积计算结果偏大可能会导致宕机,故10.0.1添加了笛卡儿积限制,不允许提交拥有多个数组的一行。如果提交的一行中包括两个及以上数目的数组类型的数据会检测为产生了笛卡儿积从而阻止数据提交并且提交失败。

注:此项限制始终存在无法关闭。

1)普通报表cpt中,当存在笛卡儿积时,点击提交提示“为防止填报笛卡儿积数据提交失败”,如下图:
222
2)决策报表frm中,当存在笛卡儿积,点击按钮进行提交界面没有反馈,可以通过浏览器定位问题,打开开发者工具查看,如下图:

222

2. 报表产生笛卡尔积的原因编辑

1)数据的过滤关系丢失。
父子格关系丢失后,会造成两个格子之间失去过滤关系,原本的父格不再作为当前格的过滤条件,导致当前格数据为数据集字段的所有值进行扩展,原本父子格一对一关系变成了一对多。另外,跟随关系的丢失或者混乱,会导致子格扩展时出现无法扩展或者同时向多个方向扩展,这样也会造成笛卡尔积。

2)模板中出现了不必要的数组


3. 场景分析编辑

1)使用数组函数对数据进行了分组;(使用JOINARRAY可以解决)

2)决策报表中表单的值被保存为List;

决策报表frm中,决策报表按钮将报表块的单元格值提交入库时,由于决策报表提交的数据没有父子关系,普通的行数据提交也会被识别成笛卡尔积,然后被限制;这个是由于决策报表本身对填报的支持不好,因此不推荐这种填报方式。

3)下拉复选框返回值类型为数组。