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'>
>>> 

Есть ли возможность избежать этого или оправиться от этого состояния?

0 ответов

Другие вопросы по тегам