NRules を使用して、セッションを作成し、ファクトを挿入し、それを起動して完了させたいと考えています。また、セッションがまだメモリ内 (静的変数) にある間に、ファクトの更新を呼び出したいと考えています。
private static ISession session; //this is instantiated when bulding the rules dinamically
public void RulesTest(RulesTest command)
{
//entities holds ALL facts ever inserted in session
var entities = _session.Query<Entity>();
_session.Insert(command.Fact);
Rule rule = GetRule();
_session.Insert(rule.Condition);
_session.Insert(rule.Action);
_session.Fire();
}
これによりルールが実行され、すべてが適切に実行されます。私が今実現したいのは、一度発火した同じ事実を更新できる機能を追加することですが、今は新しい値で...つまり、事実を更新して、条件を再度実行したいということです.
ファクト_session.Update(command.Fact)
を更新した後に実行すると、「更新するファクトが存在しません」というエラー メッセージが表示されますが、セッション中のすべてのファクトがまだ表示されます。
どんなアイデアでも大歓迎です。ありがとうございました。