流程引擎的创建方法:
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")设置。