一個簡單"決策樹"的實現

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

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

          Copyright © publisher luo

          主站蜘蛛池模板: 天台县| 广饶县| 都兰县| 石狮市| 文山县| 阳高县| 镇远县| 平江县| 石棉县| 鸡西市| 山东省| 武汉市| 崇州市| 尼木县| 新晃| 东至县| 义马市| 乳山市| 曲水县| 丹棱县| 定陶县| 姜堰市| 边坝县| 醴陵市| 鄂伦春自治旗| 通州区| 余江县| 乌兰县| 江西省| 吴桥县| 咸丰县| 论坛| 田林县| 民和| 宜昌市| 白玉县| 若尔盖县| 青海省| 历史| 泰安市| 宁安市|