在 Web 应用程序中使用 Drools Expert/Flow 的最佳实践

     2023-02-19     122

关键词:

【中文标题】在 Web 应用程序中使用 Drools Expert/Flow 的最佳实践【英文标题】:Best practices for using Drools Expert/Flow in a Web Application 【发布时间】:2011-04-18 13:46:07 【问题描述】:

我目前正在自学 Drools Expert/Flow 以及 GWT。我想使用 Drools Flow 作为事件/命令总线和业务规则引擎来实现应用程序不同部分之间的松散耦合。

到目前为止,我已经从我的测试用例中获得了 Expert 和 Flow 的工作,但是我很难弄清楚如何在 Web 容器中最好地实现 Flow。

我是否应该将所有的脚手架放入无状态会话 EJB 中,让每个请求从头开始设置所有内容,然后运行流程/规则?这对我来说似乎是一种资源浪费。我可以改为存储单个知识会话并在 Web 请求之间共享该会话,同时访问它,该场景是否可以扩展并且它是线程安全的(我的猜测是否定的)?汇集知识会议是个好主意吗?

我要问的基本上是上述是否有任何最佳实践?文档和示例虽然在其他方面非常好,但在这些特定点上并不清楚。

我确实读过一些关于 Drools Grid 的文章,但不确定这是否能解决我的问题,而且似乎正在开发中。如果我的问题不清楚,请直说。

BR 马格努斯

【问题讨论】:

【参考方案1】:

知识库是线程安全且重量级的(创建起来并不便宜),因此您可能希望将其保留在应用程序范围内。

目前,大多数人倾向于使用无状态架构并为每个 Web 请求创建 StatelessKnowlegdeSession(线程不安全且创建成本低),例如在无状态会话 bean(或 seam/CDI bean 或 spring bean)中. 但是,如果您拥有有状态 EJB 的强大功能,那么继续使用一个 StafefulKnowlegdeSession 来处理同一对话中的所有请求可能是有益的。

我不确定 StatefulKnowlegdeSession 是否是线程安全的(不这么认为), 所以我提出了一个问题:https://issues.jboss.org/browse/JBRULES-2842

【讨论】:

不幸的是,使用 Drools Flow 隐含意味着我必须使用 StatefulKnowledgeSession,否则 Flow 不起作用。我已经尝试过了,据我记得我得到了一个运行时异常。到目前为止,我能找到的唯一提示是在请求之间保留有关会话的所有数据。我想这归结为该工具的使用模式。也许我在应用 Drools 时遗漏了一些基本的东西。我发现的示例似乎更倾向于桌面应用程序使用 (Swing) 和持续进行的会话。

数据驱动规则引擎 - Drools

...:51:57【问题描述】:我一直在评估Drools作为我们的业务Web应用程序中使用的规则引擎。我的用例是一个订单管理应用程序。规则如下:-如果用户类型为“特殊”,则额外提供5%的折扣。-如果用户已经购买了10次以上,则额外提供... 查看详情

将drools引导决策表编译成规则

...09:46:42【问题描述】:我想知道如何使用Drools运行时在Java应用程序中使用DroolsWorkbench中的引导决策表。这个想法是,用户将在工作台中定义规则、流程和一些决策表,这些将被drools运行时拾取。不过,出于某种原因,我无法弄清... 查看详情

drools集成springboot

参考技术A为了更好的在项目中使用Drools,需要把Drools集成到SpringBoot,下面介绍集成的方法,并且开发简单的Demo和测试用例。pom.xml工程信息:引入spring-boot-starter-web作为Web工程,对外提供Rest服务,引入spring-boot-starter-log4j2日志框架... 查看详情

drools中使用function

一、背景当我们在drools中编写规则时,有些时候存在重复的代码,那么我们是否可以将这些重复代码抽取出来,封装成一个function来调用呢?那么在drools中如何自定义function?二、需求1、当我们的工作内存中存在Person对象时,则... 查看详情

决策树和规则引擎 (Drools)

