多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
步骤如下: **1. 请先准备好如下环境** JDK1.8+、MySql 5+、IntelliJ IDEA 。 **2. IDEA中安装Activiti流程设计器** :-: ![](https://img.kancloud.cn/a5/f9/a5f93df868681af620606279a4f0ddc8_647x369.png) 如果IDEA中找不到 actiBPM 插件,可以如下安装: (1)下载actiBPM的JAR包。 地址:[https://plugins.jetbrains.com/](https://plugins.jetbrains.com/) ![](https://img.kancloud.cn/f5/d2/f5d2b953ba643f8f75d259a13da31428_1621x351.png) ![](https://img.kancloud.cn/80/af/80af06744daeec69dd0a4ec62b3eb62b_1806x646.png) (2)在IDEA中选择从磁盘中导入该JAR包,选择下载的actibpm.jar包。 ![](https://img.kancloud.cn/cf/04/cf04f26bea904e2287ab31a31194d7c2_1231x379.png) (3)重启IDEA即可。 **3. 创建一个maven项目,`pom.xml`如下** ```xml <dependencies> <dependency> <groupId>org.flowable</groupId> <artifactId>flowable-engine</artifactId> <version>6.3.0</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.40</version> </dependency> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.4</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.21</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.21</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> </dependencies> ``` **4. log4j日志配置文件** *`resources/log4j.properties`* ```properties # 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=f:\act\activiti.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 ``` **5. 配置ProcessEngineConfiguration** * 配置方式1:`resources/flowable.cfg.xml` ```xml <beans xmlns="http://www.springframework.org/schema/beans" 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"> <!-- 生成流程图参数 --> <bean id="processDiagramGenerator" class="org.flowable.image.impl.DefaultProcessDiagramGenerator" /> <bean id="processEngineConfiguration" class="org.flowable.engine.impl.cfg.StandaloneProcessEngineConfiguration"> <property name="jdbcUrl" value="jdbc:mysql://localhost/flowable?useUnicode=true&amp;characterEncoding=UTF-8" /> <property name="jdbcDriver" value="com.mysql.jdbc.Driver" /> <property name="jdbcUsername" value="root" /> <property name="jdbcPassword" value="root" /> <property name="databaseSchemaUpdate" value="true" /> <property name="asyncExecutorActivate" value="false" /> <!-- 流程部署时自动生成对应的图片 --> <property name="createDiagramOnDeploy" value="true" /> <!-- 生成流程图参数 --> <property name="processDiagramGenerator" ref="processDiagramGenerator" /> <!-- 流程图字体 --> <property name="activityFontName" value="宋体" /> <property name="labelFontName" value="宋体" /> <property name="annotationFontName" value="宋体" /> </bean> </beans> ``` * 配置方式2:`resources/flowable.cfg.xml` ```xml <beans xmlns="http://www.springframework.org/schema/beans" 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"> <!-- 数据源 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" > <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost/flowable?useUnicode=true&amp;characterEncoding=UTF-8" /> <property name="username" value="root" /> <property name="password" value="root" /> <property name="defaultAutoCommit" value="false" /> </bean> <!-- 生成流程图参数 --> <bean id="processDiagramGenerator" class="org.flowable.image.impl.DefaultProcessDiagramGenerator"/> <bean id="processEngineConfiguration" class="org.flowable.engine.impl.cfg.StandaloneProcessEngineConfiguration"> <property name="dataSource" ref="dataSource" /> <!--表处理策略: false (默认): 当引擎启动时,检查数据库表结构的版本是否匹配库文件版本。版本不匹配时抛出异常。 true:数据库中表存在则使用,没有则创建。 create-drop: 引擎创建时创建表结构,并在引擎关闭时删除表结构。 --> <property name="databaseSchemaUpdate" value="true" /> <property name="asyncExecutorActivate" value="false" /> <!-- 流程部署时自动生成对应的图片 --> <property name="createDiagramOnDeploy" value="true"/> <!-- 生成流程图参数 --> <property name="processDiagramGenerator" ref="processDiagramGenerator"/> <!-- 流程图字体 --> <property name="activityFontName" value="宋体"/> <property name="labelFontName" value="宋体"/> <property name="annotationFontName" value="宋体"/> </bean> </beans> ``` **6. 生成相关表** 先在MySQL中创建flowable数据库,然后执行下面的程序自动生成相关的表。 ```java import org.flowable.engine.ProcessEngine; import org.flowable.engine.ProcessEngineConfiguration; import org.flowable.engine.ProcessEngines; import org.flowable.engine.impl.cfg.StandaloneProcessEngineConfiguration; public class FlowableCreateable { public static void main(String[] args) { //如果配置文件位于resources/flowable.cfg.xml,则可以这样获取引擎 //获取引擎时就会自动在数据库中创建相关的表 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //也可以这样获取引擎,flowable.cfg.xml则可以自由命名 //ProcessEngineConfiguration cfg = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("flowable.cfg.xml"); //ProcessEngine processEngine = cfg.buildProcessEngine(); } } ``` **7. 运行上面的程序就会自动生成如下34张表** ![](https://img.kancloud.cn/de/d8/ded874091acd47f1ff371d303cd4956e_1310x254.png) Flowable的所有数据库表都以`ACT_`开头。第二部分是说明表用途的两字符标示符。服务API的命名也大略符合这个规则。 * `ACT_RE_`:RE代表repository。带有这个前缀的表包含“静态”信息,例如流程定义与流程资源(图片、规则等)。 * `ACT_RU_`:RU代表runtime。这些表存储运行时信息,例如流程实例(process instance)、用户任务(user task)、变量(variable)、作业(job)等。Flowable只在流程实例运行中保存运行时数据,并在流程实例结束时删除记录。这样保证运行时表小和快。 * `ACT_HI_`:HI代表history。这些表存储历史数据,例如已完成的流程实例、变量、任务等。 * `ACT_GE_`:通用数据。在多处使用。