💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
:-: ![](https://img.kancloud.cn/dd/cf/ddcfec2be84122605bd33310a7d9fb87_831x303.jpg) Activiti类结构关系 在新版本中(7.x),IdentityService,FormService两个Serivce都已经删除了。所以后面对于这两个Service不再讲解,但老版本中还是有这两个Service,在这里提醒一下。 <br/> **1. `activiti.cfg.xml`** activiti的引擎配置文件,包括:ProcessEngineConfiguration的定义、数据源定义、事务管理器等,此文件其实就是一个spring配置文件。 <br/> **2. ProcessEngineConfiguration** 流程引擎配置类,通过ProcessEngineConfiguration可以创建工作流引擎ProcessEngine,常用的子类为StandaloneProcessEngineConfiguration、SpringProcessEngineConfiguration。 ![](https://img.kancloud.cn/33/81/3381ffd6ec81430e2e5ddf6e4480f731_1455x280.png) (1)StandaloneProcessEngineConfiguration 使用StandaloneProcessEngineConfiguration,Activiti可以单独运行来创建ProcessEngine,Activiti会自己处理事务。 (2)SpringProcessEngineConfiguration 这个是Activit与Spring整合用的,具体配置参考【Spring整合Activiti】小节。 <br/> **3. ProcessEngine** 工作流引擎(ProcessEngine),相当于一个门面接口,通过ProcessEngineConfiguration创建processEngine,通过ProcessEngine创建各个service接口。 <br/> **4. Servcie服务接口** Service是工作流引擎提供用于进行工作流部署、执行、管理的服务接口,我们使用这些接口就可以就是操作服务对应的数据表。 (1) RepositoryService activiti的资源管理类,提供了管理和控制流程发布包和流程定义的操作。 使用工作流建模工具设计的业务流程图需要使用此service将流程定义文件的内容部署到计算机。除了部署流程定义以外还可以:查询引擎中的发布包和流程定义。暂停或激活发布包,对应全部和特定流程定义。 暂停意味着它们不能再执行任何操作了,激活是对应的反向操作。获得多种资源,像是包含在发布包里的文件, 或引擎自动生成的流程图。 获得流程定义的pojo版本, 可以用来通过java解析流程,而不必通过xml。 (2) RuntimeService Activiti的流程运行管理类。可以从这个服务类中获取很多关于流程执行相关的信息。 (3)TaskService Activiti的任务管理类。可以从这个类中获取任务的信息。 (4) HistoryService Activiti的历史管理类,可以查询历史信息,执行流程时,引擎会保存很多数据(根据配置),比如流程实例启动时间,任务的参与者, 完成任务的时间,每个流程实例的执行路径,等等。 这个服务主要通过查询功能来获得这些数据。 (5)ManagementService Activiti的引擎管理类,提供了对 Activiti 流程引擎的管理和维护功能,这些功能不在工作流驱动的应用程序中使用,主要用于 Activiti 系统的日常维护。 <br/> 获取服务接口的过程如下: >[success] **1. 在配置文件`resources/activiti.cfg.xml`中配置**ProcessEngineConfiguration * 配置方式1: ```xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/contex http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> <!-- 这里可以使用 链接池 dbcp--> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql:///activiti" /> <property name="username" value="root" /> <property name="password" value="123456" /> <property name="maxActive" value="3" /> <property name="maxIdle" value="1" /> </bean> <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"> <!-- 引用数据源 上面已经设置好了--> <property name="dataSource" ref="dataSource" /> <!-- activiti数据库表处理策略 --> <property name="databaseSchemaUpdate" value="true"/> </bean> </beans> ``` * 配置方式2: ```xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/contex http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> <!-- 这里可以使用 链接池 dbcp--> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql:///activiti" /> <property name="username" value="root" /> <property name="password" value="123456" /> <property name="maxActive" value="3" /> <property name="maxIdle" value="1" /> </bean> <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"> <!-- 引用数据源 上面已经设置好了--> <property name="dataSource" ref="dataSource" /> <!-- activiti数据库表处理策略 --> <property name="databaseSchemaUpdate" value="true"/> </bean> </beans> ``` >[success] **2. java代码** ```java public class TestCreate { /** * 使用activiti提供的默认方式来创建mysql的表 */ @Test public void testCreateDbTable() { //1. 获取配置 ////方式1:调用createProcessEngineConfigurationFromResource(resource), //但是activiti.cfg.xml中必须有一个 <bean id="processEngineConfiguration" .../> //ProcessEngineConfiguration configuration = ProcessEngineConfiguration // .createProcessEngineConfigurationFromResource("activiti.cfg.xml"); ////方式2:调用createProcessEngineConfigurationFromResource(resource, beanName)可自由定义beanName ProcessEngineConfiguration configuration = ProcessEngineConfiguration. createProcessEngineConfigurationFromResource("activiti.cfg.xml", "processEngineConfiguration"); //2. 获取引擎,到这一步就会创建mysql表 ////获取方式1:采用Activiti默认获取方式 //方法getDefaultProcessEngine会默认从resources下读取名字actviti.cfg.xml的文件, //所以这一步可以省略获取配置的不再 //ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); ////获取方式2:这是开发中通常采用的 ProcessEngine processEngine = configuration.buildProcessEngine(); //3. 获取各种接口 RuntimeService runtimeService = processEngine.getRuntimeService(); RepositoryService repositoryService = processEngine.getRepositoryService(); TaskService taskService = processEngine.getTaskService(); } } ```