美文网首页Spring Boot
springboot+activiti+jpa+mysql+bo

springboot+activiti+jpa+mysql+bo

作者: 辛夷z | 来源:发表于2018-09-29 18:22 被阅读499次

前面几篇介绍了些activiti的基础知识,这篇打算讲讲整合时需要注意的问题

提醒:该篇文章中使用的整合代码,已上传到GitHub,源码和文章会略有不同,文章偏旧可以参照
https://github.com/jianiter/springboot-jpa-activiti-bootstrap

先上张项目结构的整图,如下:


image.png

首先,还是要配置pom.xml:

   <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <activiti.version>5.19.0.2</activiti.version>
    </properties>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.kafka</groupId>
        <artifactId>spring-kafka</artifactId>
    </dependency>

    <!--添加数据库支持-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>



    <!--添加jpa支持-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-config</artifactId>
        <version>4.1.3.RELEASE</version>
    </dependency>

    <!--添加测试支持-->
    <dependency>
        <groupId>io.rest-assured</groupId>
        <artifactId>rest-assured</artifactId>
        <version>3.0.0</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest-all</artifactId>
        <version>1.3</version>
    </dependency>

    <!-- 添加日志支持 -->
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.7.12</version>
    </dependency>

    <!-- 添加Activiti支持 -->
    <dependency>
        <groupId>org.activiti</groupId>
        <artifactId>activiti-spring-boot-starter-basic</artifactId>
        <version>${activiti.version}</version>
    </dependency>

    <dependency>
        <groupId>org.activiti</groupId>
        <artifactId>activiti-spring-boot-starter-rest-api</artifactId>
        <!--<artifactId>spring-boot-starter-rest-api</artifactId>-->
        <version>${activiti.version}</version>
    </dependency>
    <dependency>
        <groupId>org.activiti</groupId>
        <artifactId>activiti-spring-boot-starter-actuator</artifactId>
        <version>${activiti.version}</version>
    </dependency>
    <dependency>
        <groupId>org.activiti</groupId>
        <artifactId>activiti-spring-boot-starter-jpa</artifactId>
        <version>${activiti.version}</version>
    </dependency>

    <!-- Testing -->

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.subethamail</groupId>
        <artifactId>subethasmtp-wiser</artifactId>
        <version>1.2</version>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>javax.servlet</groupId>
                <artifactId>servlet-api</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

</dependencies>

修改application.properties配置:

#thymeleaf的配置
spring.thymeleaf.cache=false
spring.thymeleaf.enabled=true
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.mode=HTML5

spring.application.name=Bootstrap Spring Boot
#mysql数据源的配置
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/activiti_demo
spring.datasource.username=admin
spring.datasource.password=123
spring.datasource.max-idle=10
spring.datasource.max-wait=10000
spring.datasource.min-idle=5
spring.datasource.initial-size=5

# hibernate 配置
spring.jpa.database=MYSQL
spring.jpa.show-sql=true
#spring.jpa.hibernate.ddl-auto=update #可以切换不同的方式
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
#大小写转换问题
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

server.port=8080
server.tomcat.uri-encoding=UTF-8

接下来,添加如下文件:


image.png

jpa在自定义SQL查询时,可以使用注解,如果有复杂SQL,可以使用native方式,配置在xml文件里,如下:


image.png

orm.xml文件里的SQL定义,举例如下
这里需要留意命名和参数的写法:

<?xml version="1.0" encoding="UTF-8" ?>
<entity-mappings xmlns="http://xmlns.jcp.org/xml/ns/persistence/orm"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence/orm http://xmlns.jcp.org/xml/ns/persistence/orm_2_0.xsd"
                 version="2.1">

    <named-native-query name="User.findByIdAndPwd"
                        result-class="com.dd.activiti.admin.model.User">
        <query>
            <![CDATA[
            select * from ACT_ID_USER as u
            where u.ID_=:id and u.PWD_=:pwd
            ]]>
        </query>
    </named-native-query>

</entity-mappings>

创建User.java
这里使用注解的方式,参照数据库的建表语句即可


image.png

创建UserRepository.java:
这里继承了JpaRepository,可以根据业务自行选择其他的类
需要留意的问题是,定义方法时的命名
这里的nativeQuery在orm.xml中有定义


image.png

创建IUserService.java:


image.png

创建UserServiceImpl.java
需要留意的问题是,activiti在执行task时,service注解需要指明


image.png

创建controller,这里创建两个做demo:


image.png

创建HomeController,做页面跳转:


image.png

创建AdminController.java,做json请求回传:


image.png

修改AdminApplication.java,做注解和初始化:


image.png

修改SecurityConfig.java:


image.png

做完上面这些配置,可以在test中执行,查看效果了

接下来,还需要配置前端页面资源


image.png

processes中存放activiti的流程图,bpmn,png,xml这些文件放在这里加载

static中存放css,js,images这些资源文件
templates中存放模板页面,这里使用html


image.png

创建login.html
需要留意加载资源文件的标签语法


image.png

请求一个接口得到结果显示,如下:


image.png

相关文章

  • springboot+activiti+jpa+mysql+bo

    前面几篇介绍了些activiti的基础知识,这篇打算讲讲整合时需要注意的问题 提醒:该篇文章中使用的整合代码,已上...

网友评论

    本文标题:springboot+activiti+jpa+mysql+bo

    本文链接:https://www.haomeiwen.com/subject/uheboftx.html