流程引擎的創建方法:
1 ProcessEngineConfiguration的buildProcessEngine方法:
ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("build_engine.xml").buildProcessEngine()。
2 、ProcessEngines工具類
ProcessEngines是一個創建流程引擎和關閉流程引擎的工具類,所創建的ProcessEngine實例均會被註冊到ProcessEngines中。
ProcessEngines維護一個Map對象,key爲ProcessEngine實例的名稱,value爲其實例。
2.1 init() 方法,該方法讀取activiti默認的配置文件,創建ProcessEngine實例緩存到Map中。(和spring整合,則讀取classpath下的activiti.context.xml)
key值爲“default”。init方法不會返回ProcessEngine實例,只是存到map中,可以使用ProcessEngines的getProcessEngines方法獲取。
2.2 ProcessEngines.getDefaultProcessEngine方法返回key爲“default”的ProcessEngine實例。該方法會判斷流程引擎是否經過初始化,若沒有,則調用init。
2.3 registerProcessEngine 向ProcessEngines註冊一個ProcessEngine實例。
注:
unregister則註銷一個ProcessEngine實例。使用ProcessEngineConfiguration的buildProcessEngine方法則會將ProcessEngine實例註冊到ProcessEngines 中,不需再調用registerProcessEngine。
unregister則只是將ProcessEngine實例從Map中移除。不會調用ProcessEngine的close方法。
2.4 retry :Activiti加載配置文件出現異常,則可以調用ProcessEngines的retry方法,重新加載配置文件。重新創建ProcessEngine實例,並加入到Map中。
該方法返回ProcessEngineInfo實例,包含exception(初始化異常信息),name(名稱),resourceUrl(配置文件的url)。
2.5 destroy方法
銷燬ProcessEngines維護的所有ProcessEngine實例。並在銷燬時調用Processengine的close方法。
注:
沒有調用init方法,去調用destroy方法,則ProcessEngine實例不會被銷燬,也不會執行ProcessEngine的destroy方法。
3、ProcessEngine對象
3.1 服務組件:
RepositoryService:提供一系列管理流程定義和流程部署的API。
RuntimeService:在流程運行時,對流程實例進行管理和控制。
TaskService:對流程任務進行管理,任務提醒,完成和分配等。
IdentityService:提供對流程角色數據進行管理的API。
ManagementService;提供對流程引擎進行管理和維護的服務。
HistoryService:對流程歷史數據進行操作,如查詢,刪除等
3.2、 close方法
ProcessEngine的close方法,會對流程引擎進行關閉操作,包括關閉工作執行器(JobExecutor)和執行數據庫表刪除drop(前提是配置了create-drop)。
3.3、 流程引擎名稱
默認ProcessEngines中Map的key爲”default“,可以由ProcessEngineConfiguration提供的setProcessEngineName("name")設置。