jeecg-boot+activiti集成工作流

jeecg-boot+activiti集成工作流

  • 系统集成后支持功能介绍
    • 版本支持 :jeecg-boot-2.1.4+activiti5.22 +modeler在线设计器
    • 内容还是挺多的 (如果在集成过程中有遇到问题请给我留言吧!这里会回复的哦)
    • 下面给出一下作者在集成过程中踩的坑

系统集成后支持功能介绍

  1. 集成流程设计器modeler(汉化版)
  2. 关联系统业务模块,封装流程可配置管理系统业务模块
  3. 支持用户&用户组使用系统角色数据
  4. 流程图追踪高亮

版本支持 :jeecg-boot-2.1.4+activiti5.22 +modeler在线设计器

  1. 集成需要资料
    activiti-explorer2_5.22-官方汉化版_源码包(也可以去官网下载)

  2. 前端项目配置

   	解压activiti-explorer2_5.22-官方汉化版_源码包 拷贝activiti-webapp-explorer2\src\main\webapp下的diagram-viewer、editor-app以及modeler.html	
   	放入ant-design-vue-jeecg 项目(目录结构自己定义)			 
  1. 后端项目配置
1.将Activiti-activiti-5.22.0\modules\activiti-webapp-explorer2\src\resources下的stencilset.json放置在项目resources\static文件夹下。

2.将Activiti-activiti-5.22.0\modules\activiti-modeler\src\main\java\org\activiti\rest\editor下的main以及model中的java文件放置到项目mian\java目录下(也可以自己定义)
下面给出作者的结构截图
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200422203053533.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpYW9uYW5zaGlkYWkxMjM=,size_16,color_FFFFFF,t_70)
3.复制完成后,将ModelEditoeJsonRestResource.java、ModelSaveRestResource.java、StencilsetRestResource.java上添加 @RequestMapping(value = “/service”)
然后修改resources\static\editor-app\app-cfg.js,
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200422203417554.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpYW9uYW5zaGlkYWkxMjM=,size_16,color_FFFFFF,t_70)
  1. 下面上代码(ModelEditorJsonRestResource 这里做了修改)
package org.jeecg.modules.act.core;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import lombok.extern.slf4j.Slf4j;
import org.activiti.editor.constants.ModelDataJsonConstants;
import org.activiti.engine.ActivitiException;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.repository.Model;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@Slf4j
public class ModelEditorJsonRestResource implements ModelDataJsonConstants {

   @Autowired
   private RepositoryService repositoryService;

   @Autowired
   private ObjectMapper objectMapper;

   @RequestMapping(value = {"/service/model/{modelId}/json"}, method = {org.springframework.web.bind.annotation.RequestMethod.GET}, produces = {"application/json"})
   public ObjectNode getEditorJson(@PathVariable String modelId) {
       ObjectNode modelNode = null;
     log.debug("---------------------------ModelEditorJsonRestResource.getEditorJson---------");
       Model model = this.repositoryService.getModel(modelId);

       if (model != null) {
           try {
               if (StringUtils.isNotEmpty(model.getMetaInfo())) {
                   modelNode = (ObjectNode) this.objectMapper.readTree(model.getMetaInfo());
               } else {
                   modelNode = this.objectMapper.createObjectNode();
                   modelNode.put("name", model.getName());
               }
               modelNode.put("modelId", model.getId());
               ObjectNode editorJsonNode = (ObjectNode) this.objectMapper.readTree(new String(this.repositoryService
                       .getModelEditorSource(model
                               .getId()), "utf-8"));
               modelNode.put("model", editorJsonNode);
           } catch (Exception e) {
               log.error("Error creating model JSON", e);
               throw new ActivitiException("Error creating model JSON", e);
           }
       }
       return modelNode;
   }
}

  1. yml配置
