python业务规则引擎_Python中的规则引擎

我在写一些使用很多规则的系统。是时候让我组织起来让他们更有效率了。主要要求是-业务友好,易于理解,易于查找,易于维护,可测试。在

这个问题不是关于如何创建规则引擎。我不写。我的目标是想办法在一个地方维护很多规则。让一切变得简单。我需要一些专业的建议怎么做,采取什么方法。下面是我已经做过的例子来说明我正在做这项工作,而不是简单地让别人来做我的工作。在

到目前为止,我有三种方法:

1)数组类型:

在item=context.GetNextItem()

if ['banana','apple','orange'].Contains(item): EatRaw(item)

if ['banana','apple','potato'].Contains(item): BakeAndEat(item)

if ['meat','egg','potato','fish'].Contains(item): FryAndEat(item)

if ['pasta','egg','potato'].Contains(item): BoilAndEat(item)

2)每个项目的单独文件:

^{pr2}$

3)存储的数据库:

在item=context.GetNextItem()

SQL = "SELECT rule FROM rules where item='"+str(item)+"';"

for row in cursor.execute(SQL):

eval( row.rule+"(str("+item+"))" )

表格规则

在banana,EatRaw

banana,BakeAndEat

potato,BakeAndEat

potato,FryAndEat

potato,BoilAndEat

3.a)文件中的数据

文件规则.txt

在banana,EatRaw

banana,BakeAndEat

potato,BakeAndEat

potato,FryAndEat

potato,BoilAndEat

这个文件可以看作是一个UI。在

每种方法都有自己的利弊,但老实说,我对任何一种都不满意。文件增长,变得庞大,难以搜索、维护和理解。欢迎任何其他方法或建议。在

你可能感兴趣的:(python业务规则引擎)