[Bug] 更改选择选项值不会更新现有的流程模型
作者: Andy1024L创建于 2026年9月17日更新于 2026年9月17日
描述错误
改变现有Select字段中选项的 " 值 " 标识符,更新收集字段元数据,但现有流程模型可以继续存储旧选项标识符。
这使申请处于不一致的状态:
- 收集字段元数据包含新的选项值。
- 现有记录可以迁移到新的数值。
- 一些现有的UI组件仍然包含被复制的旧选项或指定值.
- 选择一个字段,然后使原始的已过时的标识符变成选项标签。
- 重新删除并重新添加添加添加的字段 New 格式并不一定会去掉存储在其他流程模型,例如 Bulk Edit或 Bulk Update 中的旧标识符.
环境
- NocoBase:2.2.12
- 数据库:PostgreSQL 18.6
- 部署:Docker
- 用户界面:v2 流程模型页面
如何繁殖
- 创建带有选择界面的字符串字段。
- 使用最初生成的标识符添加两个选项,例如:
- " 1xi9t3b3aen " / " 关于销售 "
- " j2l198az4e " / " 出售 "
- 在添加新窗体和表格动作中,如Bulk Edit或Bulk Update中,使用此字段。
- 在数据源管理器中,将选项标识符改为可读稳定值:
- " 出售 "
- " 出售 "
- 将现有记录值移入新的标识符,并将字段默认值设置为 " 上售 " 。
- 以用户界面配置模式打开现有的添加新形式。
实际行为
添加新表格可能显示已过时的原始标识 " 1xi9t3b3aen " ,而不是 " 关于销售 " 的标签。
收集的外地元数据和所有业务记录已经使用新的标识符,但“flow models”中仍保留了陈旧的值。
一个 Stale 选择字段模型包含:
贾森 { "用":"选"菲尔德模型". "道具":{ "可选办法":[ {"标签":"出售","价值":"1x9t3b3aen","颜色":"绿色"}, {"标签":"发售","价值":"j2l198azs4e","颜色":"红色"} [ . ] {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
还保留了单独的批量更新动作:
贾森
{
"分配值":{
"销售 状况":"j2l198azs4e"
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?在"添加新"表格中去掉并再添加字段,并没有修复这些单独的已存在的流模式.
预期行为
当一个选项标识符被更改时, NocoBase 应该做以下之一:
- 将更改改为商业记录和所有UI/Flow Model参考;或
- 显示所有受影响的记录和流动模式,并需要明确的迁移确认;或
- 防止在选项标识符被使用后更改。
至少,过时的选项标识符不应在形式,过滤器,散装编辑器,散装更新,默认值等流程模型中保持沉默.
其他背景
这在原则上似乎与#5058有关,在Select 选项被更改后UI过滤选项没有被刷新,但本报告特别关注持续存在v2流程模型和动作指定值.
本地的修复是为了更新生成的每条陈旧的流程模型参考 . . . . . . .
内容来源: nocobase/nocobase