public class TestDB { public static void main(String[] args) { //1。 創建Activiti配置對象的實例 ProcessEngineConfiguration configuration = ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration(); //2. 設置數據庫連接信息 // 設置數據庫地址 configuration.setJdbcUrl("jdbc:mysql://localhost:3306/activiti_test?createDatabaseIfNotExist=true"); // 數據庫驅動 configuration.setJdbcDriver("com.mysql.jdbc.Driver"); // 用戶名 configuration.setJdbcUsername("root"); // 密碼 configuration.setJdbcPassword("123456"); // 設置數據庫建表策略(默認不會建表) configuration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE); //3. 使用配置對象創建流程引擎實例(檢查數據庫連接等環境信息是否正確) ProcessEngine processEngine = configuration.buildProcessEngine(); System.out.println(processEngine); }
public void testDBByProperties() throws Exception { // 1。 加載classpath下名為activiti.cfg.xml文件,創建核心流程引擎對象 ProcessEngine processEngine = ProcessEngineConfiguration.
createProcessEngineConfigurationFromResource("activiti.cfg.xml").
buildProcessEngine(); System.out.println(processEngine); //或者 private ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();此方法默認和上面一樣 } }
activiti.cfg.xml
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"> <!-- 數據庫連接配置 --> <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activiti_test?createDatabaseIfNotExist=true"></property> <property name="jdbcDriver" value="com.mysql.jdbc.Driver"></property> <property name="jdbcUsername" value="root"></property> <property name="jdbcPassword" value="mikesirius"></property> <!-- 建表策略 --> <property name="databaseSchemaUpdate" value="true"></property> </bean> </beans>
Spring集成
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> <bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration"> <!-- 數據源 --> <property name="dataSource" ref="dataSource" /> <!-- 配置事務管理器,統一事務 --> <property name="transactionManager" ref="transManager" /> <!-- 設置建表策略 --> <property name="databaseSchemaUpdate" value="true" /> </bean> <bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean"> <property name="processEngineConfiguration" ref="processEngineConfiguration" /> </bean> <!-- bean id repositoryService RepositoryServicie repositoryService = processEngine.getRepositoryService(); --> <bean id="repositoryService" factory-bean="processEngine" factory-method="getRepositoryService" /> <bean id="runtimeService" factory-bean="processEngine" factory-method="getRuntimeService" /> <bean id="taskService" factory-bean="processEngine" factory-method="getTaskService" /> <bean id="historyService" factory-bean="processEngine" factory-method="getHistoryService" /> <bean id="formService" factory-bean="processEngine" factory-method="getFormService" /> <!-- 流程相關的Service --> <bean id="workflowService" class="activitiweb.service.impl.WorkflowServiceImpl"> <property name="repositoryService" ref="repositoryService"></property> <property name="runtimeService" ref="runtimeService"></property> <property name="taskService" ref="taskService"></property> <property name="formService" ref="formService"></property> <property name="historyService" ref="historyService"></property> </bean> </beans>
核心API介紹
1、ProcessEngine
在Activiti中最核心的類,其他的類都是由他而來。
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
可以通過processEngine 的get產生以下Service
RepositoryService |
管理流程定義 |
RuntimeService |
執行管理,包括啟動、推進、刪除流程實例等操作 |
TaskService |
任務管理 |
HistoryService |
歷史管理(執行完的數據的管理) |
IdentityService |
組織機構管理 |
FormService |
一個可選服務,任務表單管理 |
ManagerService |
|
2、RepositoryService
是Activiti的倉庫服務類。所謂的倉庫指流程定義文檔的兩個文件:bpmn文件和流程圖片。
3、RuntimeService
是activiti的流程執行服務類。可以從這個服務類中獲取很多關於流程執行相關的信息。
4、TaskService
是activiti的任務服務類。可以從這個類中獲取任務的信息。
5、ProcessDefinition
流程定義類。可以從這里獲得資源文件等。
6、ProcessInstance
代表流程定義的執行實例。如范冰冰請了一天的假,她就必須發出一個流程實例的申請。一個流程實例包括了所有的運行節點。我們可以利用這個對象來了解當前流程實例的進度等信息。
從源代碼中可以看出ProcessInstance就是Execution,ProcessInstance繼承Execution
7、Execution
Activiti用這個對象去描述流程執行的每一個節點。在沒有並發的情況下,同ProcessInstance。
Activiti核心配置文件,配置流程引擎創建工具的基本參數和數據庫連接池參數。
定義數據庫配置參數:
jdbcUrl: 數據庫的JDBC URL。
jdbcDriver: 對應不同數據庫類型的驅動。
jdbcUsername: 連接數據庫的用戶名。
jdbcPassword: 連接數據庫的密碼。
基於JDBC參數配置的數據庫連接 會使用默認的MyBatis連接池。 下面的參數可以用來配置連接池(來自MyBatis參數):
jdbcMaxActiveConnections: 連接池中處於被使用狀態的連接的最大值。默認為10。
jdbcMaxIdleConnections: 連接池中處於空閑狀態的連接的最大值。
jdbcMaxCheckoutTime: 連接被取出使用的最長時間,超過時間會被強制回收。 默認為20000(20秒)。
jdbcMaxWaitTime: 這是一個底層配置,讓連接池可以在長時間無法獲得連接時, 打印一條日志,並重新嘗試獲取一個連接。(避免因為錯誤配置導致沉默的操作失敗)。 默認為20000(20秒)。