Fork me on GitHub
#clara
<
2016-10-28
>
ramkumarkb03:10:43

@wparker: Hi William, With reference to your discussion thread on conditional activation: https://groups.google.com/forum/#!searchin/clara-rules/conditional$20activation%7Csort:relevance/clara-rules/w_Iq7zom2bU/OFcbeFZlCwAJ We have a similar requirement when we want to fire rule-3, when either rule-1 or rule-2 does not fire for a fact of TypeA We find that the [:not [Logicamarker ]] approach is not working as it appears that RETE engine fires the rule bcos before the rule-1 or rule-2 creates the LogicalMarker, rule-3 LHS seems to be satisfied. Any tips would be really helpful. (defrecord LogicalMarker [marker prop1 prop2] (defrule rule-1 [?a <- TypeA (= ?prop1 prop1) (= ?prop2 prop2)] [?x <- TypeX] => (insert! (map->LogicalMarker {:marker "1" :prop1 ?prop1 :prop2 ?prop2})) (defrule rule-2 [?a <- TypeA (= ?prop1 prop1) (= ?prop2 prop2)] [?y <- TypeY] => (insert! (map->LogicalMarker {:marker "2" :prop1 ?prop1 :prop2 ?prop2})) (defrule rule-3 [?a <- TypeA (= ?prop1 prop1) (= ?prop2 prop2)] [:not [LogicalMarker (= ?prop1 :prop1) (= ?prop2 :prop2)]] => (println "Conditional Rule executed successfully!")

ryanbrush18:10:36

Hey @ramkumarkb, I posted a response on the Google Group thread. Hopefully that helps.