Activiti配置實例以及Spring集成配置



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秒)。

 

    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM