项目地址:activiti-workflow
activiti提供的配置类说明
- EngineServices:该接口中定义了获取各种服务类实例对象的方法。
- ProcessEngine:继承EngineServices接口, 并增加了对流程引擎名称的获取以及关闭流程引擎的支持。
- ProcessEngineImpl:对ProcessEngine接口中定义的方法进行实现。
- Process Engines:该类负责管理所有的流程引擎ProcessEngine集合, 并负责流程引擎实例对象的注册、获取、注销等操作。
5)ProcessEngineConfiguration:该抽象类实现EngineService b接口, 提供了一系列创建流程引擎配置ProcessEngineConfiguration实例对象的方法。
6) ProcessEngineConfigurationImpl, 该抽象类继承ProcessEngineConfiguration, 负责创建一系列服务类实例对象、流程引擎实例对象以及ProcessEngineImpl类实例对象。该类可以通过流程配置文件交给Spring容器管理或者使用编程方式动态构造。
7) SpringProcessEngineConfiguration:主要用于整合Spring框架时使用, 提供几个重要功能:创建流程引擎实例对象,流程引擎启动之后自动部署配置的流程文档(需要设置),设置流程引擎连接的数据源、事务管理器等。 - StandaloneProcessEngineConfiguration:标准的流程引擎配置类。
- MultiSchemaMultiTenantProcessEngineConfiguration:“多数据库多租户”流程引擎配置类, Activit通过此类为开发人员提供了自动路由机制, 这样当流程引擎需要连接多个数据库进行操作时,客户端无须关心引擎到底连接的是哪一个数据库,该类通过路由规则自动选择需要操作的数据库,数据库的操作对客户端来说是透明的,客户端无须关心其内部路由实现机制。
- JtaProcessEngineConfiguration:顾名思义, 通过类名也知道该类支持JTA.
- StandaloneInMemProcessEngineConfiguration, 该类通常可以在开发环境中自测使用,默认采用H2数据库存储数据。
- EngineServices提供的服务类如下
• RepositoryService:提供一系列操作流程定义的方法。
• RuntimeService:提供一系列操作流程实例的方法。
• Form Service:提供一系列操作流程表单的方法。
• Task Service:提供一系列操作任务的方法, 例如任务的完成、挂起、激活、添加处理人、认领、删除等操作。
• History Service:提供一系列查询历史流程实例、历史变量、历史任务的方法。
• Identity Service:提供一系列操作用户或者组的方法。
• Management Service:提供查询数据库表中的数据、表的元数据以及执行命令等方法。
在ProcessEngineConfigurationImpl中,buildProcessEngine方法会调用init() 方法初始化ProcessEngineConfigurationImpl实例对象的各种属性
• initConfigurators() ; //初始化配置器
• configuratorsBeforeInit() ; //调用配置器的before In it方法
• initProcessDiagramGenerator() ; //初始化流程图片生成器
• initHistoryLevel() ; //初始化历史记录归档级别, 默认为AUDIT级别
• initExpressionManager() ; //初始化表达式管理器
• initDataSource() ; //初始化数据源
• initVariable Types() ; //初始化变量类型
• initBeans() ; //初始化可以管理的bean
• initFormEngines() ; //初始化表单引擎
• initFormTypes() ; //初始化表单类型
• initScripting Engines() ; //初始化脚本引擎
• initClock() ; //初始化时间类,主要负责提供设置当前时间等
• initBusinessCalendarManager() ; //初始化日期管理器
• initCommandContextFactory() ; //初始化命令上下文工厂
• initTransactionContextFactory() ; //初始化事务上下文工厂
• initCommandExecutors() ; //初始化命令执行器
• initServices() ; //为各种服务类对象, 比如repositoryService设置命令执行器
• in it Id Generator() ;//初始化 id 生成器
• initDeployers() ;//初始化部署器
• initJobHandlers() ;//始化定时处理类
• initJobExecutor() ;//初始化定时任务执行器
• initAsyncExecutor() ;//初始化异步执行器
• initTransactionFactory() ;//初始化事务工厂
• initSqlSessionFactory() ;//初始化 Sql Session 工厂
• initSessionFactories() ;//初始化 Session 工厂
• initJpa() ;//初始化 JPA
• initDelegateInterceptor() ;//负责处理拦截器默认实现类(拦截监听器或者表达式)
• initEvent Handlers() ;//初始化事件处理类
• initFailedJobCommandFactory() ;//初始化失败命令工厂
等等。
流程配置
在Spring boot项目中只需实现ProcessEngineConfigurationConfigurer实现configure方法,根据需求设置属性
@Component
public class WorkflowConfigurationConfigurer implements ProcessEngineConfigurationConfigurer {
@Autowired
private DataSource dataSource;
/**
* 实现ActivitiEventListener
*/
@Autowired
private WorkflowEventListener workflowEventListener;
@Override
public void configure(SpringProcessEngineConfiguration processEngineConfiguration) {
//配置全局监听器
List<ActivitiEventListener> eventListeners =new ArrayList<>();
eventListeners.add(workflowEventListener);
processEngineConfiguration