标签: drools-flow

使用junit进行Drools测试

使用junit测试drools规则的最佳做法是什么?

到目前为止,我们使用junit和dbunit来测试规则.我们有样本数据放到hsqldb.我们有几个规则包,到项目结束时,很难做出一个好的测试输入来测试某些规则而不是激发其他规则.

所以确切的问题是,如何将junit中的测试限制为一个或多个特定的测试规则?

感谢帮助,

Hubidubi

junit rule-engine jboss-rules drools drools-flow

10
推荐指数
3
解决办法
1万
查看次数

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

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

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

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

我要求的基本上是否有上述的最佳做法?文档和示例虽然非常好,但在这些特定点上并不清楚.

我确实读过一些关于Drools Grid的东西,不确定这是否能解决我的问题,而且似乎正在开发中.如果我的问题不清楚,请说出来.

BR Magnus

architecture web-applications drools drools-flow

9
推荐指数
1
解决办法
3849
查看次数

决策树和规则引擎(Drools)

在我正在进行的应用程序中,我需要定期检查成千上万个对象的资格,以获得某种服务.决策图本身采用以下形式,只是更大:决策图

在每个端节点(圆圈)中,我需要运行一个动作(更改对象的字段,日志信息等).我尝试使用Drool Expert框架,但在这种情况下,我需要为图中的每个路径编写一条长规则,从而导致结束节点.Drools Flow似乎也没有为这样的用例构建 - 我拿一个对象,然后,根据一路上的决定,我最终进入一个终端节点; 然后又为另一个对象.或者是吗?你能给我一些这些解决方案的例子/链接吗?

更新:

Drools Flow调用可能如下所示:

// load up the knowledge base
KnowledgeBase kbase = readKnowledgeBase();
StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
Map<String, Object> params = new HashMap<String, Object>();

for(int i = 0; i < 10000; i++) {

    Application app = somehowGetAppById(i);

    // insert app into working memory
    FactHandle appHandle = ksession.insert(app);

    // app variable for action nodes
    params.put("app", app);

    // start a new process instance
    ProcessInstance instance = ksession.startProcess("com.sample.ruleflow", params);
    while(true) {
        if(instance.getState() == instance.STATE_COMPLETED) {
            break; …
Run Code Online (Sandbox Code Playgroud)

java drools expert-system decision-tree drools-flow

9
推荐指数
1
解决办法
1万
查看次数