如何从代码中刷新 AnyLogic ModelDatabase?
How do I Refresh AnyLogic ModelDatabase from code?
我已将模型中的许多参数链接到内部 ModelDatabase 中的值。这很好用。
现在我想允许用户为特定场景导入新的“输入文件”。我在模拟实验屏幕上添加了一个 fileChooser 元素,在 onUpload 操作中我使用 ModelDatabase.importFromExternalDB 将相关的 sheet 上传到相关的 table.
然而,这似乎不起作用。最初我认为更新根本没有发生,但是当我在 AnyLogic IDE 中停止模型并在 IDE 中再次启动它时,将使用新值。
更新似乎只发生在 startup/close 并且数据库在 运行 时是“静态的”。我确实在 importFromExternalDB 函数上将自动提交参数设置为 true,但这没有任何区别。
有没有我可以调用的函数来强制“刷新”内部数据库?
您可能在运行时使用默认代码加载数据,例如 selectFrom("some String with query")
但是,这些总是从缓存的数据库加载以加快速度。
相反,您必须使用附加参数强制 AnyLogic 从实时数据库加载。在此示例中,它将是 selectFrom(false, "some String query")
这在帮助中也有记载:
因此遍历模型中的所有查询并添加适当的布尔参数以从非缓存数据库中强制加载。
我已将模型中的许多参数链接到内部 ModelDatabase 中的值。这很好用。
现在我想允许用户为特定场景导入新的“输入文件”。我在模拟实验屏幕上添加了一个 fileChooser 元素,在 onUpload 操作中我使用 ModelDatabase.importFromExternalDB 将相关的 sheet 上传到相关的 table.
然而,这似乎不起作用。最初我认为更新根本没有发生,但是当我在 AnyLogic IDE 中停止模型并在 IDE 中再次启动它时,将使用新值。
更新似乎只发生在 startup/close 并且数据库在 运行 时是“静态的”。我确实在 importFromExternalDB 函数上将自动提交参数设置为 true,但这没有任何区别。
有没有我可以调用的函数来强制“刷新”内部数据库?
您可能在运行时使用默认代码加载数据,例如 selectFrom("some String with query")
但是,这些总是从缓存的数据库加载以加快速度。
相反,您必须使用附加参数强制 AnyLogic 从实时数据库加载。在此示例中,它将是 selectFrom(false, "some String query")
这在帮助中也有记载:
因此遍历模型中的所有查询并添加适当的布尔参数以从非缓存数据库中强制加载。