server:
 port: 8080
 tomcat:
   max-swallow-size: -1
 servlet:
   context-path: /jeecg-boot
 compression:
   enabled: true
   min-response-size: 1024
   mime-types: application/javascript,application/json,application/xml,text/html,text/xml,text/plain,text/css,image/*

management:
 endpoints:
   web:
     exposure:
       include: metrics,httptrace

spring:
 #这是去除了 activiti 的security  如果需要 可以 引入其依赖放开注释
 #  security:
 #    user:
 #      name: admin
 #      password: 123456
 # 工作流
 activiti:
   check-process-definitions: false
   db-identity-used: false
   database-schema-update: true
 servlet:
   multipart:
     max-file-size: 10MB
     max-request-size: 10MB
 mail:
   host: smtp.163.com
   username: [email protected]
   password: ??
   properties:
     mail:
       smtp:
         auth: true
         starttls:
           enable: true
           required: true
 ## quartz定时任务,采用数据库方式
 quartz:
   job-store-type: jdbc
 #json 时间戳统一转换
 jackson:
   date-format:   yyyy-MM-dd HH:mm:ss
   time-zone:   GMT+8
 aop:
   proxy-target-class: true
 #配置freemarker
 freemarker:
   # 设置模板后缀名
   suffix: .ftl
   # 设置文档类型
   content-type: text/html
   # 设置页面编码格式
   charset: UTF-8
   # 设置页面缓存
   cache: false
   prefer-file-system-access: false
   # 设置ftl文件路径
   template-loader-path:
     - classpath:/templates
 # 设置静态文件路径,js,css等
 mvc:
   static-path-pattern: /**
 resource:
   static-locations: classpath:/static/,classpath:/public/
 autoconfigure:
   exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
 datasource:
   druid:
     stat-view-servlet:
       enabled: true
       loginUsername: admin
       loginPassword: 123456
       allow:
     web-stat-filter:
       enabled: true
   dynamic:
     druid: # 全局druid参数,绝大部分值和默认保持一致。(现已支持的参数如下,不清楚含义不要乱设置)
       # 连接池的配置信息
       # 初始化大小,最小,最大
       initial-size: 5
       min-idle: 5
       maxActive: 20
       # 配置获取连接等待超时的时间
       maxWait: 60000
       # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
       timeBetweenEvictionRunsMillis: 60000
       # 配置一个连接在池中最小生存的时间,单位是毫秒
       minEvictableIdleTimeMillis: 300000
       validationQuery: SELECT 1 FROM DUAL
       testWhileIdle: true
       testOnBorrow: false
       testOnReturn: false
       # 打开PSCache,并且指定每个连接上PSCache的大小
       poolPreparedStatements: true
       maxPoolPreparedStatementPerConnectionSize: 20
       # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
       filters: stat,wall,slf4j
       # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
       connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
     datasource:
       master:
         url: jdbc:mysql://127.0.0.13306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false
         username: root
         password: ??.
         driver-class-name: com.mysql.jdbc.Driver
       # 工作流
       #这是可以采用多数据源  对应 JeecgApplication 启动类中初始化 工作流引擎时使用
       activiti:
         url: jdbc:mysql://127.0.0.1:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false
         username: root
         password: ??
         driverClassName: com.mysql.jdbc.Driver
         type: com.alibaba.druid.pool.DruidDataSource
 #redis 配置
 redis:
   database: 0
   host: 127.0.0.1
   lettuce:
     pool:
       max-active: 8   #最大连接数据库连接数,设 0 为没有限制
       max-idle: 8     #最大等待连接中的数量,设 0 为没有限制
       max-wait: -1ms  #最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。
       min-idle: 0     #最小等待连接中的数量,设 0 为没有限制
     shutdown-timeout: 100ms
   password: ''
   port: 6379
#mybatis plus 设置
mybatis-plus:
 mapper-locations: classpath*:org/jeecg/modules/**/xml/*Mapper.xml
 global-config:
   # 关闭MP3.0自带的banner
   banner: false
   db-config:
     #主键类型  0:"数据库ID自增",1:"该类型为未设置主键类型", 2:"用户输入ID",3:"全局唯一ID (数字类型唯一ID)", 4:"全局唯一ID UUID",5:"字符串全局唯一ID (idWorker 的字符串表示)";
     id-type: 4
     # 默认数据库表下划线命名
     table-underline: true
 configuration:
   # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
   #log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
   # 返回类型为Map,显示null对应的字段
   call-setters-on-nulls: true
#jeecg专用配置
jeecg:
 # 本地:local\Minio:minio\阿里云:alioss
 uploadType: local
 path:
   #文件上传根目录 设置
   upload: D://opt//upFiles
   #webapp文件路径
   webapp: D://opt//webapp
 #短信秘钥
 sms:
   accessKeyId: ??
   accessKeySecret: ??
 shiro:
   excludeUrls: /test/jeecgDemo/demo3,/test/jeecgDemo/redisDemo/**,/service/**
 #阿里云oss存储配置
 oss:
   endpoint: oss-cn-beijing.aliyuncs.com
   accessKey: WegDpuKzOuPK6D3N
   secretKey: ??
   bucketName: jeecgos
   staticDomain: ??
 # ElasticSearch 设置
 elasticsearch:
   cluster-name: docker-cluster
   cluster-nodes: 127.0.0.1:9200
 # 表单设计器配置
 desform:
   # 主题颜色(仅支持 16进制颜色代码)
   theme-color: "#1890ff"
 # 在线预览文件服务器地址配置
 file-view-domain: http://fileview.jeecg.com
 # minio文件上传
 minio:
   minio_url: http://minio.jeecg.com
   minio_name: ??
   minio_pass: ??
   bucketName: ??
#Mybatis输出sql日志
logging:
 level:
   org.jeecg.modules.system.mapper: debug
#cas单点登录
cas:
 prefixUrl: http://cas.example.org:8443/cas

  1. pom文件引入
 
       
           org.activiti
           activiti-modeler
           ${activiti.version}
           
               
                   org.springframework.security
                   spring-security-config
               
               
                   org.springframework.security
                   spring-security-crypto
               
               
                   org.springframework.security
                   spring-security-web
               
           
       

       
           org.activiti
           activiti-json-converter
           ${activiti.version}
       

       
           org.activiti
           activiti-spring
           ${activiti.version}
           
               
                   org.slf4j
                   slf4j-api
               
               
                   org.slf4j
                   slf4j-log4j12
               
           
       

       
           org.activiti
           activiti-engine
           ${activiti.version}
           
               
                   org.slf4j
                   slf4j-api
               
               
                   org.slf4j
                   slf4j-log4j12
               
               
                   org.mybatis
                   mybatis
               
           
       
  1. 前端项目引入画布

     
   
  1. 添加activiti数据源配置类
    jeecg-boot+activiti集成工作流_第1张图片
  2. 对于流程模型的一些操作
    jeecg-boot+activiti集成工作流_第2张图片
    jeecg-boot+activiti集成工作流_第3张图片

内容还是挺多的 (如果在集成过程中有遇到问题请给我留言吧!这里会回复的哦)

觉得太麻烦???## 源码下载

下面给出一下作者在集成过程中踩的坑

  • 资料1
  • 资料2
  • 资料4
  • 资料5

你可能感兴趣的:(jeecg集成)