Implemented a first and basic version of a Rete rule engine

This commit is contained in:
2021-02-09 16:06:32 +01:00
parent 821dbed189
commit a2a8d5c5e5
110 changed files with 7301 additions and 1654 deletions
+24
View File
@@ -0,0 +1,24 @@
from core.rule import Rule, ACTION_TYPE_TEST
class RuleForTestingRete(Rule):
def __init__(self, *disjunctions, name=None):
"""
:param disjunctions: list of list of Condition. List of OR. inner list is a list of AND
:para name: optional name for the rule
"""
try:
predicate = " or ".join([
" and ".join([str(c) for c in disjunction.conditions]) for disjunction in
disjunctions])
except AttributeError:
predicate = "N/A"
super().__init__(ACTION_TYPE_TEST, name, predicate)
self.disjunctions = disjunctions
self.metadata.id = 9999
self.metadata.is_compiled = True
self.metadata.is_enabled = True
def get_rete_disjunctions(self):
return self.disjunctions