数据库:mysql

IDE:Spring Tool Suite

build工具:Maven

项目版本:springBoot1.5.10 + JDK1.8 + Maven3.0.5
(之前用的是2.0.0版本的springBoot,集成activiti6后启动一直报错,最后发现是版本问题,改为1.5.10就可以了,迷之崩溃o(╥﹏╥)o)

一.构建springBoot

1.创建项目

(1)使用idea创建springboot项目很快,可参考如下链接:
https://www.cnblogs.com/winner-0715/p/6666302.html

(2)使用eclipse安装STS插件的方式,参考链接:
https://blog.csdn.net/clementad/article/details/51334064
(可能我的eclipse比较调皮,STS插件安装一直没配置成功,so我直接下载了STS

(3)STS下载地址:
http://spring.io/tools/sts/all

使用STS创建项目:

新建项目–选择Spring Boot下的Spring Starter Project–Next



选择SpringBoot的版本:

创建成功后的目录结构:

给pom.xml添加以下依赖:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId>
</dependency>

2.运行项目

找到整个项目的入口类:MiaoApplication

这个类有一个@SpringBootApplication注解,这是整个Spring Boot的核心注解,它的目的就是开启Spring Boot的自动配置。需要在这个类上再添加一个@RestController注解,使之变为一个Controller,然后里边提供一个地址转换方法,如下:

@RestController
@SpringBootApplication
public class MiaoApplication {
public static void main(String[] args){
SpringApplication.run(MiaoApplication.class, args);
}
@GetMapping(value = "/")
String index(){
return "Hello Spring Boot!";
}
}

然后运行项目,控制台没有报错信息就说明成功了,在浏览器上可以直接访问:

二.Activiti6安装运行

1.下载和安装Activiti6

链接: https://pan.baidu.com/s/1livSJdUm3doUzBZI5AKJWA
密码: 2qza
解压后发现一共有三个子目录:database,libs,wars,各个目录的作用描述如下:

2.使用tomcat配置与运行

wars目录下的三个war包默认使用的是h2内存数据库,重启服务器数据就会消失。将3个war包复制到tomcat的webapps的目录下,更改tomcat的server.xml文件的Context 为:

<Context docBase="F:\apache-tomcat-7.0.59\webapps\activiti-app.war" path="/" reloadable="true"/>

然后双击bin目录下的startup.bat文件启动tomcat,打开浏览器即可访问:
(用户名:admin;密码:test)

**PS:**如果你的startup.bat双击后自动关闭了,有可能和我一样是java.lang.OutOfMemoryError异常,需要在bin/catalina.bat文件中找到以下一行:

echo Using CATALINA_BASE:   "%CATALINA_BASE%"

在这行的上面添加:

set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128M -XX:MaxPermSize=512m

重新运行startup.bat即可。

三.Activiti6的使用

Activiti官方发布的activiti-app可以说是一个较为完善的样例,可以通过它来了解Activiti的大部分功能。
登录成功后,可以看到有三个不同的模块:


下面我们以请假为例,定义一个工作流程。我们知道,请假流程中涉及到的人员有员工和主管,那么首先需要新建这两种类型的用户,之后定义请假流程。

1.新建用户

点击Idennity management,进入Users模块,点击“Create user”按钮新建需要请假的员工:

2.定义流程

点击Kickstart app,进入Processes,点击“Create Process”创建流程。
流程创建完毕会自动进入流程编辑界面,会有提示告诉你怎么用,超贴心~
通过鼠标拖拉,即可完成一个流程的定义:

我们定义了一个开始事件和一个结束事件以及两个用户任务,我们需要把用户任务分配给对应的人员。
点击第一个用户任务“提出请假申请”,修改它的“Assignment”属性,将当前任务分配给Employee:

同样,需要把第二个用户任务分配给manager。任务分配成功后,点击左上角的保存按钮保存当前流程。

3.发布流程

在activiti-app中,一个App可以包含多个流程模型,因此在发布流程前,需要新建一个App并设置它的流程模型。
点击Apps菜单下的“Create App”按钮,创建App:

创建完成后,将之前创建的流程绑定到该App上,之后发布该App:

发布成功后,使用Employee账号登录,可以看到发布成功的HR App,进入该App,点击Processes菜单,可以看到“Start a process”按钮,点击后即可启动一个请假流程。

启动后就由employee用户完成第一个请假申请:

之后可登录manager用户进行审核操作,同样点击HR App,进入后点击Processes菜单,以同样方式操作完成任务后,该流程结束。

四.Spring Tool Suite中使用Activiti6

1.修改配置文件application.properties,保存为application.yml
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/spring-boot-activiti?useUnicode=true&characterEncoding=utf8&useSSL=false
username: root
password:
jpa:
show-sql: true
记得新建一个对应的数据库:spring-boot-activiti~

2.在pom.xml中添加Activiti6的依赖

前端使用了thymeleaf模板进行展示,因此也需要引入它的依赖:

<dependency><groupId>org.activiti</groupId><artifactId>activiti-spring-boot-starter-basic</artifactId><version>6.0.0</version>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

3.在资源目录下创建processes目录

用于保存.bpmn后缀的流程图,这个目录名千万不要手抖打错了,相信我,程序一定会报错的~

4.安装Activiti插件
https://blog.csdn.net/qq_33547950/article/details/54926435

5.在processes文件下新建bpmn文件

6.使用Activiti插件设计流程图

需要在IDE里调出properties面板配置参数:

1).General配置Id和文字,注意Id不能重复;

