現在看是,爲了將這些數量巨大的API分門別類的存放,以指示使用者在何種場合使用哪一部分API,比如api目錄中爲用戶提供可編程的interface,corba中提供corba相關的服務。
2、關於Shark中Adapter模式的頻繁使用問題
在Shark的設計思想中,我理解是基於一個Meta-Data Framework的框架,就是概念模型,而在實現的時候有一些與概念模型不完全相同的東西,所以作者就分別寫了概念模型,與實現模型,然後用Adapter模式將這兩個部分粘合起來,這就是在Shark模型中充斥着大量的XxxxImpl類,XxxxWraper類的原因。(具體內容請參見我的另外一個文章Shark的概念模型與實現模型)
3、如何使用API的方式來調用Shark引擎
首先需要將Shark的lib下所有jar都引入到本project的Classpath中(好像原包中缺少hibernate包,可以下載對應的),
然後在modules目錄中進行搜索src,這樣就可以將每一個單獨目錄中的源文件合在一起,拷貝所有搜索結果到一個目錄src,引入到jb或eclipse中,編譯,就可以比較方便的看到Shark的源碼了。
主要使用org.enhydra.shark.api.client包。
①:Shark.configure(),一般需要指定其shark.conf的位置,該文件主要爲SharkEngineManager的提供各種管理器的配置,你可以擴展shark的框架,用自己的Manager類來實現特殊的功能,完成後寫在shark.conf配置文件中。
②:Shark.getInstance(),返回一個SharkInterface的實例
此後,你需要決定是獲得一個與Shark服務器的連接執行分配的任務(需要服務器運行),還是獲得一個AdminInterface來管理用戶、組、Package(不需要服務器運行)。
比如,查看一個用戶有幾個代辦項目的實現代碼:
Shark.configure("Shark.conf");
SharkInterface si = Shark.getInstance();
SharkConnection sc = si.getSharkConnection();
try {
sc.connect("leo", "l", "Shark", "");
System.out.println("你有" + sc.getResourceObject().how_many_work_item() + "個任務");
} catch (Exception e) {
e.printStackTrace();
}