RuoYi-flowable工作流管理

54 篇文章 1 订阅

上周有网友留言需要工作流相关的系统,今天介绍的这个就支持自定义的表单,可能未必是他想要的,但也许有其他人需要呢?反正都已经折腾完了??

老苏已经尽量简化了安装,你只要下载一个 zip 文件,上传到群晖并解压,再执行一条命令就可以完成全部的安装,中途不需要修改任何东西,应该够简单了吧??

什么是 RuoYi-flowable ?

RuoYi-flowable 是基 RuoYi-vue 4.x + flowable 6.5 开发的工作流管理软件。

  • 前端采用 VueElement UI
  • 后端采用 Spring BootSpring SecurityRedis & Jwt
  • 权限认证使用 Jwt,支持多终端认证系统。
  • 支持加载动态权限菜单,多方式轻松权限控制。
  • 高效率开发,使用代码生成器可以一键生成前后端代码。

官方提供了演示地址:http://139.155.16.243/

什么是 RuoYi-Vue ?

RuoYi-Vue 是基于 SpringBootSpring SecurityJwtVue 的前后端分离的后台管理系统。

感觉国内有不少系统是基于这套框架二次开发的

什么是 Flowable

Flowable 是面向开发人员、系统管理员和业务用户的紧凑高效的工作流和业务流程管理 ( BPM ) 平台。是用 Java 编写的闪电般快速、久经考验的 BPMN 2 流程引擎。

构建镜像

如果你不想自己构建,可以跳过,直接阅读下一章节

这个镜像在构建时遇到几个坑,简单做个记录:

  • 前端用到了 node-sassnode-gyp 之类的,node 版本高于 12 会编不过

  • 后端用到了已经删除的 com.sun.prism.paint,会导致 ruoyi-flowable 编译失败,需修改 /root/RuoYi-flowable/ruoyi-flowable/src/main/java/com/ruoyi/flowable/config/MyDefaultProcessDiagramCanvas.java ,将 import com.sun.prism.paint.Color; 注释掉

不然编译的时候 ruoyi-flowable 模块会 build 失败

[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ ruoyi-flowable ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 38 source files to /ruoyi-flowable/target/classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] /ruoyi-flowable/src/main/java/com/ruoyi/flowable/config/MyDefaultProcessDiagramCanvas.java:[3,27] package com.sun.prism.paint does not exist
[INFO] 1 error

编译成功是全部都显示 SUCCESS

至于注释后会有什么影响,老苏毕竟不是程序员,也没有太多的精力去测试、验证,所以没法确定,毕竟只是体验用的,你非要放生产环境我也没办法??♀??♀??♀

如果正好您是 Java 程序员,请指正一下??

# 前端构建
#FROM node:16.5 as build-front
FROM node:12 as build-front
LABEL maintainer=laosu<wbsu2003@gmail.com>

WORKDIR /app
COPY /ruoyi-ui/package.json ./
RUN npm install --registry=https://registry.npm.taobao.org
COPY /ruoyi-ui/. ./
RUN npm run build:prod

# 后端构建
FROM maven:3.6.0-jdk-11-slim AS build_end
COPY . ./
RUN mvn clean package -Dmaven.test.skip=true

# 整体打包
FROM openjdk:11-jre-slim
RUN sed -i s@/deb.debian.org/@/mirrors.aliyun.com/@g /etc/apt/sources.list 
&& apt-get clean 
&& apt-get update 
&& apt-get install -y supervisor nginx
	
## nginx
COPY --from=build_end ./nginx.conf /etc/nginx/nginx.conf

## supervisor
COPY --from=build_end ./supervisord.conf /etc/supervisord.conf

## 前端静态文件	
COPY --from=build-front /app/dist/ /usr/share/nginx/html

## 后端jar包
COPY --from=build_end /ruoyi-admin/target/ruoyi-admin.jar /usr/local/lib/ruoyi-admin.jar

EXPOSE 80

ENTRYPOINT ["supervisord","-c","/etc/supervisord.conf"]

