官方在線用戶手冊(英文版):http://activiti.org/userguide/index.html
中文用戶手冊:http://www.mossle.com/docs/activiti/index.html
前言:目前在學習使用 Activiti,將學習過程中較重要的知識點或者遇到的問題與解決方案 記錄下來,方便后來者學習與查詢。
一、項目框架介紹
所有的測試都是依據在一定的環境框架上的。為了需要而測試。
我這里選用的是 Spring + SpringMVC + Maven + mysql
在項目中引入 Activiti,在pom 中添加,version 寫實際版本(5.21.0)
<dependency> <groupId>org.activiti</groupId> <artifactId>activiti-engine</artifactId> <version>5.x</version> </dependency>
二、數據庫
不管什么項目,數據庫肯定是少不了的啦。
下面列出Activiti使用的數據庫類型(大小寫敏感)。
Activiti數據庫類型 | JDBC URL實例 | 備注 |
---|---|---|
h2 | jdbc:h2:tcp://localhost/activiti | 默認配置的數據庫 |
mysql | jdbc:mysql://localhost:3306/activiti?autoReconnect=true | 使用mysql-connector-java驅動測試 |
oracle | jdbc:oracle:thin:@localhost:1521:xe | |
postgres | jdbc:postgresql://localhost:5432/activiti | |
db2 | jdbc:db2://localhost:50000/activiti | |
mssql | jdbc:sqlserver://localhost:1433/activiti |
Activiti 自帶了23張表,Activiti的表都以ACT_開頭。 第二部分是表示表的用途的兩個字母標識。 用途也和服務的API對應。
-
ACT_RE_*: 'RE'表示
repository
。 這個前綴的表包含了流程定義和流程靜態資源 (圖片,規則,等等)。 -
ACT_RU_*: 'RU'表示
runtime
。 這些運行時的表,包含流程實例,任務,變量,異步任務,等運行中的數據。 Activiti只在流程實例執行過程中保存這些數據, 在流程結束時就會刪除這些記錄。 這樣運行時表可以一直很小速度很快。 -
ACT_ID_*: 'ID'表示
identity
。 這些表包含身份信息,比如用戶,組等等。 -
ACT_HI_*: 'HI'表示
history
。 這些表包含歷史數據,比如歷史流程實例, 變量,任務等等。 -
ACT_GE_*:
通用
數據, 用於不同場景下。
數據庫腳本 是在 activiti-engine的jar 中(activiti-engine-x.jar), 在org/activiti/db/create包下(drop目錄里是刪除語句)
執行 DbSchemaCreate 類的main方法
正確配置Activiti的項目,啟動的時候,如果事先數據庫中不存在表的話,可以自動將對應版本的數據庫表創建在數據庫中。
<!-- spring負責創建流程引擎的配置文件 --> <bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration"> <!-- 數據源 --> <property name="dataSource" ref="dataSource" /> <!-- 配置事務管理器,統一事務 --> <property name="transactionManager" ref="transactionManager" /> <!-- 設置建表策略,如果沒有表,自動創建表 --> <property name="databaseSchemaUpdate" value="true" /> </bean>
三、日志
在Activiti 5.12 開始,slf4j 作為日志框架。所有日志(activiti, spring, mybatis等等)都轉發給SLF4J 允許使用你選擇的日志實現。
默認activiti-engine依賴中沒有提供SLF4J綁定的jar, 需要根據你的實際需要使用日志框架。(如果不加也不會有任何提示,不會記錄日志而已)
常用的maven的pom配置為
<!-- 在屬性中添加版本號 --> <slf4j.version>1.7.21</slf4j.version> <!-- 依賴包 --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${slf4j.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${slf4j.version}</version> </dependency> <!-- common-logging 實際調用slf4j --> <dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> <version>${slf4j.version}</version> </dependency> <!-- java.util.logging 實際調用slf4j --> <dependency> <groupId>org.slf4j</groupId> <artifactId>jul-to-slf4j</artifactId> <version>${slf4j.version}</version> </dependency>
未完待續(……)