Regelinterpreter
Verfasst: Freitag 16. Dezember 2005, 10:41
Ich bin gerade an diversen Regelinterpretern dran. Habt Ihr Erfahrungen
bzgl. Geschwindigkeit und effizienter Implementierung?
Ich habe ziemlich viele if, elif, else Blöcke (ca. 10-20 Blöcke wie der
gezeigte Python-Code Block) , wo ich diverse Regeln abfrage. Ist dies
effizient? Kann man dies auch anders lösen? Diverse Regeln frage ich
über eine Datenbank ab, dies ist aber bestimmt nicht schneller ...
Tabellar
bzgl. Geschwindigkeit und effizienter Implementierung?
Code: Alles auswählen
elif wfnode.props['typeid']==6: #andJoin
if wfnode.props['statusid']==1 and wfnode.props['checkid']==1:
wfnode.updateProps('statusid',2)
self.pool.commit();self.pool.clear()
self.newEvent(self.userid,'wfnode','updated',wfnodeid,[])
elif wfnode.props['statusid']==2 and wfnode.props['checkid']==1:
wfNodesIn=self.queryMgr.getWfNodesIn(wfnodeid)
#check: if all parent nodes are (5,1) then update(2,5) else pass
checkid=1 #True
for i in wfNodesIn:
if i[2]!=5:
checkid=0
break
if checkid==1:
wfnode.updateProps('checkid',5)
self.pool.commit();self.pool.clear()
self.newEvent(self.userid,'wfnode','updated',wfnodeid,[])
elif checkid==0:
pass
elif wfnode.props['statusid']==2 and wfnode.props['checkid']==5:
wfnode.updateProps('statusid',5)
wfnode.updateProps('checkid',1)
self.pool.commit();self.pool.clear()
self.newEvent(self.userid,'wfnode','finished',wfnodeid,[])
gezeigte Python-Code Block) , wo ich diverse Regeln abfrage. Ist dies
effizient? Kann man dies auch anders lösen? Diverse Regeln frage ich
über eine Datenbank ab, dies ist aber bestimmt nicht schneller ...

Tabellar