起步及介绍

willian fu 2022 ~

起步及介绍

下载代码

从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.sql
  • update.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`

这是一个三元表达式,通过判断 process.env.NODE_ENV 的值判断是不是 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

image-20230314103251784

高版本 node > 16 启动报错

Vue2 在 高版本node运行时可能会出现错误:

Error: error:0308010C:digital envelope routines::unsupported
    at new Hash (node:internal/crypto/hash:71:19)
	...........

package.jsonscripts 命令上配置如下选项即可:

// 加上 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数据库

其他建表失败情况也可以直接导表

注意报错的表名是大写还是小写!!!