建立配置檔案
<?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?useSSL=false" />
<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"></property>
<property name="databaseSchemaUpdate" value="true"/>
</bean>
</beans>
細節注釋
細節一:StandloneProcessEngineConfiguration中需要注入資料源。
細節二:StandloneProcessEngineConfiguration中屬性為databaseSchemaUpdate屬性值設定為true
指的是:容器啟動時如果資料庫中存在某個表就不在建立已存在的表結構,如果不存在則建立不存在的表結構。
細節三:StandloneProcessEngineConfiguration中id的名稱是processEngineConfiguration不能改變,如果改變啟動會報錯。
細節四:中文名稱儲存亂碼問題(在xml配置資料源是&要進行轉義&)
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="url" value="jdbc:mysql://localhost:3306/activiti?
useSSL=false&useUnicode=true&characterEncoding=utf8" />
</bean>
建立log4j.perperties
# Set root category priority to INFO and its only appender to CONSOLE.
#log4j.rootCategory=INFO, CONSOLE debug info warn error fatal
log4j.rootCategory=debug, CONSOLE, LOGFILE
# Set the enterprise logger category to FATAL and its only appender to CONSOLE.
log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE
# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n
# LOGFILE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=d:\axis.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n
生成流程表結構
(springBoot可以通過編寫自動配置類)
第一步:加載流程配置檔案,建立流程配置對象
ProcessEnginConfiguration.createProcessConfigurationResource
第二步:通過流程配置對象,建立流程引擎
package org.wxy.com.activiti;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngineConfiguration;
import org.junit.Test;
/**
* Unit test for simple App.
*/
public class AppTest {
@Test
public void testprocess(){
//加載配置檔案建立工作流程配置對象
//如果使用avtiviti預設的idprocessEngineConfiguration
ProcessEngineConfiguration processEngineConfiguration = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml");
//如果修改了avtiviti預設的id時
//ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml","修改的id");
//建立工作流程引擎
ProcessEngine processEngine = processEngineConfiguration.buildProcessEngine();
}
}
第三步:運作後資料庫,就會生成工作引擎相關表結構
表結構參考:https://blog.csdn.net/hj7jay/article/details/51302829
資料庫流程表結構說明
Activiti工作流所有的表名預設以“ACT_”開頭并且表名的第二部分用兩個字母表明表的用例,而這個用例也基本上跟Service API比對。
- ACT_GE_* : “GE”代表“General”(通用),用在各種情況下;
- ACT_HI_* : “HI”代表“History”(曆史),記錄曆史資料,比如執行過的流程執行個體、變量、任務等等。、
Activit預設提供了4種曆史級别:
none: 不儲存任何曆史記錄,可以提高系統性能;
activity:儲存所有的流程執行個體、任務、活動資訊;
audit:也是Activiti的預設級别,儲存所有的流程執行個體、任務、活動、表單屬性;
full:最完整的曆史記錄,除了包含audit級别的資訊之外還能儲存詳細,例如:流程變量。
對于幾種級别根據對功能的要求選擇,如果需要日後跟蹤詳細可以開啟full。
- ACT_ID_* : “ID”代表“Identity”(身份),這些表中儲存的都是身份資訊,如使用者群組以及兩者之間的關系。如果Activiti被內建在某一系統當中的話,這些表可以不用,可以直接使用現有系統中的使用者或組資訊;
- ACT_RE_* : “RE”代表“Repository”(倉庫),這些表中儲存一些‘靜态’資訊,如流程定義和流程資源(如圖檔、規則等);
- ACT_RU_* : “RU”代表“Runtime”(運作時),這些表中儲存一些流程執行個體、使用者任務、變量等的運作時資料。Activiti隻儲存流程執行個體在執行過程中的運作時資料,并且當流程結束後會立即移除這些資料,這是為了保證運作時表盡量的小并運作的足夠快;
資料庫流程表結構清單
表分類 | 表名 | 解釋 |
一般資料 | ACT_GE_BYTEARRAY | 通用的流程定義和流程資源 |
ACT_GE_PROPERTY | 系統相關屬性 | |
流程曆史記錄 | ACT_HI_ACTINST | 曆史的流程執行個體 |
ACT_HI_ATTACHMENT | 曆史的流程附件 | |
ACT_HI_COMMENT | 曆史的說明性資訊 | |
ACT_HI_DETAIL | 曆史的流程運作中的細節資訊 | |
ACT_HI_IDENTITYLINK | 曆史的流程運作過程中使用者關系 | |
ACT_HI_PROCINST | 曆史的流程執行個體 | |
ACT_HI_TASKINST | 曆史的任務執行個體 | |
ACT_HI_VARINST | 曆史的流程運作中的變量資訊 | |
使用者使用者組表 | ACT_ID_GROUP | 身份資訊-組資訊 |
ACT_ID_INFO | 身份資訊-組資訊 | |
ACT_ID_MEMBERSHIP | 身份資訊-使用者群組關系的中間表 | |
ACT_ID_USER | 身份資訊-使用者資訊 | |
流程定義表 | ACT_RE_DEPLOYMENT | 部署單元資訊 |
ACT_RE_MODEL | 模型資訊 | |
ACT_RE_PROCDEF | 已部署的流程定義 | |
運作執行個體表 | ACT_RU_EVENT_SUBSCR | 運作時事件 |
ACT_RU_EXECUTION | 運作時流程執行執行個體 | |
ACT_RU_IDENTITYLINK | 運作時使用者關系資訊 | |
ACT_RU_JOB | 運作時作業 | |
ACT_RU_TASK | 運作時任務 | |
ACT_RU_VARIABLE | 運作時變量表 |
Activity系統架構圖
ProcessEngin引擎接口
注:簡單的方式生成工作流的表結構
前提條件是
1.配置檔案名稱必須是avtiviti.cfg.xml
2. <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"> id的名稱必須是 processEngineConfiguration
@Test
public void testprocess2(){
//直接生成工作流引擎的25張表
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
}