基于springboot的activiti 工作流后台管理系统
技术:springboot2.0.6 apache-maven-3.5.4 activiti5.22 jdk 1.8.0 mysql5.7.19 bootstrap3.3.7 layer3.3.1
概述
springboot 整合 activiti5.22 实现工作流的统一后台管理 提供流程定义的增删改查导入导出等功能,流程实例的运行状态查询。整合了 activiti-explore项目的流程编辑器,支持图形化的流程绘制。提供流程操作rest 接口 便于后期springcloud微服务改造以后通过http调用开启流程和获取流程实例信息等操作。
详细
1.运行效果:
登录界面:
流程定义管理页面:
流程实例管理页面:
流程编辑页面:
流程实例状态页面,支持当前审批节点高亮,并显示流程历史审批信息:
2.实现步骤
确保本地安装jdk1.8.0 环境 以及 mysql5.7.19 利用mysqlworkbench 创建本地数据库,运行activiti5.22 database-create目录中的三个sql 创建activiti 默认的表结构:
再运行项目resources->sql目录下的sql语句创建其余的项目中必须的数据库表:
包括:act_hi_ispass,act_system,model_detail,sa_user,system_model 五个表
数据库创建完成后,打开intellij idea 导入项目文件 file->open
打开application.yml文件修改你的数据库连接用户名和密码:
在sa_user表中创建一个测试用户便于登录,等待maven 依赖下载完毕以后 启动项目 访问localhost:8889/login 即可进入登录界面。
3.项目主要配置:
1.maven依赖:
2.springboot配置:
debug: true #前缀相同的配置项,idea会自动进行归纳 server: port: 8889 servlet: context-path: / tomcat: basedir: /tmp/tomcat spring: application: name: activitiservice mvc: date-format: yyyy-MM-dd # static-path-pattern: /static/** datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/activitiservice?useUnicode=true&characterEncoding=utf8&useSSL=false username: root password: 1 # type: com.alibaba.druid.pool.DruidDataSource activiti: database-schema-update: true check-process-definitions: false process-definition-location-prefix: classpath:/processes/ # process-definition-location-suffixes: # - **.bpmn # - **.bpmn20.xml history-level: full async-executor-activate: false thymeleaf: cache: false transaction: rollback-on-commit-failure: true servlet: multipart: max-file-size: -1 max-request-size: -1 mybatis: mapper-locations: classpath:mybatis/mapper/*.xml type-aliases-package: com.xyc.entity,com.xyc.vo config-location: classpath:mybatis/mybatis-config.xml logging: # level: # com.xyc.dao.mapper: debug # org.activiti.engine.impl.persistence.entity: trace config: classpath:logback-spring.xml # path: d:/log/activitiService.log pagehelper: helper-dialect: mysql reasonable: true
3.mybatis配置:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <settings> <setting name="logImpl" value="slf4j"/> <setting name="cacheEnabled" value="true"/> <setting name="mapUnderscoreToCamelCase" value="true"/> <setting name="aggressiveLazyLoading" value="false"/> </settings> </configuration>
4.slf4j配置:
<?xml version="1.0" encoding="UTF-8" ?> <configuration> <!-- %m输出的信息,%p日志级别,%t线程名,%d日期,%c类的全名,%i索引【从数字0开始递增】,,, --> <!-- appender是configuration的子节点,是负责写日志的组件。 --> <!-- ConsoleAppender:把日志输出到控制台 --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>info</level> </filter> <encoder> <pattern>%d %p (%file:%line\)- %m%n</pattern> <!-- 控制台也要使用UTF-8,不要使用GBK,否则会中文乱码 --> <charset>UTF-8</charset> </encoder> </appender> <appender name="STDOUT2" class="ch.qos.logback.core.ConsoleAppender"> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>debug</level> </filter> <encoder> <pattern>%d %p (%file:%line\)- %m%n</pattern> <!-- 控制台也要使用UTF-8,不要使用GBK,否则会中文乱码 --> <charset>UTF-8</charset> </encoder> </appender> <!-- RollingFileAppender:滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 --> <!-- 1.先按日期存日志,日期变了,将前一天的日志文件名重命名为XXX%日期%索引,新的日志仍然是 activitiService.log --> <!-- 2.如果日期没有发生变化,但是当前日志的文件大小超过1KB时,对当前日志进行分割 重命名--> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!--<File>d:/activitiLog/activitiService.log</File>--> <File>activitiLog/activitiService.log</File> <!-- rollingPolicy:当发生滚动时,决定 RollingFileAppender 的行为,涉及文件移动和重命名。 --> <!-- TimeBasedRollingPolicy: 最常用的滚动策略,它根据时间来制定滚动策略,既负责滚动也负责出发滚动 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 活动文件的名字会根据fileNamePattern的值,每隔一段时间改变一次 --> <!-- 文件名:log/sys.2017-12-05.0.log --> <fileNamePattern>log/activitiService.%d.%i.log</fileNamePattern> <!-- 每产生一个日志文件,该日志文件的保存期限为30天 --> <maxHistory>30</maxHistory> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <!-- maxFileSize:这是活动文件的大小,默认值是10MB --> <maxFileSize>10MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder> <!-- pattern节点,用来设置日志的输入格式 --> <pattern>%d %p (%file:%line\)- %m%n</pattern> <!-- 记录日志的编码 --> <charset>UTF-8</charset> <!-- 此处设置字符集 --> </encoder> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"><!-- 输出的日志级别是大于或等于info级别的日志信息- --> <level>info</level> </filter> </appender> <appender name="FILE2" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!--<File>d:/activitiLog/activitiService2.log</File>--> <File>activitiLog/activitiService2.log</File> <!-- rollingPolicy:当发生滚动时,决定 RollingFileAppender 的行为,涉及文件移动和重命名。 --> <!-- TimeBasedRollingPolicy: 最常用的滚动策略,它根据时间来制定滚动策略,既负责滚动也负责出发滚动 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 活动文件的名字会根据fileNamePattern的值,每隔一段时间改变一次 --> <!-- 文件名:log/sys.2017-12-05.0.log --> <fileNamePattern>log/activitiService2.%d.%i.log</fileNamePattern> <!-- 每产生一个日志文件,该日志文件的保存期限为30天 --> <maxHistory>30</maxHistory> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <!-- maxFileSize:这是活动文件的大小,默认值是10MB --> <maxFileSize>10MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder> <!-- pattern节点,用来设置日志的输入格式 --> <pattern>%d %p (%file:%line\)- %m%n</pattern> <!-- 记录日志的编码 --> <charset>UTF-8</charset> <!-- 此处设置字符集 --> </encoder> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"><!-- 输出的日志级别是大于或等于debug级别的日志信息- --> <level>debug</level> </filter> </appender> <root level="debug"> <appender-ref ref="STDOUT2" /> <appender-ref ref="FILE2" /> <!--<appender-ref ref="STDOUT" />--> <!--<appender-ref ref="FILE" />--> </root> <logger name="com.xyc" level="debug" additivity="false"> <appender-ref ref="STDOUT2" /> <appender-ref ref="FILE2" /> </logger> <logger name="org.activiti.engine.impl.persistence.entity" level="trace" additivity="false"> <appender-ref ref="STDOUT2" /> <appender-ref ref="FILE2" /> </logger> <!--com.xyc.dao.mapper: debug--> <!--org.activiti.engine.impl.persistence.entity: trace--> <!-- 指定项目中某个包,当有日志操作行为时的日志记录级别 --> <!-- com.appley为根包,也就是只要是发生在这个根包下面的所有日志操作行为的权限都是DEBUG --> <!-- 级别依次为【从高到低】:FATAL > ERROR > WARN > INFO > DEBUG > TRACE --> <!--<logger name="com.appleyk" level="DEBUG">--> <!--<appender-ref ref="syslog" />--> <!--</logger>--> </configuration>
4.项目目录结构
具体功能实现代码就不粘贴了,可以自己看项目文件
本实例支付的费用只是购买源码的费用,如有疑问欢迎在文末留言交流,如需作者在线代码指导、定制等,在作者开启付费服务后,可以点击“购买服务”进行实时联系,请知悉,谢谢
手机上随时阅读、收藏该文章 ?请扫下方二维码