首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 最近发现 drools4 有点问题! 动态增加规则后 会出事实对象不触发规则!想问一下大家还有这样 的问题! [无满意答案结贴]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-20 10:20:09 楼主
    本人写了 一个基于 drools 的后台java程序,初始化的时候加载一批规则,事实对象能正常触发这鞋规则!
    但是在动态增加规则和移除规则的时候就会出现规则不会被事实对象触发!
    代码:
    /**
    * 运行规则事实过滤
    * @param factList 传入事实集合
    * @param groupName
    */
    public void runFactFilter(RuleBeanBase[] ruleBeanBase, String groupName, long tempLate, Connection conn, int beanNum){
    try {
    log.debug("---------statefulSession.fireAllRules ---------start-----");
    for (int i = 0; i < beanNum; i++) {
    if (ruleBeanBase[i] != null)
    statefulSession.insert(ruleBeanBase[i]);
    }

    statefulSession.fireAllRules(new RuleNameStartsWithAgendaFilter("r" + groupName + "_"));
    //log.debug("---------statefulSession.getFactHandle-----------");
    for (int i = 0; i < beanNum; i++) {
    if (ruleBeanBase[i] != null) {
    FactHandle handle = statefulSession.getFactHandle(ruleBeanBase[i]);
    if(handle !=null)
    statefulSession.retract(handle);
    }
    }
    log.debug("---------statefulSession.fireAllRules ------------over--");
    } catch (Exception err) {
    log.error("****** Insert WorkMomey is Exception******");
    log.error("****** Exception info:******");
    log.error("*-" + err.getMessage());
    log.error("******************************************",err);
    }
    }
    /**
    * 插入一条新的规则
    * @param rule
    * @return 1 插入成功, -1 插入失败
    */
    public synchronized short insertRule(String rule) {
    try {
    StringReader source = new StringReader(rule);
    PackageBuilder builder = new PackageBuilder();
    builder.addPackageFromDrl(source);
    Package pkg = builder.getPackage();
    ruleBase.addPackage(pkg);
    //System.out.println(ruleBase);
    log.debug("success to insert a rule to rule cache:");
    } catch (Exception ex) {
    ex.printStackTrace();
    log.error("error to insert a rule to rule cache.", ex);
    return -1;
    }
    return 1;
    }
    /**
    * 删除一条旧的规则
    *
    * @param ruleId
    * @return 1 删除成功, -1 删除失败 0 没有该规则
    */
    public synchronized short deleteRuleByRuleName(String ruleName) {
    //log.debug("start delete data:" + ruleName);
    Package[] pks = ruleBase.getPackages();
    boolean exist = false;
    for (int i = 0; i < pks.length; i++) {
    // log.debug("package: " + pks[i].getName());
    Rule[] rules = pks[i].getRules();
    for (int j = 0; j < rules.length; j++) {
    if (ruleName.equals(rules[j].getName())) {
    exist = true;
    }
    }
    }
    if (!exist) {
    // log.debug("rule:" + ruleName + " not exist.");
    return 0;
    }
    // log.debug("start delete data:" + ruleName);
    try {
    if (ruleBase != null) {
    ruleBase.removeRule("com.eaxactmkt.rules", ruleName);
    // log.debug("success to remove rule data:" + ruleName);
    }
    } catch (Exception ex) {
    log.error("error to delete a rule which name is " + ruleName, ex);
    return -1;
    }
    return 1;
    }
    个人感觉代码上面没有什么问题! 我使用的是 drools 4.04 ,
    80  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-24 13:38:411楼 得分:0
    个人感觉代码上面应该没有什么错误才对! 难道是因为内存不够! 2G 内存已经够了吧!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-01 14:06:382楼 得分:0
    不知,帮顶
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-09 15:08:403楼 得分:0
    发表于:2008-05-09 13:40:51 楼主

    北京思源培训中心(http://www.ciitc.com)专业做软件开发技术的培训;由于课程培训需要,长年高薪诚聘兼职讲师,欢迎计算机及相关专业的高校老师、研究生、博士生应聘   
    基本要求如下:
    l    本科以上学历,计算机或相关专业毕业。
    2    具有实际相关工作经验,从事过软件开发或系统管理工作。
    3    语言表达清楚、流畅、逻辑思维清晰,英语听说良好。
    4    诲人不倦,有高度的责任感、敬业精神和团队意识。
    5    注重仪表,具有随机应变的能力。
    6    具有一定的教学经验,从事过教学/培训业务者优先考虑。

    精通应聘职位的某一部分课程内容,如下述编程语言或系统的一种或几种:
    1.    编程语言:C++, VC++,VB.NET,C#, PowerBuilder, Delphi, Java,
      Matlab , C++Builder
    2.    数据库系统:SQL Server2000, SQL Server2005, Oracle,DB2,MySql
    3.    网站编程:Marcomedia, HTML, Altova XML Suite,ASP, JSP, J2EE, J2SE,
        PHP,ASP.NET,VB.NET, ColdFusion,ajax
    4.    操作系统:Unix, Linux,Linux环境下嵌入式开发技术,Sun Solaris,IBM AIX
    5.      办公软件:OFFICE(EXCEL、WORD、POWERPOINT)
    6.      多媒体制作:Authorware7.0  , Director MX 2004
    7.      图形动画类:Photoshop, Illustrator, CorelDRAW, FreeHand, 
    Flash ActionScript高级编程,3DMAX,AutoCAD2007 ,Maya
    具有下述任何一种或几种国际IT认证证书者优先考虑:
    1.    微软认证证书MCP / MCSA / MCSE / MCDBA / MCSD
    2.    SUN Java认证证书
    3.    Oracle认证证书
    4.    Macromedia认证证书
    5.    Linux认证证书
    6.    CIW (Certified Internet Webmaster) Associate/Professional/Master认证证书

    有意者请把简历发到如下地址:abc@ciitc.com  QQ:174629429  MSN:bjcosun@hotmail.com
    http://www.ciitc.com



    问题点数:20 回复次数:0 显示所有回复显示星级回复显示楼主回复 修改 删除 举报 引用 回复 
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    世纪乐知(北京)网络技术有限公司 版权所有 京 ICP 证 020026 号
    Copyright © 2000-2007, CSDN.NET, All Rights Reserved