一、Activiti工作demo支行
1.下载activiti-explorer.war
2.部署到tomact的webapps中
3.启动tomact,在浏览器地址中键入:http://localhost:8080/activiti-explorer,以用户名kermit密码kermit登录进去
如图:
二、初始化Activiti工作数据表
Activiti用来存放流程数据共使用23张表,表名都是"ACT_"开头,底层操作默认使用mybatis操作
工作流Activiti的表是使用用来存储流程数据的,而业务的数据需要用户自己创建和维护
在使用Activiti一定需要业务去关联流程。
1.使用代码创建Activiti工作流23张表
/**使用代码创建工作流需要的23张表*/ @Test public void createTable() { ProcessEngineConfiguration processEngineConfiguration = ProcessEngineConfiguration .createStandaloneProcessEngineConfiguration(); //连接数据库的配置 //配置数据库驱动:对应不同数据库类型的驱动 processEngineConfiguration.setJdbcDriver("com.mysql.jdbc.Driver"); //配置数据库的JDBC URL processEngineConfiguration.setJdbcUrl("jdbc:mysql://localhost:3306/activiti?useUnicode=true&characterEncoding=utf8"); //配置连接数据库的用户名 processEngineConfiguration.setJdbcUsername("root"); //配置连接数据库的密码 processEngineConfiguration.setJdbcPassword("root"); /** public static final String DB_SCHEMA_UPDATE_FALSE = "false";不能自动创建表,需要表存在 public static final String DB_SCHEMA_UPDATE_CREATE_DROP = "create-drop";先删除表再创建表 public static final String DB_SCHEMA_UPDATE_TRUE = "true";如果表不存在,自动创建表 */ processEngineConfiguration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE); //工作流的核心对象,ProcessEnginee对象 ProcessEngine processEngine = processEngineConfiguration.buildProcessEngine(); System.out.println("processEngine:"+processEngine); }
2.使用配置文件创建工作流需要的23张表
/**使用配置文件创建工作流需要的23张表*/ @Test public void createTable_2(){ ProcessEngine processEngine = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml") .buildProcessEngine(); System.out.println("processEngine:"+processEngine); }
activiti.cfg.xml(activiti的配置文件)
Activiti核心配置文件,配置流程引擎创建工具的基本参数和数据库连接池参数。
定义数据库配置参数:
l jdbcUrl: 数据库的JDBC URL。
l jdbcDriver: 对应不同数据库类型的驱动。
l jdbcUsername: 连接数据库的用户名。
l jdbcPassword: 连接数据库的密码。
基于JDBC参数配置的数据库连接 会使用默认的MyBatis连接池。 下面的参数可以用来配置连接池(来自MyBatis参数):
l jdbcMaxActiveConnections: 连接池中处于被使用状态的连接的最大值。默认为10。
l jdbcMaxIdleConnections: 连接池中处于空闲状态的连接的最大值。
l jdbcMaxCheckoutTime: 连接被取出使用的最长时间,超过时间会被强制回收。 默认为20000(20秒)。
l jdbcMaxWaitTime: 这是一个底层配置,让连接池可以在长时间无法获得连接时, 打印一条日志,并重新尝试获取一个连接。(避免因为错误配置导致沉默的操作失败)。 默认为20000(20秒)。
<!--EndFragment-->
示例数据库配置参数:
<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"> <!-- ProcessEngineConfiguration processEngineConfiguration = ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration(); //连接数据库的配置 processEngineConfiguration.setJdbcDriver("com.mysql.jdbc.Driver"); processEngineConfiguration.setJdbcUrl("jdbc:mysql://localhost:3306/itcast0711activiti?useUnicode=true&characterEncoding=utf8"); processEngineConfiguration.setJdbcUsername("root"); processEngineConfiguration.setJdbcPassword("root"); /** public static final String DB_SCHEMA_UPDATE_FALSE = "false";不能自动创建表,需要表存在 public static final String DB_SCHEMA_UPDATE_CREATE_DROP = "create-drop";先删除表再创建表 public static final String DB_SCHEMA_UPDATE_TRUE = "true";如果表不存在,自动创建表 */ processEngineConfiguration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE); --> <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"> <!-- 连接数据的配置 --> <property name="jdbcDriver" value="com.mysql.jdbc.Driver"></property> <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activiti?useUnicode=true&characterEncoding=utf8"></property> <property name="jdbcUsername" value="root"></property> <property name="jdbcPassword" value="root"></property> <!-- 没有表创建表 --> <property name="databaseSchemaUpdate" value="true"></property> </bean> </beans>