PyCLIPS: как восстановиться после ошибок
Я использую PyCLIPS для интеграции CLIPS в программу, которая должна выступать в качестве ECA-сервера (event-conditon-action). Существуют входящие события, которые вместе с состоянием системы могут запускать или не запускать правила, которые затем генерируют действия на шине сообщений.
Состояние системы проявляется в виде экземпляров, чьи слоты изменяются в зависимости от входящих событий.
Программное обеспечение предназначено для долговременного обслуживания, но когда возникает ошибка во время выполнения правила, например, через обработчик с неправильным именем:
ERROR: [MSGFUN1] No applicable primary message-handlers found for event-handler.
[PRCCODE4] Execution halted during the actions of defrule event-rule.
Сеанс клипов перестает отвечать на новые сообщения. Слоты больше не обновляются с помощью:
clips_instance.Send(event, event_args)
В клипах ничего не происходит, даже если clips.DebugConfig.WatchAll()
нет отладочного вывода.
Пример:
>>> import clips
>>> clips.Build("(defclass POINT (is-a USER) (slot x) (slot y))")
>>> clips_instance = clips.BuildInstance("p1","POINT","(x 3) (y 5)")
>>> clips_instance.Send("get-x","")
<Integer 3>
>>> clips_instance.Send("get-z","")
<Symbol 'FALSE'>
>>> clips_instance.Send("get-y","")
<Symbol 'FALSE'>
>>>
Есть ли возможность избежать этого или оправиться от этого состояния?