1. 程式人生 > >flowable ProcessEngine和ProcessEngineConfiguration

flowable ProcessEngine和ProcessEngineConfiguration

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例項。

這裡寫圖片描述