2)Main config里面配置当前任务的代理人Assignee;

3)Candidate users可以配置当前任务的候选人组,具体应用场景:
当审核者有两个或多个以上,请假申请提交到他们手上后,有一个人认领了该任务,即代表申请被审批通过,这种情况下就需要使用候选人组配置。

对于有两个出口连线的任务,我们通过设置连线flow的流程变量的方式来自动控制流程的流转:

7.编写流程代码

说明:

  1. com.example.MiaoApplication包含了当前demo的主要功能:
    登录;退出;添加请假单;放弃请假;申请请假;审核请假;获取请假状态;获取请假流程。

  2. com.example.controller.MiaoController包含了三个页面请求,分别为:
    申请人主页面,审核人主页面,请假单填写页面;

  3. com.example.entity包含了两个表:
    User表:用于存放当前用户,登录验证之前,需要手动在该表内加入信息,示例如下(type为1代表申请人,2代表审核人):

    VacationForm表:用于存放请假信息;

  4. com.example.service包含了三个service:
    MiaoService:业务流程操作接口;
    UserService:用户表操作接口,继承了JpaRepository;
    VacationFormService:请假表操作接口,继承了JpaRepository;

  5. com.example.serviceImpl中的MiaoServiceImpl是对MiaoService接口的实现。具体细节都标注在了代码注释里,代码已上传git:
    https://github.com/jichunyang19931023/ActivitiWithSpringBoot

补充:
1.本demo的用户登录信息存储在cookie里,实际场景下可以考虑存放在Redis里;
2.数据库操作使用了SpringData的JpaRepository,实现的时候只需写一个继承JpaRepository的类,需要给出实体类名和主键类型。

3.启动Spring Boot工程,默认会自动部署相应路径下流程定义文件;自动创建Activiti ProcessEngine Bean;自动注册Activiti Service;创建Job Executor。所以我们不用像网上的大多数教程那样配置引擎,直接使用对应的服务即可:

以上配置教程个人原创,有理解不对的地方欢迎提出建议~✿✿ヽ(°▽°)ノ✿


欢迎关注我的公众号,用讲故事的方式学技术。

这里有脑洞大开的奇葩故事,也有温暖文艺的心灵感悟。

技术知识,也可以很有趣。