...间】:2011-06-2017:20:33【问题描述】:在我现在正在处理的应用程序中,我需要定期检查数以万计的对象是否符合某种服务的要求。决策图本身采用以下形式,略大:在每个末端节点(圆圈)中,我需要运行一个操作(更改对象的... 查看详情

drools简单应用(代码片段)

  当某个服务的需求经常变的时候,如果使用了硬编码的方式进行开发会是一件非常麻烦的事。  最近在对项目的积分模块进行改造的时候想到了规则引擎,使用规则引擎处理复杂而且多变的业务逻辑有其非常大的优势,包... 查看详情

规则引擎drools在贷后催收业务中的应用

...维护和生成交由业务人员,为了达到这种目的通常我们会使用规则引擎来帮助我们实现。本篇文章主要介绍了规则引擎的概念以及Kie和Drools的关系,重点讲解了Drools中规则文件编写以及匹配算法Rete原理。文章的最后为大家展示... 查看详情

在drools excel决策表中声明对象

...【发布时间】:2013-03-0506:16:47【问题描述】:我正在尝试使用Drools决策表。我面临的问题是,drools没有为我分配当前对象的变量。我从drools得到这个错误:Drools错误:无法解决规则编译错误患者我的excel文件如下所示:我的部分... 查看详情

在drools的“then”子句中获取规则名称

...问题讨论】:【参考方案1】:是的,在then子句中你可以使用表达式:drools 查看详情

需要在列表中添加多个项目 - 决策表 - Drools

...rools决策表中为Pojo类创建一个新的多个对象实例。我已经使用两个事实学生事实和主题事实类实现了。我需要触发决策表中的所有规则,并且需要将所有值添加到对象的数组列表中。但我只得到决策表的最后一条规则值。 查看详情

如何在 Eclipse Indigo IDE 中安装 Drools 插件

...58:04【问题描述】:如何在eclipse中安装drools插件以及如何使用。谁有想法。【问题讨论】:在EclipseIDE中逐步设置drools插件的步骤已在以下链接中提供。这里提供了详细的截图说明ProceduretoinstallD 查看详情

在这种情况下我应该使用 Drools 吗?

】在这种情况下我应该使用Drools吗?【英文标题】:ShouldIuseDroolsinthissituation?【发布时间】:2011-01-1712:21:12【问题描述】:我将使用一所大学的图书馆系统来解释我的用例。学生在图书馆系统注册并提供他们的个人资料:性别,... 查看详情

jBPM 的Servet 的WEB-INF\lib 中需要哪些Drools JARS?

】jBPM的Servet的WEB-INF\\\\lib中需要哪些DroolsJARS?【英文标题】:WhatDroolsJARSareneededinaservet\'sWEB-INF\\libforjBPM?jBPM的Servet的WEB-INF\\lib中需要哪些DroolsJARS?【发布时间】:2013-09-2020:44:35【问题描述】:我已经移植了一个Tomcatservlet以与JBos... 查看详情

java规则引擎--drools

...正代码重启机器就可以立即在线上环境生效。 本文所使用的demo已上传 http://download.csdn.net/source/30022131、Drools语法开始语法之前首先要了解一下drools的基本工作过程,通常而言我们使用 查看详情

Google 在 Drools 中收集导入

】Google在Drools中收集导入【英文标题】:GooglecollectimportinDrools【发布时间】:2011-11-0217:34:21【问题描述】:当我尝试在Drools规则中导入MultiMap时,会导致以下错误[11,25]:[ERR102]Line11:25mismatchedinput\'COLLECT\'expecting\'identifier\'inimport有人... 查看详情

Drools:在数据库中存储规则

】Drools:在数据库中存储规则【英文标题】:Drools:storingrulesindatabase【发布时间】:2011-05-2212:23:14【问题描述】:目前我将所有规则文件存储在文件系统上(有很多版本)并在启动时将它们的不同版本加载到内存中。我想更改为... 查看详情

Drools 规则流程设计

...描述】:我最近开始研究流口水。我只是设计一个简单的应用程序来更好地理解它。我有一个.drl文件,其中包含一些“when”、“then”格式的规则。我在.bpmn文件中设计了一个流程图(都用于同一个项目)。我不想在我的流程图... 查看详情

Drools 在运行时禁用规则

...untime【发布时间】:2012-06-0515:52:56【问题描述】:我正在使用Drools和DroolsGuvnor开始一个项目。我的规则部署在droolsguvnor中。当您进行软件包发布构建和发布时,我的规则引擎实例可以通过droolsGuvnor公开的pkg文件访问这些规则。这... 查看详情