У меня есть база знаний для выполнения проверки моей модели данных. События модификации из пользовательского интерфейса асинхронно публикуются в отдельном потоке, который обновляет базу знаний и запускает правила. Ошибки проверки запускают логическую вставку объекта ошибки. Я могу собирать их и публиковать события асинхронно обратно в поток пользовательского интерфейса. Однако, чтобы упростить поддержание актуальности пользовательского интерфейса, я также хочу опубликовать событие, когда пользователь исправляет ошибку, т.е. когда объект ошибки извлекается из базы знаний.
У меня есть две идеи, как это сделать, ни одна из которых мне не нравится:
Я мог прослушивать события рабочей памяти из процедурного кода, но это нарушало бы инкапсуляцию функциональности проверки в базе знаний.
Кроме того, я мог бы вставить объект-флаг в паре с моей логической вставкой объекта ошибки и написать правило, которое обнаруживает непарные флаги, убирает их и запускает событие «ошибка исправлена».
Существует ли простой и понятный способ активировать правило, основанное на логическом возврате объекта ошибки, как описано выше?