`

Drools动态加载规则文件的解决方案

XML 
阅读更多
/**
 * Tools for Drools
 * @author kevin
 * @version Date: 2009-7-7 Time: 10:34:58
 */
public class DroolsUtil {
    private KnowledgeAgent kagent;
    private static DroolsUtil instance;

    /**
     *  return the default agent with name "agent" and interval "5"
     */
    private DroolsUtil(){
        this.kagent = getKnowledgeAgent("agent","5");
    }

    /**
     * return the agent with the specified name and interval
     * @param agentName The name of the agent
     * @param interval The interval to scan resources
     */
    private DroolsUtil(String agentName,String interval){
        this.kagent = getKnowledgeAgent(agentName,interval);
    }

    /**
     * return the instance with default agent
     * @return DroolsUtil's instance
     */
    public static DroolsUtil getInstance(){
        if(instance == null){
            instance = new DroolsUtil();
        }
        return instance;
    }

    /**
     * return the instance with agent which is given specified name and  interval
     * @param agentName The name of the agent
     * @param interval The interval to scan resources
     * @return DroolsUtil's instance
     */
    public static DroolsUtil getInstance(String agentName,String interval){
        if(instance == null){
           instance = new DroolsUtil(agentName,interval);
        }
        return instance;
    }

    /**
     * Get the KnowledgeAgent and make it scan the resources per 5 seconds
     * @param agentName The name of the agent
     * @param interval The interval to scan resources
     * @return KnowledgeAgent
     */
    public KnowledgeAgent getKnowledgeAgent(String agentName,String interval){
        ResourceChangeScannerConfiguration sconf = ResourceFactory.getResourceChangeScannerService().newResourceChangeScannerConfiguration();
        sconf.setProperty("drools.resource.scanner.interval",interval);
        ResourceFactory.getResourceChangeScannerService().configure(sconf);
        ResourceFactory.getResourceChangeScannerService().start();
        ResourceFactory.getResourceChangeNotifierService().start();
        KnowledgeAgentConfiguration aconf = KnowledgeAgentFactory.newKnowledgeAgentConfiguration();
        aconf.setProperty("drools.agent.scanDirectories","true");
        aconf.setProperty("drools.agent.newInstance","true");
        KnowledgeAgent kagent = KnowledgeAgentFactory.newKnowledgeAgent(agentName,aconf);
        kagent.applyChangeSet(ResourceFactory.newClassPathResource("resource.xml"));
        return kagent;
    }

    /**
     * Get the KnowledgeBase
     * @return KnowledgeBase
     */
    public KnowledgeBase getKnowledgeBase(){
        return kagent.getKnowledgeBase();
    }

    /**
     * Get the StatefulKnowledgeSession
     * @return StatefulKnowledgeSession
     */
    public StatefulKnowledgeSession getStatefulKnowledgeSession(){
        return getKnowledgeBase().newStatefulKnowledgeSession();
    }

    /**
     * Get the StatelessKnowledgeSession
     * @return StatelessKnowledgeSession
     */
    public StatelessKnowledgeSession getStatelessKnowledgeSession(){
        return getKnowledgeBase().newStatelessKnowledgeSession();
    }
	
}

 

分享到:
评论
1 楼 xiao007 2010-07-30  
你也研究规则引擎么,你们项目中有用到么

相关推荐

    drools5 规则动态加载示例

    drools5提供了一种解决方案,允许我们在运行时动态地加载和应用新的或修改过的规则,极大地提高了灵活性。 动态加载规则的核心概念是Drools的KieSession,它是规则引擎的执行环境。通过创建一个KieSession实例,...

    JAVA规则引擎JBOSS RULES(DROOLS 6.5) 动态规则

    总的来说,DROOLS 6.5作为JAVA规则引擎,为业务规则管理提供了强大且灵活的解决方案。动态规则功能使得规则可以在运行时动态调整,极大地提高了业务的适应性和响应速度。通过学习和应用DROOLS,开发者可以构建出更加...

    规则引擎Drools.NET移植版

    **规则引擎Drools.NET移植版** Drools是一款强大的业务规则管理系统,源自Java社区,以其灵活、高效和可扩展的特性而广受赞誉。...对于需要处理大量业务规则的.NET项目,Drools.NET无疑是一个值得考虑的解决方案。

    idea开发drools的设置文件

    此时,IDEA 将识别这是一个 Drools 规则文件,并为你提供基本的语法提示。 3. **智能提示与代码格式化**: 尽管导入了设置,但描述中提到,可能无法直接获取代码格式化的功能。这可能是因为 IDEA 的默认设置尚未...

    drools动态增加、修改、删除规则.doc

    在学习和实现过程中,可以参考Drools官方文档,以及相关的技术博客和论坛讨论,获取更多细节和解决方案。 总结,Drools的动态规则管理是一项复杂但实用的功能,它允许我们在程序运行期间动态调整业务逻辑,提高系统...

    Drools规则流

    Drools是一款开源的业务规则管理系统(BRMS),它提供了一套完整的解决方案,包括业务规则引擎、工作流引擎、以及业务资产管理和模拟工具等。其中,规则流是Drools的重要组成部分之一,用于控制规则执行的顺序,使得...

    从Drools规则引擎到风控反洗钱系统v0.3.2.pdf

    17. **异常问题汇总**:列出了在使用Drools时可能遇到的异常问题及其解决方案。 ### 其他信息 18. **文档更新与联系方式**:文档说明了正在持续更新中,并提供了作者的联系方式、技术交流群和博客地址。 19. **...

    Drools

    Drools是一款强大的Java规则引擎,它为业务规则管理提供了高效、灵活且可扩展的解决方案。作为基于模型的决策自动化工具,Drools允许开发者将复杂的业务逻辑编码为一系列易于理解和维护的规则,这些规则可以独立于...

    DRools BRMS Rule创建问题?

    本篇文章将深入探讨在使用Drools进行规则创建时可能遇到的问题及其解决方案。 首先,我们来看看标题“Drools BRMS Rule创建问题?”所涉及的关键知识点。Drools的规则创建主要依赖于其规则语言DRL(Drools Rule ...

    drools5规则引擎开发教程

    本教程旨在帮助读者理解和掌握如何使用Drools5来构建高效、灵活的业务规则解决方案。 Drools5的核心概念包括规则(Rules)、工作流(Workflows)和决策表(Decision Tables)。规则是业务逻辑的表达,由条件和动作...

    Drools规则引擎技术分享

    【Drools规则引擎技术分享】 在电商平台上,促销活动的规则制定往往涉及到复杂的业务逻辑。例如,根据用户购买订单的金额...对于处理如电商平台促销活动这类依赖于动态规则的场景,Drools无疑是一个理想的解决方案。

    从Drools规则引擎到风控反洗钱系统V0.2.3

    其中,Drools是最流行的开源规则引擎之一,而VisualRules和ILog则是知名的商业解决方案。 **1.2 Drools规则引擎** Drools是一款开源的业务规则管理系统(BRMS),它使用了Charles Forgy的RETE算法,这是一种高效的...

    使用 Drools 规则引擎实现业务逻辑

    在这种背景下,规则引擎作为一种灵活高效的解决方案应运而生。本文将重点探讨如何利用Drools这一开源规则引擎来优化Java应用程序中的业务逻辑处理。 #### 什么是Drools规则引擎 Drools是一款用Java编写的开源规则...

    Drools5规则引擎开发教程

    Drools5是该系列中的一个重要版本,支持多种规则语言和API接口,为用户提供了一套完整的解决方案。 #### 二、Drools5开发环境搭建 **2.1 下载开发工具** 为了搭建Drools5的开发环境,首先需要确保已安装Java ...

    外部应用和drools工作平台集成解决方案

    在本集成解决方案中,我们将探讨如何将外部应用与 Drools Workbench 6.1 集成,以便在 Drools 工作平台上管理和执行自定义的规则。 首先,我们需要安装 Drools Workbench。这里推荐使用 jbpm6-console 的最完整版,...

    Drools规则引擎小结

    它提供了全面的规则引擎解决方案,包括规则的编写、测试、部署和执行。Drools支持基于DMN(决策模型和表示法)的业务决策建模,以及传统基于规则的系统。 2. **规则引擎原理** 规则引擎将业务规则从应用代码中分离...

    drools实例

    《 Drools 实例:深入...总结,Drools 作为强大的实时规则引擎,为企业提供了一种灵活且高效的业务规则管理解决方案。通过实例学习,可以加深对 Drools 工作原理的理解,并在实际项目中发挥其优势,解决复杂业务问题。

    Drools5规则引擎开发教程(加了书签).pdf

    Drools5作为一款成熟的规则引擎,为企业级应用提供了灵活高效的业务规则管理解决方案。通过上述介绍的学习准备、规则编写与运行以及API使用等方面的知识点,开发者可以迅速掌握Drools5的基本使用方法,进而根据具体...

    Drools5 规则

    综上所述,Drools5是一个功能强大、易于使用的业务规则管理系统,它为企业提供了灵活高效的业务规则管理解决方案。无论是对于初学者还是经验丰富的开发人员,掌握Drools5都将是一项非常有价值的技术。

    drools入门指南(基于drools6.2).pdf

    ### Drools 入门指南知识点总结 #### 一、技术简介 **1.... Drools是一款基于Java的开源业务规则管理系统(BRMS),它能够帮助...无论是简单的HelloWorld示例还是复杂的会员积分系统,Drools都能提供有效的解决方案。

Global site tag (gtag.js) - Google Analytics