我在写一些使用很多规则的系统。是时候让我组织起来让他们更有效率了。主要要求是-业务友好,易于理解,易于查找,易于维护,可测试。在
这个问题不是关于如何创建规则引擎。我不写。我的目标是想办法在一个地方维护很多规则。让一切变得简单。我需要一些专业的建议怎么做,采取什么方法。下面是我已经做过的例子来说明我正在做这项工作,而不是简单地让别人来做我的工作。在
到目前为止,我有三种方法:
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。在
每种方法都有自己的利弊,但老实说,我对任何一种都不满意。文件增长,变得庞大,难以搜索、维护和理解。欢迎任何其他方法或建议。在