Activit功能引擎
Activit目前不支持2019.14以上的IDEA版本,因此这里用IDEA2019的版本来演示
初始依赖
第一步:IDEA安装Activiti插件
首先,创建一个普通的Java工程即可,然后按照下面流程进行:
1:点击菜单中的File(最左上角),选择settings
2.下载actiBPM https://plugins.jetbrains.com/plugin/7429-actibpm
3.安装actiBPM
第二步:创建一个流程图
1.新建一个JavaMaven项目
2.新建一个BPMFile文件
2.新建一个流程图
3.在左边属性设置职责人的名字
设置ID和Name每一个都要设置很重要,不然后面act_re_procdef表没有初始化数据
3.将.BPMN文件后缀更改为xml文件,打开转为xml文件
4.选择xml文件右键选择DIagrams=>Designer
5.选择个按钮保存到项目路径下,png保存
6.再次将xml文件更名为bpmn
7.把png文件和bpmn文件共同保存到flows文件下
8.编写activiti.cfg.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="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
<property name="jdbcDriver" value="com.mysql.cj.jdbc.Driver"></property>
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activit?useSSL=false&serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8"></property>
<property name="jdbcUsername" value="root"></property>
<property name="jdbcPassword" value="123"></property>
<!--
创建表的策略
-->
<property name="databaseSchemaUpdate" value="true"></property>
</bean>
</beans>
9.引入Maven依赖
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-engine</artifactId>
<version>6.0.0</version>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring</artifactId>
<version>6.0.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.21</version>
</dependency>
10.编写测试代码
public class ActivitTest {
@Test
public void creatTable(){
ProcessEngine processEngine = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml")
.buildProcessEngine();
}
}
10.运行结果 ,28张表 It’s OK!!
★★★★★代码编写
1、部署流程
@Test
public void creatActivitiTask(){
//加载的那两个内容就是我们之前已经弄好的基础内容哦。
//得到了流程引擎
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
processEngine.getRepositoryService()
.createDeployment()
.addClasspathResource("flow/负差生.xml")
.addClasspathResource("flow/负差生.png")
.deploy();
}
发生变化的表:act_ge_bytearray
2、启动流程实例
@Test
public void testStartProcessInstance(){
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
processEngine.getRuntimeService()
.startProcessInstanceById("myProcess_1:1:2504"); //这个是查看数据库中act_re_procdef表中的ID
}
发生变化的表:act_re_procdef
3、提交申请
// 提交申请
@Test
public void testQingjia(){
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
processEngine.getTaskService()
.complete("5005"); //查看act_ru_task表中的Id
}
4、查询项目组长的所有任务列表
查询当前PL正在执行的任务
@Test
public void testQueryTask(){
//下面代码中的PL,就是之前我们命名的项目组长名,Assignee属性
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
List<Task> tasks = processEngine.getTaskService()
.createTaskQuery()
.taskAssignee("PL")
.list();
for (Task task : tasks) {
System.out.println(task.getName());
}
}
5、项目组长完成审批
@Test
public void testFinishTask_manager(){
ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
engine.getTaskService()
.complete("7502"); //查看act_ru_task数据表ID
}
6、查询项目经理的所有任务列表
@Test
public void testQueryTask_PM(){
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
List<Task> tasks = processEngine.getTaskService()
.createTaskQuery()
.taskAssignee("PM")
.list();
for (Task task : tasks) {
System.out.println(task.getName()+task.getId());
}
}
7、项目经理PM完成审批
@Test
public void testFinishTask_Boss(){
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
processEngine.getTaskService()
.complete("10002"); //查看act_ru_task数据表
}
查询任务流程日志表
act_hi_taskinst
流初始化第二种方式(申请提交)
@Test
public void testDeployFromInputStream(){
InputStream bpmnStream = this.getClass().getClassLoader().getResourceAsStream("flow/负差生.bpmn");
//得到流程引擎
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
processEngine.getRepositoryService()
.createDeployment()
.addInputStream("flow/负差生.bpmn", bpmnStream)
.deploy();
}
测试
流初始化第三种方式(申请提交)
通过zipinputstream完成部署
注意:这个的话,需要将bpmn和png文件进行压缩成zip文件,然后放在项目src目录下即可(当然其他目录也可以)
@Test
public void testDeployFromZipinputStream(){
InputStream in = this.getClass().getClassLoader().getResourceAsStream("负差生.zip");
ZipInputStream zipInputStream = new ZipInputStream(in);
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
processEngine.getRepositoryService()
.createDeployment()
.addZipInputStream(zipInputStream)
.deploy();
}
删除已经初始化的流程
/**
* 删除已经部署的Activiti流程
*/
@Test
public void testDelete(){
//得到流程引擎
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
//第一个参数是部署的流程的ID,第二个true表示是进行级联删除
processEngine.getRepositoryService()
.deleteDeployment("601",true);
}
文章总结
activit是审批流的帮助工具,帮我们完成了项目审批的创建和流程管理,可以缩减工作量和维护,最重要的就是创建依赖时的命名规范。
代码
百度云:https://pan.baidu.com/s/1iJnUUmREf4ypXQtBDjQsvQ
密码:wdpk