接收Drools逻辑收回事件的通知

接收Drools逻辑收回事件的通知,drools,Drools,我有一个知识库来验证我的数据模型。UI中的修改事件以异步方式发布到一个单独的线程,该线程更新知识库并触发规则。验证错误触发错误对象的逻辑插入。我可以收集这些事件并将其异步发布回UI线程。但是,为了使UI更容易保持最新,我还想在用户修复错误时发布一个事件,即当错误对象从知识库中收回时 对于如何做到这一点,我有两个想法,但我都不喜欢: 我可以从过程代码中监听工作内存事件,但这会违反知识库中验证功能的封装 或者,我可以插入一个与错误对象的逻辑插入相匹配的标志对象,并编写一条规则来检测未配对的标志,收回

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

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

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


有没有一种干净简单的方法可以根据上述错误对象的逻辑缩回来激活规则?

自动回答,以便稍后我可以链接到该方法,并找出是否有更好的方法

以下是我最终采用的方法:

  • 触发验证规则时,insertLogical将插入一个具有表示验证错误的唯一id的对象(例如ValidationMessage)

  • ValidationMessage有一个属性“标记”,默认为false

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

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


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

    以下是我最终采用的方法:

  • 触发验证规则时,insertLogical将插入一个具有表示验证错误的唯一id的对象(例如ValidationMessage)

  • ValidationMessage有一个属性“标记”,默认为false

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

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