# 项目介绍

RuoyiFlow (opens new window) 是基于 ​​Ruoyi-Vue分离版​​ 深度集成的 ​​工作流引擎平台​​,无缝兼容 ​​Camunda、Flowable、Activiti​​ 三大引擎,提供 ​​文档+源码+视频​​ 的全方位学习支持,助力开发者快速掌握工作流开发,
并为中小企业提供 ​​OA、ERP、CRM​​ 等场景的开箱即用​​ 解决方案。 我们也提供工作流相关业务定制开发,欢迎咨询!

Ruoyi分离版 (opens new window) Swagger-UI (opens new window)

# 目标用户

✅ ​​面向Java开发者 ​​:正在学习或使用若依(RuoYi)框架的Java开发者
✅ ​​IT从业者 ​​:需要为项目(毕业设计、公司系统、外包项目)快速集成工作流功能的IT从业者
✅ ​​高校计算机专业学生、职业培训机构的老师和学员:需要用ruoyi完成毕设开发或者教学任务

# 联系我们

客服微信 微信公众号 微信小程序
foo foo foo

# 产品信息

RuoyiFlow官网 (opens new window)
B站视频教程 (opens new window)
Ruoyi-Vue2演示地址 (opens new window)
Ruoyi-Vue3演示地址 (opens new window)

# 环境部署

JDK >= 1.8 (推荐1.8版本)
Mysql >= 5.7.0 (推荐5.7版本)
Redis >= 3.0
Maven >= 3.0
Node >= 23

前端安装完node后,最好设置下淘宝的镜像源,不建议使用cnpm(可能会出现奇怪的问题)

# 运行系统

购买RuoyiFlow (opens new window)产品后,通过IDEA和VsCode打开项目, 分别运行前后端项目。

# 后端运行

  1. 构建数据库,新建一个数据库,依次执行sql文件夹下面的脚本quartz.sql和quartz.ry_flow.sql

  2. 在项目启动后,系统会自动创建camunda相关的表结构,以act_开头,至此就完成了数据库的创建。

  3. 修改application.yml中的redis配置

# redis 配置
  redis:
    # 地址
    host: xxxx
    # 端口,默认为6379
    port: 6379
    # 数据库索引
    database: 0
    # 密码
    password: 'xxx'
    # 连接超时时间
    timeout: 10s
  1. application-druid.yaml中的数据地址配置
master:
    url: jdbc:mysql://rm-bp1a466bb62123091co.mysql.rds.aliyuncs.com/ruoyi-3-9-0?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true
    username: xx
    password: xxx@2024
  1. 部署流程模型
1. ruoyi-admin 下resources/processes文件夹下存放着交付的测试模型
2. 登陆系统->模型管理->模型列表,将会自动导入这个文件夹下的流程模型

以上是Camunda项目交付后,后端项目部署流程,Activiti,Flowable也是同样的步骤

# 前端运行

# 进入项目目录
cd ruoyi-ui

# 安装依赖
npm install

# 强烈建议不要用直接使用 cnpm 安装,会有各种诡异的 bug,可以通过重新指定 registry 来解决 npm 安装速度慢的问题。
npm install --registry=https://registry.npmmirror.com

# 本地开发 启动项目
npm run dev

# 线上部署

# 前端

erver {
    server_name demo.ruoyiflow.com
    listen 80;
    gzip on;
    gzip_min_length 1k;
    gzip_comp_level 9;
    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;

    location / {
         root   /home/ruoyi/dist;
         index  index.html index.htm;
         try_files $uri $uri/ /index.html;
    }

    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/;
	}

    # springdoc proxy
    location ~ ^/v3/api-docs/(.*) {
        proxy_pass http://localhost:8080/v3/api-docs/$1;
    }

   

    error_page 404 /404.html;
        location = /40x.html {
    }

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

以上是nginx脚本,用于部署前端, 需要您在自己的服务器安装nginx,并且做好域名的转发, 然后将上面的命令安装即可。

# 后端

#!/bin/bash

# 定义变量,方便维护
APP_NAME="ruoyi-admin"
JAR_PATH="/home/ruoyi/ruoyi-admin.jar"
LOG_DIR="/home/ruoyi/Logs"
PID_FILE="/home/ruoyi/${APP_NAME}.pid"

# 创建日志目录(如果不存在)
mkdir -p ${LOG_DIR}

# 检查JAR文件是否存在
if [ ! -f "${JAR_PATH}" ]; then
    echo "Error: JAR file not found at ${JAR_PATH}"
    exit 1
fi

# 停止进程的函数
stop_application() {
    # 尝试多种方式获取PID:先查进程,再看pid文件
    local pid=$(ps -ef | grep "${JAR_PATH}" | grep -v grep | awk '{print $2}')
    if [ -f "${PID_FILE}" ]; then
        local pid_from_file=$(cat "${PID_FILE}")
        if [ -n "${pid_from_file}" ]; then
            pid="${pid_from_file}"
        fi
    fi

    if [ -n "$pid" ]; then
        echo "Stopping ${APP_NAME} with PID $pid..."
        # 先尝试优雅终止(SIGTERM, signal 15)
        kill -15 $pid
        sleep 5
        # 如果进程仍在,则强制杀死(SIGKILL, signal 9)
        if ps -p $pid > /dev/null 2>&1; then
            echo "Process did not stop gracefully, forcing kill..."
            kill -9 $pid
        else
            echo "${APP_NAME} stopped successfully."
        fi
        # 删除pid文件
        rm -f "${PID_FILE}"
    else
        echo "${APP_NAME} is not running."
    fi
}

# 启动进程的函数
start_application() {
    echo "Starting ${APP_NAME}..."
    nohup java \
    -Xms512m \
    -Xmx1024m \
    -XX:MetaspaceSize=256m \
    -XX:+UseG1GC \
    -XX:MaxGCPauseMillis=200 \
    -XX:InitiatingHeapOccupancyPercent=45 \
    -XX:+PrintGCDetails \
    -XX:+PrintGCDateStamps \
    -Xloggc:${LOG_DIR}/gc-%t.log \
    -XX:+HeapDumpOnOutOfMemoryError \
    -XX:HeapDumpPath=${LOG_DIR}/oom_error.hprof \
    -XX:ErrorFile=${LOG_DIR}/hs_err_pid%p.log \
    -jar ${JAR_PATH} > ${LOG_DIR}/ruoyi.log 2>&1 &

    # 获取新进程的PID并写入文件
    local new_pid=$!
    echo $new_pid > ${PID_FILE}
    echo "${APP_NAME} started with PID $new_pid"
    echo "Log output: ${LOG_DIR}/ruoyi.log"
}

# 主执行逻辑
stop_application
sleep 2  # 等待一下确保进程完全停止
start_application

以上是boot项目的部署脚本, 需要您现在服务器上安装jdk8!

# 我们的优势

✔ ​​比开源更易用​​:降低90%的配置成本,新手也能快速上手

✔ ​​比商业软件更灵活​​:支持多引擎切换,避免厂商锁定

✔ ​​全栈解决方案​​:从设计到运维,覆盖企业级流程开发全流程

✔ 技术答疑:提供售后会员服务,解决您工作流相关问题