nginx 设置文件 nginx.conf 用的是 RuoYi 官方的,老苏就改了 root 的路径

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;
		charset utf-8;

		location / {
            root   /usr/share/nginx/html;
			try_files $uri $uri/ /index.html;
            index  index.html index.htm;
        }
		
		location /prod-api/ {
			proxy_set_header Host $http_host;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header REMOTE-HOST $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_pass http://localhost:8080/;
		}

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

supervisord.conf 文件是新增用来控制进程的,前端是运行在 nginx 上的静态页面,后端 ruoyi-admin.jar 基于 jar

[include]  
files = /etc/supervisor/conf.d/*.conf

[program:frontend]
priority=2
command=nginx -g "daemon off;"
autostart=true
autorestart=true
startretries=3
startsecs=1
user=root

[program:backend]
priority=1
directory=/usr/local/lib/
command=java -jar ruoyi-admin.jar
autostart=true
autorestart=true
startretries=3
startsecs=1
user=root
  
[supervisord]
nodaemon=true
logfile=/tmp/supervisord.log
pidfile=/tmp/supervisord.pid
loglevel=debug
logfile_maxbytes=10MB

[supervisorctl]

docker-compose.yaml 是用来一键启动的,和构建无关

version: '3.6'
services:
  flow-app:
    container_name: flow-app
    environment:
      - SPRING_DATASOURCE_DRUID_MASTER_URL=$SPRING_DATASOURCE_URL
      - SPRING_DATASOURCE_DRUID_MASTER_USERNAME=$MYSQL_ROOT_NAME
      - SPRING_DATASOURCE_DRUID_MASTER_PASSWORD=$MYSQL_ROOT_PASSWORD
      - SPRING_REDIS_DATABASE=0
      - SPRING_REDIS_HOST=$REDIS_HOST
      - SPRING_REDIS_PORT=$REDIS_PORT
      - SPRING_REDIS_PASSWORD=$REDIS_PASSWORD
      - RUOYI_PROFILE=/home/ruoyi/uploadPath
    image: "wbsu2003/flowable:v1"
    ports:
      - 12880:80
    restart: always

  flow-redis:
    container_name: flow-redis
    image: redis:6.2.1
    ports:
      - 12888:6379
    volumes:
      - redis_data:/data

  flow-mysql:
    container_name: flow-mysql
    image: mysql:8
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD
      - MYSQL_DATABASE=$MYSQL_DATABASE
    ports:
      - 12806:3306
    volumes:
      - mysql_data:/var/lib/mysql
      - ./sql:/docker-entrypoint-initdb.d:ro
    command: 
      --default-authentication-plugin=mysql_native_password
      --lower_case_table_names=1

volumes:
  mysql_data:
  nginx_log:
  redis_data:

.env 文件只配置了 mysqlredis

MYSQL_DATABASE=flowable
MYSQL_ROOT_NAME=root
MYSQL_ROOT_PASSWORD=flowable
SPRING_DATASOURCE_URL=jdbc:p6spy:mysql://192.168.0.197:12806/flowable?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
REDIS_HOST=flow-redis
REDIS_PASSWORD=
REDIS_PORT=6379

构建镜像和容器运行的基本命令如下??

# 拉取源代码代码
git clone https://gitee.com/tony2y/RuoYi-flowable.git

# 进入代码目录
cd RuoYi-flowable

# 将 Dockerfile 、supervisord.conf、nginx.conf 三个文件放进 RuoYi-flowable 目录中

# 修改 ruoyi-ui/.env.production,启用 VUE_APP_BASE_API = '/prod-api'

# 修改 /root/RuoYi-flowable/ruoyi-flowable/src/main/java/com/ruoyi/flowable/config/MyDefaultProcessDiagramCanvas.java ,将 import com.sun.prism.paint.Color;  注释掉

# 构建镜像
docker build -t wbsu2003/flowable:v1 .

# 将 docker-compose.yaml 、.env 两个文件放进 RuoYi-flowable 目录中

# 一键启动
docker-compose up -d

# 一键停止
docker-compose stop

# 一键重启
docker-compose restart

# 一键删除
docker-compose down

安装运行

__MACOSXflowable.zip 可以删掉,不删也无所谓的

老苏尽量将端口改成了一般软件可能不会用到的端口,这样大家就不需要处理 docker-compose.yaml 文件了,而 .env 里全部用了容器名称,所以也不需要进行修改

老苏一般会把 .env 先重命名为 .env.txt,编辑完之后再改回 .env

接下来就可以用 SSH 客户端登录到群晖,在 flowable 目录中执行一键启动

老苏常用的SSH 客户端主要是 FinalshellPuTTY

# 进入 docker 目录
cd /volume2/docker/flowable

# 一键启动
docker-compose up -d

第一次执行会有拉取镜像的动作

如果你最终看到 3 个容器都是 done ,表示创建成功!

docker 容器中能看到??下面 3 个容器正在运行,开始资源占用还是有点高的

flow-app 的日志中开始会看到??下面的内容,表示服务已经开始启动了

但只有看到下面??这个才表示服务启动成功了

只要容器不会停止,中间的报错信息可以不用理会

前后差不多用了 3 分多钟,启动成功后资源占用会下降

如果你没修改端口,在浏览器中输入 http://群晖IP:12880,会先看到资源加载

接下来就能看到登录界面

默认的账号:tony,密码:123456,系统自动已经填好了

如果看到下面这种错误或者验证码不出来,说明服务还没完成正常启动,而日志中的错误应该是数据库尚未初始化完成

登录成功后的主界面

至于怎么使用,老苏没有头绪,只知道可以配置表单

也可以设计流程

建议去看官方的文档,或者直接去加作者的 QQ

参考文档

RuoYi-flowable: 基RuoYi-vue + flowable 6.5 的工作流管理 ~
地址:https://gitee.com/tony2y/RuoYi-flowable

flowable · 语雀
地址:https://www.yuque.com/u1024153/icipor

环境部署 | RuoYi
地址:http://doc.ruoyi.vip/ruoyi-vue/document/hjbs.html

关于java: package sun.misc does not exist问题的解决方案_CHINA_CNN的博客-CSDN博客
地址:https://blog.csdn.net/CHINA_CNN/article/details/108894471

Fatal Error: Unable to find package java.lang in classpath or bootclasspath - 代码先锋网
地址:https://www.codeleading.com/article/78565102295/

Ruoyi-Flowable-Plus是一个功能强大且灵活的后台管理系统。它基于Ruoyi-Cloud微服务架构和Flowable工作流引擎开发,提供了全面而且高效的管理解决方案。 1. 功能强大:Ruoyi-Flowable-Plus集成了众多的功能模块,如用户管理、角色管理、部门管理、菜单管理等,它们可以帮助管理员轻松管理后台系统。此外,还包括用户权限管理、系统配置管理、日志管理和定时任务管理等,能够满足不同管理需求。 2. 灵活的流程管理:通过整合Flowable工作流引擎,Ruoyi-Flowable-Plus可以轻松地创建、设计和管理各种业务流程。管理员可以使用可视化的流程设计器来创建和编辑流程,同时可以监控流程实例和执行情况。这个功能非常有助于提高工作效率和流程管理。 3. 可扩展性:Ruoyi-Flowable-Plus采用了微服务架构,每个功能模块都可以独立发布和部署。这使得系统具有良好的可扩展性,可以根据实际需求进行定制和扩展。同时,它还支持与其他系统的集成,例如第三方支付和短信接口等。 4. 易用性:Ruoyi-Flowable-Plus提供了简洁、直观的用户界面,使管理员能够轻松上手和使用系统。同时,它还提供了丰富的文档和教程,方便用户学习和了解系统的使用方法。 综上所述,Ruoyi-Flowable-Plus后台管理系统在功能和灵活性方面表现突出,可以帮助管理员高效地管理系统,提高工作效率。同时,其可扩展性和易用性也使得它成为一个主流的选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值