springBoot集成Activiti6相关推荐

  1. Activiti 快速入门教程:SpringBoot 集成 Activiti6 + Activiti Modeler 流程配置可视化

    Activiti 快速入门教程:SpringBoot 集成 Activiti6 + Activiti Modeler 流程配置可视化 7大服务与核心表 23张表概览 7大核心服务(重要) 加依赖 内部 ...

  2. SpringBoot集成Activiti6教程

    第一步在项目pom.xml文件中添加所需依赖 <?xml version="1.0" encoding="UTF-8"?> <project ...

  3. Activiti(一)SpringBoot2集成Activiti6

    Activiti是领先的轻量级的,以Java为中心的开源BPMN(Business Process Modeling Notation)引擎,实现了真正的流程自动化.下面介绍如何在SpringBoot ...

  4. Windows下安装Mongodb SpringBoot集成MongoDB和Redis多数据源

    全文内容: Mongodb安装 说明:Mongodb和redis是开发中常用的中间件,Redis的安装使用比较简单就不写了,只说本地也就是Windows安装Mongodb. SpringBoot集成M ...

  5. SpringBoot集成FreeMarker

    给大家简单介绍一下springboot 集成FreeMarker 过程很简单,5分钟即可. 首先在项目中增添依赖spring-boot-starter-freemarker pom文件代码如下: &l ...

  6. springboot集成swagger2测试接口

    springboot集成swagger2测试接口 1.需要的依赖 2.开始编写一个swagger2 3.演示效果图片 1.需要的依赖 <dependency><groupId> ...

  7. springboot 集成logback

    springboot 集成logback 1.application.properties配置文件指定logback.xml logging.config=classpath:logback.xml ...

  8. springboot集成swagger2多模块中文配置详细步骤,解决集成mybatis或mybatis-plus无法正常使用问题

    springboot集成swagger2多模块中文配置详细步骤,解决集成mybatis或mybatis-plus无法正常使用问题 参考文章: (1)springboot集成swagger2多模块中文配 ...

  9. SpringBoot集成Quartz(解决@Autowired空指针Null问题即依赖注入的属性为null)

    SpringBoot集成Quartz(解决@Autowired空指针Null问题即依赖注入的属性为null) 参考文章: (1)SpringBoot集成Quartz(解决@Autowired空指针Nu ...

  10. SpringBoot集成全局异常处理

    2019独角兽企业重金招聘Python工程师标准>>> SpringBoot集成全局异常处理 前言 对于通常的MVC项目,大量的异常需要我们去处理,如此一来,我们的 Controll ...

最新文章

  1. 注释嵌套注释_注释梦Night
  2. 10万码农五年的C语言笔记!你现在知道别人为什么这么优秀了吗?
  3. 界址点圆圈怎么生成_技巧|CASS10.1的界址点圆圈如何变细?
  4. c2c旅游springboot开源_7个开源的 Spring Boot 前后端分离项目,一定要收藏!
  5. CCF201809-1 卖菜
  6. python定位元素方法_Python+webdriver定位元素的几种方法
  7. ajax 跨域 java_java+jQueryd的ajax跨域方法
  8. Matlab图像处理系列2———空间域平滑滤波器
  9. 扫描微信二维码实现快速登录
  10. 苏琴与机器人白正_一段知乎的元白
  11. 【梦话区】如何解决QQ视频时别人听不到自己声音的问题——转
  12. 计算机方面发什么类型的论文,计算机类本科毕业论文
  13. 地下城与勇士(DNF)安图恩副本(黑雾之源、震颤的大地、舰炮防御战、擎天之柱、能量阻截战、黑色火山、安徒恩的心脏)(童年的回忆)
  14. 安卓实训项目源码_实训2019 | 联想云实训心得
  15. 词汇导入词根词缀字典
  16. 华为HCIA考试全解答
  17. 【AntdVue】下拉选择框乱回弹问题
  18. tar包解压和打包方法
  19. [WP/CTFshow]XSS Web316-333
  20. python一些方法

热门文章

  1. java英文姓名随机生成_java随机生成中国人姓名
  2. 尽量干净地卸载360
  3. 计算机图形驱动程序原理,如何安装计算机图形驱动程序?
  4. vue改页面顶部浏览器标题栏图标、名称和地址栏详细教程
  5. 从零开始学USB(八、USB的数据流模型)
  6. 计算机怎么清理CAD,注册表cad,如何清理cad软件在注册表残留
  7. php 生成导出excel,PHP导出生成EXCEL文件
  8. php 如何查询数组,php
  9. vivo9.0以上系统如何无需Root激活XPOSED框架的流程
  10. 重庆大学c语言程序设计基础,c语言程序设计基础黄文胜