Posted on 2005-09-01 19:55
publisher luo 閱讀(4192)
評論(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); |