私は別のプログラムにCLIPSを埋め込み、推論エンジンとして主に使用しています。私のルール条件はlogical
キーワードを使用して、ルールがサポートされなくなったときに、assert
がルールのアクションとして実際に取り消されるようにします(BPGセクション5.4.8)。私は一般的に、タイプfoo
(foo
がファクトの最初のフィールドである、例えば(foo bar baz)
)のすべてのアサートされたファクトをチェックする必要があります。これを行うために、私はファクトリスト全体を解析してきましたが、これを行うことは減速の重要な原因になっています。事実がサポートを失ったときのCLIPSコールバック
私が気にする事実はすべて自分自身のルールで宣言されているので、興味のある事実が主張されていることを私のプログラムに通知するために各ルール内のコールバックを使用することを考えました。事実がアサートされたときに、それが収縮されたときではない。私は事実がサポートされなくなったときに発動する逆のルールを書く方法を思いつきましたが、うまくいくものを考え出すことができませんでした。私は、ルール条件全体をnot
でラップする明白なアプローチを試みましたが、これはnot
節の外で変数を使用することはできません。これはコールバックが正しく機能するために必要なものです。
事実のリストを反復処理以外のタイプfoo
のすべての事実を照会する明白な方法はありますか?または、ルール/ファクトがサポートを失ったときにコールバックを取得する方法はありますか?これはかなり簡単にできるはずですが、私がここで欠けているものがありますか?