# JeecgBoot集成步骤
JeecgBoot任何版本都可以按照如下方式进行集成
# 新增jeecg-module-activiti
第一个目标就是在JeecgBoot项目下,新建一个模块jeecg-module-activiti,专门管理流程引擎相关代码。 在IDEA中选中项目,右键点击:New->Module,直接点击Next,创建名称为jeecg-module-activiti的模块。
接下来请按照如下步骤,逐步完成所有的配置。
- 在项目的父pom.xml下载新增如下依赖,注意是在:dependencyManagement标签里面
<dependencyManagement>
<dependencies>
<!--以下是所需的依赖文件-->
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter</artifactId>
<version>7.0.0.Beta2</version>
<exclusions>
<exclusion>
<!-- 重点坑,不排除mybatis的话,在启动项目时会报错mybatisplus缺少类 -->
<artifactId>mybatis</artifactId>
<groupId>org.mybatis</groupId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
</dependencyManagement>
- 配置jeecg-module-activiti相关的依赖
<dependency>
<groupId>org.jeecgframework.boot</groupId>
<artifactId>jeecg-boot-base-core</artifactId>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<artifactId>mybatis</artifactId>
<groupId>org.mybatis</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.jeecgframework.boot</groupId>
<artifactId>jeecg-system-local-api</artifactId>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.3.8</version>
</dependency>
- 在application-dev.yml, application-test.yml, application-prod.yml添加activiti配置
spring:
activiti:
#1.flase:默认值。activiti在启动时,对比数据库表中保存的版本,如果没有表或者版本不匹配,将抛出异常
#2.true: activiti会对数据库中所有表进行更新操作。如果表不存在,则自动创建
#3.create_drop: 在activiti启动时创建表,在关闭时删除表(必须手动关闭引擎,才能删除表)
#4.drop-create: 在activiti启动时删除原来的旧表,然后在创建新表(不需要手动关闭引擎)
database-schema-update: true
# 检测历史信息表是否存在,activiti7默认不生成历史信息表,开启历史表
db-history-used: true
# 历史记录存储等级
history-level: full
check-process-definitions: true
async-executor-activate: true
async-executor-enabled: true
- 修改mysql配置信息,在url尾部追加nullCatalogMeansCurrent=true
datasource:
master:
url: jdbc:mysql://xx?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
username: xx
password: xx
driver-class-name: com.mysql.cj.jdbc.Driver
//需要在尾部追加: &nullCatalogMeansCurrent=true
//如果不追加, 可能会出现cause: java.sql.SQLSyntaxErrorException: Table 'act_ge_property' doesn't exist
- Security 安全框架排除掉
@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class, SecurityAutoConfiguration.class,
SecurityAutoConfiguration.class,
ManagementWebSecurityAutoConfiguration.class})
public class JeecgSystemApplication
{
public static void main(String[] args)
{
SpringApplication.run(OAApplication.class, args);
System.out.println("启动成功~");
}
}
上面排除 Security 安全框架的操作对于 Activiti 7.1.0.M6 这个版本是没用的,
因为这个版本的代码强引用了 SpringSecurity 里的内容,
比如在 Activiti 的 SpringBoot 配置类中,强引用 UserDetailsService,
没有这个就会报错,所以我们还需要把版本降到7.1.0.M4及以下。
- 配置SwaggerConfig
@Bean
public Docket activitiApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo()).groupName("Activiti模块")
.select()
//此包路径下的类,才生成接口文档
.apis(RequestHandlerSelectors.basePackage("org.jeecg.modules.activiti"))
//加了ApiOperation注解的类,才生成接口文档
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
.paths(PathSelectors.any())
.build()
.securitySchemes(Collections.singletonList(securityScheme()));
//.globalOperationParameters(setHeaderToken());
}
这一步配置是可以在swagger接口文档中单独生成一个菜单用于管理activiti工作流相关的接口
- 将jeecg-module-activiti模块集成到system中
在jeecg-module-system->jeecg-system-start的pom.xml新增jeecg-module-activiti
<dependencies>
<dependency>
<groupId>org.jeecgframework.boot</groupId>
<artifactId>jeecg-module-activiti</artifactId>
<version>${jeecgboot.version}</version>
</dependency>
</dependencies>
这一步很关键,配置了才能在swagger文档中显示activiti工作流相关接口
完成上述模块集成的配置,便可将代码包覆盖现有的jeecg-module-activiti模块当中。
集成成功之后的项目结构如下:
完成上述步骤,请重启IDEA,然后运行项目即可。
请检查数据库是否生成act_前缀的相关表
检查Swagger是否正常生成Activiti模块,如下图:
# JeecgVue集成步骤
# 集成Bpmn-Js
- 第一步,找到交付于您的Bpmn-Js.md,按照步骤在自己项目安装相应依赖
非常关键一个步骤!!!
# 注册a-timeline时间线组件
该组件用于显示审批时间线,JeecgBoot开源版本代码没有注册,需要我们手动注册。
定位到: src/commponents/registerGlobComp.ts
import type { App } from 'vue';
import { Icon } from './Icon';
import AIcon from '/@/components/jeecg/AIcon.vue';
//Tinymce富文本
import Editor from '/@/components/Tinymce/src/Editor.vue';
import { Button, JUploadButton } from './Button';
// 按需注册antd的组件
import {
Button as AntButton,
Select,
//TODO: 省去其他的组件,在末尾添加时间线组件
Timeline,
} from 'ant-design-vue';
const compList = [AntButton.Group, Icon, AIcon, JUploadButton];
import DragEngine from '@qiaoqiaoyun/drag-free';
import('@qiaoqiaoyun/drag-free/lib/index.css');
export function registerGlobComp(app: App) {
compList.forEach((comp) => {
app.component(comp.name || comp.displayName, comp);
});
app.component(Editor.name, Editor);
app
.use(Select)
//TODO: 省去其他的组件,在末尾添加时间线组件
.use(Timeline);
console.log("注册antd组件完成!");
}
TODO处的代码,需要大家手动进行添加。 真实的文件内容已经注册了antd-vue很多的组件。
这里为显示方便都去掉, 我们只做添加不删除。注意!!!
# 集成自定义组件库
JeecgFlow提供了一个工作流相关的组件库,请将Custom文件夹添加到src/components文件夹下
以上组件JeecgFlow自研的流程高亮相关组件库
# 集成业务相关代码
请将交付于您activiti文件夹添加到src/views文件夹下
后台主要根据这个文件夹进行菜单配置
# Bpmn-Js汉化
Bpmn-Js汉化教程 (opens new window)
# 构建项目运行环境
# 初始化数据库
找到JeecgBoot项目下的db文件夹,并且找到jeecgboot-mysql-5.7.sql脚本文件。
在自己的数据库环境创建一个新的数据库,Character Set: utf8mb4_general_ci,Collation: utf8mb4_general_ci
执行上述脚本,完成数据库的初始化。
注意: 流程引擎的相关表是应用启动后自动生成,以act_开头。并且mysql版本必须5.7+
# 修改MySql配置信息
目标文件: application-dev.yml,application-prod.yml,application-test.yml中的mysql进行配置
datasource:
master:
url: your-database?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
username: your-database-name
password: your-database-password
driver-class-name: com.mysql.cj.jdbc.Driver
# 修改Redis配置信息
目标文件: application-dev.yml,application-prod.yml,application-test.yml中的mysql进行配置
redis:
database: 0
host: your-redis-address
password: 'your-redis-password'
port: 6379
# 修改OSS配置信息
目标文件: application-dev.yml,application-prod.yml,application-test.yml中的mysql进行配置
oss:
endpoint: xx
accessKey: xx
secretKey: xx
bucketName: markkkkdkd
staticDomain: https://markkkkdkd.oss-cn-beijing.aliyuncs.com
官方目前是采用阿里云OSS, 如果您是使用七牛云或其他,请查询相关资料进行解决。
# 菜单配置
使用admin登陆系统后台,参照Activiti演示站 (opens new window)菜单配置,完成自己项目菜单配置。
如果您不知道admin账号,请到数据库找到sys_user表,将admin数据的slat=RCGTeGiH, password=5d80e0db286cd24c。这样操作可以将密码改成=admin2024
将标红区域的菜单都进行配置,注意是参考Activiti演示站。
(上图中路径是Camunda演示站截图,不要照抄)
# 角色配置
使用admin登陆系统后台,参照Activiti演示站 (opens new window)菜单配置,完成自己项目角色配置。
创建标红框的三种角色,并操作授权按钮,将角色与菜单绑定!!!
# 用户配置
使用admin登陆系统后台,参照Activiti演示站 (opens new window)菜单配置,完成自己项目用户配置。
创建标红框的用户信息,并且给每一个用户绑定一个角色
# 导出模型
在这我们以请假流程为例进行讲解,使用admin登陆系统后台,使用关羽账号登陆Activiti演示站 (opens new window) 在模型管理下找到请假案例,点击右侧更多->设计。也可以直接下载以下三个模型进行快速导入
请假流程 (opens new window)
串行会签 (opens new window)
并行会签 (opens new window)
# 导入模型
将上一个步骤导出的模型,在您自己的项目的模型管理页面点击导入模型。即可完成模型部署。
# 发起流程
完成上述操作, 便可以在请假案例菜单中,发起流程进行审批啦
官网的案例会不断增多,每一个流程案例我们会单独开一个菜单.
如果您想迁移到自己项目,操作步骤一样