Activiti权威指南
上QQ阅读APP看书,第一时间看更新

2.2 流程引擎架构

Activiti框架提供的流程引擎配置类ProcessEngineConfiguration的类图如图2-1所示,该类的架构如图2-2所示。

图2-1 ProcessEngineConfiguration子类边界

图2-2 流程引擎架构图

通过图2-2可以很清晰地从全局角度了解ProcessEngineConfiguration类,如果开发人员对Activiti源码没有太多接触,可能对图2-2中所涉及的类不是很理解,下面先简单介绍类的职责,后续章节会深入讲解。

(1)EngineServices:该接口中定义了获取各种服务类实例对象的方法。

(2)ProcessEngine:继承EngineServices接口,并增加了对流程引擎名称的获取以及关闭流程引擎的支持。

(3)ProcessEngineImpl:对ProcessEngine接口中定义的方法进行实现。

(4)ProcessEngines:该类负责管理所有的流程引擎ProcessEngine集合,并负责流程引擎实例对象的注册、获取、注销等操作。

(5)ProcessEngineConfiguration:该抽象类实现EngineServices接口,提供了一系列创建流程引擎配置类ProcessEngineConfiguration实例对象的方法。

(6)ProcessEngineConfigurationImpl:该抽象类继承ProcessEngineConfiguration,负责创建一系列服务类实例对象、流程引擎实例对象以及ProcessEngineImpl类实例对象。该类可以通过流程配置文件交给Spring容器管理或者使用编程方式动态构造。

(7)SpringProcessEngineConfiguration:主要用于整合Spring框架时使用,提供几个重要功能:创建流程引擎实例对象,流程引擎启动之后自动部署配置的流程文档(需要设置),设置流程引擎连接的数据源、事务管理器等。

(8)StandaloneProcessEngineConfiguration:标准的流程引擎配置类。

(9)MultiSchemaMultiTenantProcessEngineConfiguration:“多数据库多租户”流程引擎配置类,Activiti通过此类为开发人员提供了自动路由机制,这样当流程引擎需要连接多个数据库进行操作时,客户端无须关心引擎到底连接的是哪一个数据库,该类通过路由规则自动选择需要操作的数据库,数据库的操作对客户端来说是透明的,客户端无须关心其内部路由实现机制。

(10)JtaProcessEngineConfiguration:顾名思义,通过类名也知道该类支持JTA。

(11)StandaloneInMemProcessEngineConfiguration:该类通常可以在开发环境中自测使用,默认采用H2数据库存储数据。

(12)EngineServices提供的服务类如下。

• RepositoryService:提供一系列操作流程定义的方法。

• RuntimeService:提供一系列操作流程实例的方法。

• FormService:提供一系列操作流程表单的方法。

• TaskService:提供一系列操作任务的方法,例如任务的完成、挂起、激活、添加处理人、认领、删除等操作。

• HistoryService:提供一系列查询历史流程实例、历史变量、历史任务的方法。

• IdentityService:提供一系列操作用户或者组的方法。

• ManagementService:提供查询数据库表中的数据、表的元数据以及执行命令等方法。