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); |