1

我有一个用于验证我的数据模型的知识库。来自 UI 的修改事件被异步发布到一个单独的线程,该线程更新知识库并触发规则。验证错误触发错误对象的逻辑插入。我可以收集这些并将事件异步发布回 UI 线程。然而,为了更容易使 UI 保持最新状态,我还想在用户修复错误时发布一个事件——即,当一个错误对象从知识库中撤回时。

对于如何做到这一点,我有两个想法,我都不喜欢:
我可以从过程代码中监听工作记忆事件,但这会违反知识库中验证功能的封装。

或者,我可以插入一个标志对象与我的错误对象的逻辑插入配对,并编写一个检测未配对标志的规则,收回它们,并触发“错误修复”事件。

如上所述,是否有一种干净简单的方法可以根据错误对象的逻辑撤回来激活规则?

4

1 回答 1

1

自我回答,以便我稍后可以链接到此,并找出是否有更好的方法来做到这一点。

这是我最终采取的方法:

  1. 当验证规则被触发时,插入逻辑一个具有唯一 id 的对象,表示验证错误(例如 ValidationMessage)。

  2. ValidationMessage 有一个属性“已标记”,默认为 false。

  3. 定义在存在未标记的 ValidationMessage 时触发的规则。在 RHS 中,标记消息并对全局事件处理程序进行 onAssert 调用。插入与 ValidationMessage 具有相同 id 的第二个对象(例如 ValidationMessageFlag)。

  4. 当没有对应的 ValidationMessage(具有相同的 id 存在)时,定义一个在 ValidationMessageFlag 存在时触发的规则。在 RHS 中,在全局事件处理程序中调用 onRetract。收回 ValidationMessageFlag。

于 2011-06-22T13:56:38.990 回答