flowable DmnEngine和DmnEngineConfiguration
阿新 • • 發佈:2018-11-14
一、DmnEngineConfiguration建立例項
DmnEngineConfiguration 提供了7個公共的靜態方法,用於建立自身例項。
其中5個是使用spring的機制載入配置檔案。
另外2個是Standalone形式的,程式碼如下:
public static DmnEngineConfiguration createStandaloneDmnEngineConfiguration() {
return new StandaloneDmnEngineConfiguration();
}
public static DmnEngineConfiguration createStandaloneInMemDmnEngineConfiguration() {
return new StandaloneInMemDmnEngineConfiguration();
}
根據前面的分析,StandaloneDmnEngineConfiguration沒有新增任何的程式碼,完全等同與父類;
而StandaloneInMemDmnEngineConfiguration只是修改了父類的jdbc url的引數,設定為h2資料庫的配置。
二、DmnEngine構建
DmnEngineConfiguration例項建立後,呼叫buildDmnEngine(),獲得DmnEngine的例項。
public DmnEngine buildDmnEngine() {
init();
return new DmnEngineImpl(this);
}
三、服務初始化
在init()方法裡面做了很多初始化的工作。這裡只說和DmnEngine相關的。
protected void init() {
...
initServices();
...
}
protected void initServices() {
initService(dmnManagementService);
initService(dmnRepositoryService);
initService(ruleService);
initService(dmnHistoryService);
}
protected void initService(Object service) {
if (service instanceof ServiceImpl) {
((ServiceImpl) service).setCommandExecutor(commandExecutor);
}
}
上面程式碼將DmnEngineConfiguration的 commandExecutor屬性賦值給這四個服務。實際上,commandExecutor是DmnEngineConfiguration父類 AbstractEngineConfiguration的屬性。
這四個服務的程式碼如下:
protected DmnManagementService dmnManagementService = new DmnManagementServiceImpl();
protected DmnRepositoryService dmnRepositoryService = new DmnRepositoryServiceImpl();
protected DmnRuleService ruleService = new DmnRuleServiceImpl();
protected DmnHistoryService dmnHistoryService = new DmnHistoryServiceImpl();
這四個服務有相同的父類: ServiceImpl
ServiceImpl包含一個CommandExecutor屬性。這四個服務的方法都是通過CommandExecutor實現代理模式來完成的。