工作流:一套业务流程
员工编写请假条----->部门经理进行处理----->总经理------>人事登记
数据库中生成记录
工号 姓名 部门编号 请假日期 请假天数 请假事由 状态
001 张三 1 2020年3月30日 3 zxxx 0,1 0代表提交失败 1代表提交成功
部门经理:部门经理的部门编号和审批员工的部门编号要一致,状态=1
同意:2 驳回:3
总经理:可以查看到状态为2的数据,代表部门经理已经审批
同意:4 驳回:5
人事:可以查看到状态为4的数据
同意:6 驳回:7
工作流引擎:帮助自动化管理业务流程,Activiti7
Activiti7操作流程:
1.部署Activiti,一般将Activiti和业务部署到一起
2.定义流程图
3.通过Activiti提供API生成流程定义的内容
4.用户查看代办流程
5.用户处理
6.流程结束
安装Activiti Designer 流程设计器:
idea插件官网:https://plugins.jetbrains.com/
打开IDEA工具,选择file---->settings---->plugins
方案一:搜索actiBPM插件,如果能搜索到的情况下右侧有下载链接
方案二:进入IDEA插件官网,搜索actiBPM,点击Get获取,选择最新版本进行下载,下载完成是一个jar包
重复上面的动作打开IDEA工具,选择file---->settings---->plugins,点击小齿轮设置,选择第三项Install Plugin from disk
选择对应Jar包,然后就可以看到对应的actiBMP,点击Restart重启IDEA
编写流程图:
创建一个bpmn文件,通过每一个流程控制内容书写流程
搭建Activiti开发环境:
步骤一:导入依赖
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.wn</groupId> <artifactId>activiti</artifactId> <version>1.0-SNAPSHOT</version> <modules> <module>activiti_day01</module> </modules> <packaging>pom</packaging> <name>activiti Maven Webapp</name> <!-- FIXME change it to the project's website --> <url>http://www.example.com</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.7</maven.compiler.source> <maven.compiler.target>1.7</maven.compiler.target> <slf4j.version>1.6.6</slf4j.version> <log4j.version>1.2.12</log4j.version> </properties> <dependencies> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-engine</artifactId> <version>7.0.0.Beta1</version> </dependency> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-spring</artifactId> <version>7.0.0.Beta1</version> </dependency> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-bpmn-model</artifactId> <version>7.0.0.Beta1</version> </dependency> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-bpmn-converter</artifactId> <version>7.0.0.Beta1</version> </dependency> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-json-converter</artifactId> <version>7.0.0.Beta1</version> </dependency> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-bpmn-layout</artifactId> <version>7.0.0.Beta1</version> </dependency> <dependency> <groupId>org.activiti.cloud</groupId> <artifactId>activiti-cloud-services-api</artifactId> <version>7.0.0.Beta1</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.40</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> <!-- log start --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>${log4j.version}</version> </dependency> <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> <!-- log end --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.5</version> </dependency> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.4</version> </dependency> </dependencies>
步骤二:创建Activiti配置文件
<!--数据源--> <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-y2170"/> <property name="username" value="root"/> <property name="password" value="root"/> </bean> <!--配置Activiti使用的processEngine对象 默认命名为processEngineConfiguration--> <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"> <!--注入数据源--> <property name="dataSource" ref="dataSource"/> <!--配置数据源方式二:--> <!--<property name="jdbcDriver" value="com.mysql.jdbc.Driver"/>--> <!--指定数据库生成策略--> <property name="databaseSchemaUpdate" value="true"/> </bean>
步骤三:创建一个测试类,加载对应配置文件即可
public static void main(String[] args) { //加载配置 ProcessEngineConfiguration configuration = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml"); //获取ProcessEngine对象 ProcessEngine processEngine = configuration.buildProcessEngine(); } public static void main(String[] args) { //加载配置 默认查找bean的id为processEngineConfiguration,可以更改 ProcessEngineConfiguration configuration = ProcessEngineConfiguration. createProcessEngineConfigurationFromResource("activiti.cfg.xml","processEngineConfiguration01"); //获取ProcessEngine对象,默认根据activiti.cfg.xml文件加载配置文件 /*ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();*/ ProcessEngine processEngine = configuration.buildProcessEngine(); }
Activiti数据库构成:
ACT_RE_*: 'RE'表示 repository。 这个前缀的表包含了流程定义和流程静态资源 (图片, 规则,等等)。
ACT_RU_*: 'RU'表示 runtime。 这些运行时的表,包含流程实例,任务,变量,异步任务, 等运行中的数据。 Activiti 只在流程实例执行过程中保存这些数据, 在流程结束时就会删除这些记录。 这样运行时表可以一直很小速度很快。
ACT_HI_*: 'HI'表示 history。 这些表包含历史数据,比如历史流程实例, 变量,任务等等。
ACT_GE_*: GE 表示general。通用数据, 用于不同场景下。