工作流学习
一、了解工作流
工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现”。
工作流管理系统(Workflow Management System, WfMS)是一个软件系统,它完成工作量的定义和管理,并按照在系统中预先定义好的工作流逻辑进行工作流实例的执行。工作流管理系统不是企业的业务系统,而是为企业的业务系统的运行提供了一个软件的支撑环境。
常见的工作流框架
Activity5.13、JBPM4.4、OSWorkFlow、WorkFlow
工作流框架底层需要有数据库提供支持,activiti5.13版本,有23张表。JBPM4.4框架底层有数据库支持,18张表。JBPM底层使用hibernate操作数据库。Activiti框架底层使用的mybatis操作数据库。
二、初始化表结构
建表之前,说一下activiti的工作全部依赖ProcessEngine工作引擎,而初始化表就是建立ProcessEngine实例的三种方式:
- ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration() +建表配置+.buildProcessEngine();
- ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml").buildProcessEngine()
- ProcessEngineConfiguration.createProcessEngineConfigurationFromResourceDefault().buildProcessEngine()
2.1 初始化表操作
2.1.1 使用activiti框架提供的建表语句
在activiti框架包下面的 /activiti-x.xx/database/ceate/ 中
2.1.2 使用activiti框架自动建表
public void createActivitiTableByConfigration() {
// 创建一个流程引擎配置对象
ProcessEngineConfiguration configuration = ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration();
// 设置数据源信息
configuration.setJdbcDriver("com.mysql.jdbc.Driver");//mysql数据库驱动
configuration.setJdbcUrl("jdbc:mysql://localhost:3306/activiti");//指定数据库
configuration.setJdbcUsername("root");//用户名
configuration.setJdbcPassword("");//密码
// 设置自动建表
configuration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
// 创建一个流程引擎对象,在创建流程引擎对象中会自动建表
ProcessEngine processEngine = configuration.buildProcessEngine();
System.out.println(processEngine);
}
2.1.3 使用xml配置文件初始化
public void createActivitiTableByXml() {
// ProcessEngineConfiguration processEngineConfiguration = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml");
// 创建一个流程引擎对象,在创建流程引擎对象中会自动建表
// ProcessEngine processEngine = processEngineConfiguration.buildProcessEngine();
ProcessEngine processEngine = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml").buildProcessEngine();
System.out.println(processEngine);
}
xml配置:
<?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:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<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"></property>
<property name="jdbcUsername" value="root"><