作者:楊洪波
shark和jbpm配置文件處理方式比較
1.都使用了單例模式
我想這個是最基本的,一般的程序員寫解析程序都會這樣使用;要說明的是,AgileFlow
除了使用單例模式,還實現了配置文件的動態裝載,如果用戶修改了配置文件,它能夠在
運行中動態的獲取這些變化.
使用jbpm時,第一句話就要使用該模式:JbpmServiceFactory.getInstance()....
2.都實現了缺省配置和定製配置
Shark中,缺省配置放在一個深層次的目錄中,定製配置放在config目錄,兩個配置
文件的內容差不多;
jbpm中,缺省配置放在代碼中實現,如下:
propertyClassNames = new HashMap();
propertyClassNames.put( "default", "org.jbpm.impl.DefaultServiceFactory" );
abbreviatedClassNames.put( "jbpm.service.factory", propertyClassNames );
定製配置放在config目錄中,爲jbpm.properties
比較而言,jbpm的實現方式要好,理由如下:
1)缺省配置容易找到
2)定製配置很簡單,默認是沒有配置的,比shark的要清爽很多
3.都實現了用一個單例實現多個單例
我在Shark學習系列的文章中討論過這個功能,jbpm是在JbpmConfiguration.java中實現的:
private void instantiateConfiguredObjects() {
// instantiate configured objects
this.fileMgr = (FileMgr) instantiate( "jbpm.file.mgr", FileMgr.class );
this.idGenerator = (IdGenerator) instantiate( "jbpm.id.generator", IdGenerator.class );
this.serviceFactory = (ServiceFactory) instantiate( "jbpm.service.factory", ServiceFactory.class );
}