#10516·nocobase

[Bug] 更改选择选项值不会更新现有的流程模型

作者: Andy1024L创建于 2026年9月17日更新于 2026年9月17日

描述错误

改变现有Select字段中选项的 " 值 " 标识符,更新收集字段元数据,但现有流程模型可以继续存储旧选项标识符。

这使申请处于不一致的状态:

  • 收集字段元数据包含新的选项值。
  • 现有记录可以迁移到新的数值。
  • 一些现有的UI组件仍然包含被复制的旧选项或指定值.
  • 选择一个字段,然后使原始的已过时的标识符变成选项标签。
  • 重新删除并重新添加添加添加的字段 New 格式并不一定会去掉存储在其他流程模型,例如 Bulk Edit或 Bulk Update 中的旧标识符.

环境

  • NocoBase:2.2.12
  • 数据库:PostgreSQL 18.6
  • 部署:Docker
  • 用户界面:v2 流程模型页面

如何繁殖

  1. 创建带有选择界面的字符串字段。
  2. 使用最初生成的标识符添加两个选项,例如:
  • " 1xi9t3b3aen " / " 关于销售 "
  • " j2l198az4e " / " 出售 "
  1. 在添加新窗体和表格动作中,如Bulk Edit或Bulk Update中,使用此字段。
  2. 在数据源管理器中,将选项标识符改为可读稳定值:
  • " 出售 "
  • " 出售 "
  1. 将现有记录值移入新的标识符,并将字段默认值设置为 " 上售 " 。
  2. 以用户界面配置模式打开现有的添加新形式。

实际行为

添加新表格可能显示已过时的原始标识 " 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 应该做以下之一:

  1. 将更改改为商业记录和所有UI/Flow Model参考;或
  2. 显示所有受影响的记录和流动模式,并需要明确的迁移确认;或
  3. 防止在选项标识符被使用后更改。

至少,过时的选项标识符不应在形式,过滤器,散装编辑器,散装更新,默认值等流程模型中保持沉默.

其他背景

这在原则上似乎与#5058有关,在Select 选项被更改后UI过滤选项没有被刷新,但本报告特别关注持续存在v2流程模型和动作指定值.

本地的修复是为了更新生成的每条陈旧的流程模型参考 . . . . . . .

内容来源: nocobase/nocobase