flowable ProcessEngine和ProcessEngineConfiguration
阿新 • • 發佈:2018-11-14
ProcessEngine是流程引擎,ProcessEngineConfiguration與前面四個引擎配置有些不同。
ProcessEngineConfiguration增加了郵件服務和httpClient的封裝。
一、例項化
ProcessEngineConfiguration 提供了7個公共的靜態方法用於例項化。
public static ProcessEngineConfiguration createStandaloneProcessEngineConfiguration() {
return new StandaloneProcessEngineConfiguration();
}
public static ProcessEngineConfiguration createStandaloneInMemProcessEngineConfiguration() {
return new StandaloneInMemProcessEngineConfiguration();
}
二、建立ProcessEngine
建立ProcessEngine的方法是在ProcessEngineConfiguration的子類 ProcessEngineConfigurationImpl中提供的。
@Override
public ProcessEngine buildProcessEngine() {
init();
ProcessEngineImpl processEngine = new ProcessEngineImpl(this);
...
return processEngine;
}
三、初始化服務
建立引擎過程呼叫init()方法時,初始化服務。
public void init() {
...
initServices();
...
}
public void initServices() {
initService(repositoryService);
initService(runtimeService);
initService(historyService);
initService(identityService);
initService(taskService);
initService(formService);
initService(managementService);
initService(dynamicBpmnService);
}
public void initService(Object service) {
if (service instanceof ServiceImpl) {
((ServiceImpl) service).setCommandExecutor(commandExecutor);
}
}
這些服務定義在 ProcessEngineConfigurationImpl 中:
protected RepositoryService repositoryService = new RepositoryServiceImpl();
protected RuntimeService runtimeService = new RuntimeServiceImpl();
protected HistoryService historyService = new HistoryServiceImpl(this);
protected IdentityService identityService = new IdentityServiceImpl(this);
protected TaskService taskService = new TaskServiceImpl(this);
protected FormService formService = new FormServiceImpl();
protected ManagementService managementService = new ManagementServiceImpl();
protected DynamicBpmnService dynamicBpmnService = new DynamicBpmnServiceImpl(this);
初始化使AbstractEngineConfiguration的 CommandExecutor傳遞到這些服務的父類 ServiceImpl 中。
這些服務隨著 processEngineConfigurationImpl例項傳遞給 processEngin例項。