flowable IdmEngine和IdmEngineConfiguration
阿新 • • 發佈:2018-11-14
IdmEngineConfiguration 繼承了 AbstractEngineConfiguration。
一、建立EngineConfiguration例項
IdmEngineConfiguration 提供7個公共的靜態方法用於建立自身的例項。
其中用於Spring環境下的有5個,用於Standalone環境下的有2個。
Standalone環境下的建立程式碼如下:
public static IdmEngineConfiguration createStandaloneIdmEngineConfiguration() {
return new StandaloneIdmEngineConfiguration();
}
public static IdmEngineConfiguration createStandaloneInMemIdmEngineConfiguration() {
return new StandaloneInMemIdmEngineConfiguration();
}
二、建立 IdmEngine
IdmEngineConfiguration提供建立IdmEngine的buildIdmEngine()方法:
public IdmEngine buildIdmEngine () {
init();
return new IdmEngineImpl(this);
}
三、初始化服務
在init()方法中,初始化引擎中用到的服務。
protected void init() {
...
initServices();
...
}
protected void initServices() {
initService(idmIdentityService);
initService(idmManagementService);
}
protected void initService(Object service) {
if (service instanceof ServiceImpl) {
((ServiceImpl) service).setCommandExecutor(commandExecutor);
}
}
這些服務定義在IdmEngineConfiguration中:
protected IdmIdentityService idmIdentityService = new IdmIdentityServiceImpl();
protected IdmManagementService idmManagementService = new IdmManagementServiceImpl();
這些服務經過init()初始化後,通過IdmEngineConfiguration傳入IdmEngine例項。
init()初始化時,將AbstractEngineConfiguration的屬性CommandExecutor 傳遞給這些服務。
這些服務有一個公共的父類 ServiceImpl
ServiceImpl 包含一個CommandExecutor型別的屬性。
這些服務通過代理模式,封裝CommandExecutor完成服務中方法的具體行為的實現。