1.流程
1.1什么是流程?
流程就是按照一定设计规则执行的程序,例如公司的请假流程,报销流程等等.
1.2 我们怎么进行流程开发?
如果我们不借用框架的情况下进行流程开发,通常是在数据库表用一个状态的字段来对流程进行控制,比如请假流程,状态1是开始流程,填写了请假单,状态2是部门经理审批,状态3是总经理审批,状态4是人事存档.我们每个用户根据自己的角色筛选对应状态下的表中数据,对表中数据进行修改审批,这样就能完成对流程的控制.
1.3传统流程开发模式下的优势与弊端
优势:
简单,简介,针对小型的固定流程的项目,我们可以考虑此开发模式
缺点:
1.每一项流程与代码高度耦合,如果我们经常需要修改流程,则需要修改大量的代码.
2.对于复杂流程控制不是很灵活,代码编写难度大.
2.activiti是什么?
2.1常用的流程框架有哪些?
Activiti
JBoss JBPM 6.5
JFlow 6.0
FixFlow 5.0
2.2activiti 的设计逻辑
activiti的设计逻辑其实也是通过数据库表来控制流程,只不过为了解决流程和代码高度耦合,由BPMI这个组织开发了一套流程执行的模板与符号,其实就是花了一张图,只是这张图的底层是以个xml文件,他主要是用来控制流程的.
所以其实activiti就是两部分组成:
第一,bpmn文件(底层是xml文件)画出流程图.
第二,activiti的jar包,解析出bpmn文件,根据bpmn文件来控制流程的执行.
2.3activiti常用名词词汇
流程:即设计的bpmn文件
流程部署:即将bpmn文件存放在数据表中.
流程定义:也就是将bpmn流程文件解析出来的全部东西.
流程实例:也就是流程定义的实例对象,例如,请假流程这是流程定义,张三发起请假,这是流程实例.
任务:当前账号或者员工的任务.
节点:当前流程的一个节点.
2.4常用表分析
activiti会连接数据库生成多张数据库表,根据版本的不同,可能会有23张或者24张或者25张表.这些表存放了全部流程相关的东西
3.activiti的下载与安装
为什么我们需要下载安装activiti组件呢?其实我们如果流程的bpmn文件不是我们编写的,是由他人写好拷贝给我们的,我们可以不用在eclipse或者idea上安装activiti组件,我们安装的组件其实就是为了画bpmn图而已.
3.1 eclipse下载安装activiti
3.1.1 方式一:在线安装
步骤:
1)help -> Install new Software
2)然后点击 Add
3)我们在Name上 写上 Activiti BPMN 2.0 designer
Location上写上 http://activiti.org/designer/update/ (插件更新地址)
3.1.2方式二:离线安装
步骤:
1)下载离线jar包
接下来有两种方式:
第一种
第二种在 help -> Install new Software
3.1.3验证是否安装成功
查看是否安装成功,在eclipse中,File–>New–>Other–>搜索activiti出现以下界面,安装成功。
3.2 idea下载安装activiti
3.2.1在线安装
搜索
安装
3.2.2 离线安装
步骤:
1)下载actiBPM.jar包,官网下载即可
2)本地导入插件jar包
3.2.3验证是否安装成功
右键-new,查看是否可以new bpmn file文件
4.bpmn的介绍及使用
4.1什么是bpmn?
由BPMI(The Business Process Management Initiative)开发了一套标准叫业务流程建模符号(BPMN - Business Process Modeling Notation)。简单点来说就是用来化流程图,画出的流程图底层是xml文件,可以被解析成一个个的节点.
画图:
xml文件
4.2 bpmn文件的作用?
作用:bpmn是用来画流程图的,底层是xml文件,可以被解析成一个个的节点.
4.3bpmn文件包括哪些组件?
开始节点: 流程的开始
结束节点: 流程的结束
任务节点: 中间的任务节点
泳道: 不知
网关: 做接下来的流处理
事件:不知
5.activiti的常用api
activiti的架构图
5.1 依赖的导入及配置文件的抒写
1).导入依赖
` <dependencies>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-engine</artifactId>
<version>7.1.0.M1</version>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring</artifactId>
<version>7.1.0.M1</version>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-bpmn-model</artifactId>
<version>7.1.0.M1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.32</version>
</dependency>
<!--引入druid数据源 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.12</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-nop</artifactId>
<version>1.7.2</version>
</dependency>
</dependencies>
2).配置文件的抒写 activiti.cfg.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--如果用processEngine.getDefaultEngine()方法获取默认的processEngine,则必须文件名为activiti.cfg.xml,并且bean的name也要为这个-->
<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/actdb1??serverTimezone=GMT%2B8"></property>
<property name="jdbcUsername" value="root"></property>
<property name="jdbcPassword" value="root"></property>
<property name="databaseSchemaUpdate" value="true"></property>
</bean>
</beans>
5.2 processEngine对象的获取
配置文件:其实就是配置dataSource,配置数据库连接池.因为activiti要操作数据库表
这里是用的mysql数据库.
代码
//方法1 自己加载配置文件
//1.获取configuration对象
ProcessEngineConfiguration configuration = ProcessEngineConfiguration
.createProcessEngineConfigurationFromResource("activiti.cfg.xml");
//2.获取ProcessEngine对象
ProcessEngine engine = configuration.buildProcessEngine();
//方法2,默认读取resources/ac