Activiti 服務架構圖
在新版本中,我們IdentityService,FormService 兩個Serivce 都已經刪除了。
1、activiti.cfg.xml
activiti 的引擎配置文件,包括:ProcessEngineConfiguration 的定義、數據源定義、事務管理器等, 此文件其實就是一個 spring 配置文件,下面是一個基本的配置只配置了 ProcessEngineConfiguration 和數據源:
<?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"> <!--數據源--> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/activiti"/> <property name="username" value="root"/> <property name="password" value="123"/> </bean> <!--配置Activiti使用的processEngine對象 默認命名為processEngineConfiguration--> <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"> <!--注入數據源--> <property name="dataSource" ref="dataSource"/> <!--配置數據源方式二:--> <!--<property name="jdbcDriver" value="com.mysql.jdbc.Driver"/>--> <!--指定數據庫生成策略--> <property name="databaseSchemaUpdate" value="true"/> </bean> </beans>
2、ProcessEngineConfiguration流程引擎的配置類
通過ProcessEngineConfiguration 可以創建工作流引擎ProceccEngine,常用的方法如下:
2.1 StandaloneProcessEngineConfiguration
通過org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration;
Activiti可以單獨運行,使用它創建的ProcessEngine,Activiti會自己處理事務;
配置文件方式如下:
通過在activiti.cfg.xml配置文件中頂一個id為processEngineConfiguration的bean,這里會使用spring的依賴注入來構建引擎;
<!--配置Activiti使用的processEngine對象 默認命名為processEngineConfiguration--> <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"> <!--注入數據源--> <property name="dataSource" ref="dataSource"/> <!--配置數據源方式二:--> <!--<property name="jdbcDriver" value="com.mysql.jdbc.Driver"/>--> <!--指定數據庫生成策略--> <property name="databaseSchemaUpdate" value="true"/> </bean>
2.2 SpringProcessEngineConfiguration
通過org.activiti.spring.SpringProcessEngineConfiguration與spring整合;
創建spring與activiti的整合配置文件:
activiti-spring.cfg.xml(名稱不固定)
2.3 創建processEngineConfiguration
public static void main(String[] args) { //加載配置 ProcessEngineConfiguration configuration = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml"); //獲取ProcessEngine對象 ProcessEngine processEngine = configuration.buildProcessEngine(); }
3、ProcessEngine
工作流引擎,相當於一個門面接口,通過ProcessEngineConfiguration創建ProcessEngine,通過ProcessEngine創建各個service接口;
3.1 一般創建方式
//獲取ProcessEngine對象 ProcessEngine processEngine = configuration.buildProcessEngine();
3.2 簡單創建方式
將activiti.cfg.xml文件名及路徑固定,且activiti.cfg.xml文件中有processEngineConfiguration的配置,可以使用如下代碼創建processEngine;
//獲取ProcessEngine ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
4、service
4.1 service創建方式
通過ProcessEngine創建service,service是工作流引擎提供用於進行工作部署,執行,管理的服務接口;
方式如下:
//獲取RepositoryService對象進行流程部署 RepositoryService repositoryService = processEngine.getRepositoryService(); //獲取RuntimeService對象 RuntimeService runtimeService = processEngine.getRuntimeService(); //獲取TaskService對象進行流程部署 TaskService taskService = processEngine.getTaskService();
4.2 service總覽
4.3 RepositoryService
是activiti的資源管理類,提供了管理和控制流程發布包和流程定義的操作;使用工作流建模工具設計的業務流程圖需要使用此service將流程定義文件的內容部署到計算機;
除了部署流程定義以外還可以:查詢引擎中的發布包和流程定義;
暫停或激活發布包,對應全部和特定流程定義;暫停意味着他們不能再執行任何操作了,激活是對應的反向操作;
獲得多種資源,像是包含在發布包里的文件,或引擎自動生成的流程圖;獲得流程定義的pojo版本,可以用來通過java解析流程,而不必通過xml;
4.4 RuntimeService
它是activiti的流程運行管理類;可以從這個服務類中獲取很多關於流程執行相關的信息;
4.5 TaskService
它是activiti的任務管理類,可以從這個類中后去任務的信息;
4.6 HistoryService
它是activiti的歷史管理類,可以查詢歷史信息,執行流程時,引擎會保存很多數據(根據配置),比如流程實例啟動時間,任務的參與者,完成任務的時間,每個流程實例的執行路徑等等,這個服務主要通過查詢功能來獲取這些數據;
4.7 ManagementService
它是activiti的引擎管理類,提供了對activiti流程引擎的管理和維護功能,這些功能不在工作流驅動的應用程序中使用,主要用於activiti系統的日常維護;