起步及介绍
起步及介绍
下载代码
从github私有仓库获取源码,pro用户请联系自家企业负责购买wflow-pro的联系人获取,前后端在不同仓库
项目结构介绍
前端
├─api --与后端交互的接口
├─assets --静态资源
│ ├─iconfont
│ ├─image
│ └─theme
│ └─fonts
├─components --公共组件
│ └─common
├─router --路由
├─store --Vuex
├─utils --辅助js
└─views --页面组件
├─admin --表单流程设计器
│ └─layout
│ ├─form --表单
│ ├─print --打印模板
│ └─process --流程
├─common --一些公共组件
│ ├─form --表单
│ │ ├─components --表单组件库的组件
│ │ └─config --表单组件库组件的配置面板
│ └─process --流程
│ ├─config --流程节点组件的配置面板
│ └─nodes --流程节点组件
├─process --流程步骤进度渲染组件
│ └─node
└─workspace --工作区
├─approval --审批处理相关组件
├─my --个人中心
└─oa --工作区的几个页面,我发起的、关于我的、带我处理。。。。
后端
后端为springboot + mybatis标准项目格式
└─com
└─wflow
├─bean -辅助业务实体类及dao层相关
│ ├─do_
│ ├─entity
│ └─vo
├─config -项目配置类相关
├─controller -普通crud接口
├─exception -异常处理相关
├─mapper -mapper接口
├─service -普通crud服务
│ └─impl
├─utils -普通工具类
└─workflow -流程处理相关业务
├─bean -流程相关实体类
│ ├─dto
│ ├─process
│ │ ├─enums
│ │ ├─form
│ │ └─props
│ └─vo
├─config -流程服务配置
├─controller -流程服务接口层
├─extension -流程引擎扩展
│ └─cmd
├─service -流程服务
│ └─impl
├─task -任务相关
└─utils -流程服务相关工具类
启动后端
1、安装数据库
安装mysql5.7 + 的版本,其他低版本未测试过
如果是postgreSql,请自行修改初始化sql的建表语句,其他类型数据库支持暂时未知,理论上可以支持。
2、导入初始化sql脚本
后端sql目录下有三个脚本:
wflow_init.sql创建wflow自定义表flowable_init.sqlupdate.sql版本升级需要执行,如果直接用的是最新版则忽略
正常情况只需要导入后端sql目录下的 wflow_init.sql 初始化数据表,流程引擎相关表在启动项目时候会自动创建,如果创建失败请手动导入flowable_init.sql
3、启动项目
从github上下载源码,使用开发工具打开项目,注意设置JDK版本为1.8
配置项目的配置文件,这里需要配置自己的数据库的连接信息,注意配置文件有3个
application.yml用来配置选择使用下面两个环境的哪一个配置application-dev.yml开发环境配置application-prd.yml生产环境配置
修改 application.yml ,将配置从 prd 切换到 dev
注意: 本项目用到了发邮件的功能(流程设计里面触发器节点),引入了spring-mail,启动的时候没有检查邮箱配置是否正确,如需邮箱请自行百度对应邮箱服务的配置
management:
health:
mail:
#关闭邮箱配置健康检查
enabled: false
spring:
mail:
host: smtp.qq.com #邮箱服务地址,这里示例qq邮箱
username: 邮箱号
password: 邮箱密码
protocol: smtps
default-encoding: UTF-8
properties:
default-encoding: utf-8
mail:
smtp:
port: 465 #邮箱端口
auth: true
starttls:
enable: true
required: true
配置好后从 AppStater类 启动项目即可😃
启动前端
1、安装 node.js
版本 > 16
2、安装依赖及启动
# 安装依赖
npm install
# Vue2版本
npm run serve
# Vue3版本
npm run dev
根据控制台上输出的地址在浏览器中访问系统,建议chrome / edge
3、修改API接口请求地址
默认的请求地址可能为wflow演示系统地址,启动前检查下,将其改为自己的地址
api接口地址配置在 src/utils/Injection.js 的如下内容
// 请求地址 = 是否为开发环境 ? 开发环境地址 : 发布环境地址
// Vue2
Vue.prototype.BASE_URL = `http://${process.env.NODE_ENV === 'development' ? "localhost" : "106.13.16.28"}:10000`;
// Vue3
window.$vueApp.config.globalProperties.BASE_URL = `http://${process.env.NODE_ENV === 'dev' ? 'localhost' : '106.13.16.28'}:10000`
这是一个三元表达式,通过判断 p 的值判断是不是 dev / development 来决定接口地址的值,可自行配置指向自己的后端地址
编译部署
前端
安装nginx,然后进入前端项目目录下执行 npm run build ,等待执行结束后会多出一个build文件夹,将其放到nginx下面即可
后端
安装配置jdk1.8 ,在本地开发工具上使用maven的package命令打jar包,然后将其上传到要部署的机器上,执行 java -jar wflow-server-pro.jar 即可启动,注意配置文件 application.yml 要切换到prd 环境,
可能出现的问题及处理
接口token 报错
首次打开系统会提示选择人员进行登录,后续不会进行提示,后端的token是有时效的,并且缓存在内存中,会失效,如果报 token相关错误请重新切换人员进行登录。
relpaceAll is not a function
控制台报错 relpaceAll is not a function ,这是由于浏览器版本太低,String.prototype.replaceAll() 方法是在ES2021/ES12中被加入的,如果不想更新浏览器的话,将系统内所有使用到 replaceAll 函数的地方都替换为 replace 函数
const str = 'foo-bar';
// ES12+
const result2 = str.replaceAll('foo', 'moo');
// 旧版,正则注意加上 /g,全部替换
const result1 = str.replace(/foo/g, 'moo');
// output: 'moo-bar'
console.log(result1);
console.log(result2);
系统乱码问题
如果系统出现乱码,请按照如下方式进行检查
1、确认pom.xml中项目编码相关信息都设置为utf-8
2、确认application-xxx.yml 配置文件请求tomcat相关配置为utf-8
3、确认数据库编码为 utf8-mb4
4、确认数据库连接url配置加上了编码为utf-8参数
5、📢 确认jdk编码为utf-8,本项在windows上可能会出现(感谢用户 顾 提供的以下方案)
检查本地JDK编码配置,运行java代码
OutputStreamWriter writer = new OutputStreamWriter(new ByteArrayOutputStream());
System.out.prinln("默认Charset:" + writer.getEncoding());
System.out.prinln("默认file.encoding:" + System.getProperty("file.encoding"));
输出应当为 UTF-8,不是则添加环境变量进行配置
变量名: JAVA_TOOL_OPTIONS, 变量值:-Dfile.encoding=UTF-8

高版本 node > 16 启动报错
Vue2 在 高版本node运行时可能会出现错误:
Error: error:0308010C:digital envelope routines::unsupported
at new Hash (node:internal/crypto/hash:71:19)
...........
在 package.json 的 scripts 命令上配置如下选项即可:
// 加上 SET NODE_OPTIONS=--openssl-legacy-provider
"server": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve",
flowable建表失败
mysql-jdbc 驱动在8+情况下,flowable自动建表会失败,请手动导入后端 sql/flowable.sql 脚本初始化flowable数据库
其他建表失败情况也可以直接导表
注意报错的表名是大写还是小写!!!
