一个简单"决策树"的实现

Posted on 2005-09-01 19:55 publisher luo 阅读(4169) 评论(0)  编辑  收藏 所属分类: 项目问题解决



   客户的权限要求采集回来了,天哪,根本不是什么权限的设置和判断了,原有内容管理中的权限管理(RBAC Role based Access Control 基于角色的访问控制)根本不能解决问题. 经过仔细分析,所有要求具为领导拍脑袋定下来的不符合逻辑的一些逻辑。如何解决?随即想到了采用专家系统来解决这个问题。找到开源的rete算法java实现包Drools(http://www.theserverside.com/articles/content/Drools/article.html), 并察看了专家系统的部分书籍。但是项目时间紧迫所以放弃了,主要是其规则存放于xml中,没想出好的办法与本工程良好的配合起来。所以还是决定先采用简单 的决策树(本系统中正好有树状结构的内容管理系统,很容易扩展)解决问题。在每个树状决策节点可以加入条件和行为,如何解析?成了一个问题。再 google一下,找找开源的脚本解析,哦不错有java脚本的解析器( BeanShell---Java应用程序脚本引挚 )可以直接解析java语句,功能比较强大,包也不大。不得不佩服现在的开源真是如火如荼,还是早早的加入进去吧。

主要测试代码:
//创建一个bsh解释器实例
  Interpreter bsh = new Interpreter();
//测试执行一个接口实现的类
String program = "public Object excute(int aa,String bb){return \"Cool\";}";
program ="Command command= new Command(){"+program+"};";
program += "Object obj=command.excute(aa,bb);";
bsh.eval(program);
//测试执行一个函数
String program = "Object excute(int aa,String bb){return \"bb+aa\";}";
program += "Object obj=excute(aa,bb);";String program = "Object excute(int aa,String bb){return \"bb+aa\";}";
program += "Object obj=excute(aa,bb);";
bsh.eval(program);
  
  bsh.eval(program);


只有注册用户登录后才能发表评论。


网站导航:
 

posts - 9, comments - 27, trackbacks - 0, articles - 19

Copyright © publisher luo