首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >哪种模式最适合开发规则/决策引擎

哪种模式最适合开发规则/决策引擎
EN

Stack Overflow用户
提问于 2010-01-24 18:45:14
回答 6查看 2K关注 0票数 9

我正在开发一个决策引擎/规则评估引擎。例如:

输入:客户和客户所做的所有违规行为

输出:犯罪的后果

一个示例是:

输入:客户(Jhonny Chimpo,999-00-1111),违规行为(打破窗户,扇老板耳光,踢团队领导的腹股沟)

输出:收到解雇通知

因此,我要写的这段代码根据每个罪行和组合罪行的规则来评估不同的罪行。当前的代码只是if和else语句的迷宫。我相信这样的商业问题是很常见的。通常使用什么设计/企业模式来解决这样的问题?

这是规范模式吗?我想要的代码是开放的扩展,干净和灵活。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-01-24 21:15:16

基本上,业务规则如下所示

代码语言:javascript
复制
forall rules:
  if <condition> then doAction();

用分数对所有的犯罪行为按严重程度进行分类,也许是对经常“作恶者”的额外奖励,有些犯罪行为可能会变得有时间限制,或者任何需要的。

然后,算法的粗略草稿可以是:

客户(weighted)

  • compare的所有分数与最大之和的
  • 总和

这将直接使用数据结构,而不是许多(可能是深度嵌套的) if..then..else内容。

票数 3
EN

Stack Overflow用户

发布于 2010-01-24 19:28:21

我可以向你推荐一个我们用来解决类似问题的工具。

看看JBoss Drools:http://www.jboss.org/drools/

它是一个BRMS:业务规则管理系统

这是一个介绍性的视频:http://www.jboss.com/products/platforms/brms/

票数 3
EN

Stack Overflow用户

发布于 2010-02-08 08:22:04

我不确定上面的答案有没有那么有帮助。

我曾经使用expression trees编写过类似的组件。您可以构建表示谓词的lambda表达式,编译并执行它们,所有这些都是动态的,然后触发一些响应动作。这种方法是强大的,灵活的,并去除了所有的if/else的恐怖(这绝对不是去的方式)。

然而,您真正谈论的是逻辑编程。Prolog在.NET上有很多实现,它是一种基于逻辑的语言,经常用于AI应用,一旦你掌握了它的范例,它就会变得非常强大。

看一下其中的一些..

  • Prolog.NET
  • P#
  • C#Prolog
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2126729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档