2025-06-30 09:38:03 +08:00

296 lines
10 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

> 特别说明源码、JDK、数据库、Redis等安装或存放路径禁止包含中文、空格、特殊字符等
## 一 环境要求
### 1.1 开发环境
| 类目 | 版本说明或建议 |
| --- |------------------------|
| 硬件 | 开发电脑建议使用I3及以上CPU16G及以上内存 |
| 操作系统 | Windows 10/11MacOS |
| JDK | 默认使用JDK 21如需要切换JDK 8/11/17版本请参考文档调整代码推荐使用 `OpenJDK`,如 `Liberica JDK``Eclipse Temurin``Alibaba Dragonwell``BiSheng`等发行版;|
| Maven | 依赖管理工具,推荐使用 `3.6.3` 及以上版本 |
| 数据库 | 兼容 `MySQL 5.7.x/8.x``SQLServer 2012+``Oracle 11g``PostgreSQL 12+``达梦数据库(DM8)``人大金仓数据库(KingbaseES_V8R6)` |
| IDE | 代码集成开发环境,推荐使用 `IDEA2024` 及以上版本,兼容 `Eclipse``Spring Tool Suite` 等IDE工具 |
### 1.2 运行环境
> 适用于测试或生产环境
| 类目 | 版本说明或建议 |
| --- |-----------------------------------------------|
| 服务器配置 | 建议至少在 4C/16G/50G的机器配置下运行 |
| 操作系统 | 建议使用 `Windows Server 2019` 及以上版本或主流 `Linux` 发行版本,推荐使用 `Linux` 环境;兼容 `统信UOS``OpenEuler``麒麟服务器版` 等信创环境; |
| JRE | 默认使用JRE 21如需要切换JRE 8、11、17版本请参考文档调整代码推荐使用 `OpenJDK`,如 `Liberica JDK``Eclipse Temurin``Alibaba Dragonwell``BiSheng`等发行版; |
| 数据库 | 兼容 `MySQL 5.7.x/8.x``SQLServer 2012+``Oracle 11g``PostgreSQL 12+``达梦数据库(DM8)``人大金仓数据库(KingbaseES_V8R6)` |
## 二 关联项目
| 项目 | 分支 | 说明 |
|--------------------|---------------|------------|
| jnpf-workflow-core | v1.0.0-stable | 流程引擎基础依赖 |
## 三 Maven私服配置
> Apache Maven 依赖管理工具,推荐使用 `3.6.3` 及以上版本<br>解决以下依赖无法从公共Maven仓库下载的问题
打开Maven安装目录中的 `conf/settings.xml` 文件,<br>
`<servers></servers>` 中添加如下内容
```xml
<server>
<id>maven-releases</id>
<username>jnpf-user</username>
<password>HLrQ0MA%S1nE</password>
</server>
```
`<mirrors></mirrors>` 中添加
```xml
<mirror>
<id>maven-releases</id>
<mirrorOf>*</mirrorOf>
<name>maven-releases</name>
<url>https://repository.jnpfsoft.com/repository/maven-public/</url>
</mirror>
```
## 四 开发环境
### 4.1 导入数据库脚本
> 以 MySQL数据库 为例<br>字符集utf8mb4<br/>排序规则utf8mb4_general_ci
在MySQL创建 `jnpf_flow` 数据库,并将 `jnpf-database/MySQL/jnpf_flow_init.sql` 导入;
### 4.2 导入依赖
详见 `jnpf-workflow-core` 项目中的 `README.md` 文档说明
### 4.3 项目配置
打开编辑 `jnpf-workflow-admin/src/main/resources/application.yml`
#### 4.3.1 指定环境配置
环境说明:
- `application-dev.yml` 开发环境(默认)
- `application-test.yml` 测试环境
- `application-preview.yml` 预发布环境
- `application-prod.yml` 生产环境
> 以开发环境为例,根据实际需求修改
```yaml
# application.yml第 6 行,可选值dev(开发环境-默认)、test(测试环境)、preview(预生产)、prod(生产环境)
active: dev
```
#### 4.3.2 调整运行端口
> 根据实际需求调整
打开编辑 `jnpf-workflow-admin/src/main/resources/application-dev.yml`(第 2 行)
```yaml
port: 31000 # 默认运行端口
```
#### 4.3.3 数据库配置示例
打开编辑 `jnpf-workflow-admin/src/main/resources/application-dev.yml`,修改以下配置
> 注意:
> - 若使用 `Oracle` 或 `达梦` 数据库必需配置模式名称
> - 若使用 `PostgreSQL` 和 `人大金仓KingbaseES` 数据库, 默认public模式无需配置模式名称, 若指定模式需要配置模式名称
> - 若使用 `MySQL` 和 `SQLServer` 无需配置模式名称
##### 4.3.3.1 MySQL数据库
```yaml
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.mysql.cj.jdbc.MysqlDataSource
url: jdbc:mysql://127.0.0.1:3306/jnpf_flow?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&nullCatalogMeansCurrent=true
username: dbuser
password: dbpasswd
```
##### 4.3.3.2 SQLServer数据库
```yaml
spring:
datasource:
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
type: com.microsoft.sqlserver.jdbc.SQLServerDataSource
url: jdbc:sqlserver://127.0.0.1:1433;databaseName=jnpf_flow;trustServerCertificate=true
username: dbuser
password: dbpasswd
```
##### 4.3.3.3 Oracle数据库
> 必需配置模式名称
```yaml
flowable:
database-schema: JNPF_FLOW
spring:
datasource:
driver-class-name: oracle.jdbc.OracleDriver
type: oracle.jdbc.datasource.impl.OracleDataSource
url: jdbc:oracle:thin:@127.0.0.1:1521:ORCL
username: JNPF_FLOW
password: dbpasswd
```
##### 4.3.3.4 PostgreSQL数据库
**若使用默认 `public` 模式**
```yaml
spring:
datasource:
driver-class-name: org.postgresql.Driver
type: org.postgresql.ds.PGSimpleDataSource
url: jdbc:postgresql://127.0.0.1:5432/jnpf_flow
username: dbuser
password: dbpasswd
```
**若使用其他模式**
```yaml
flowable:
database-schema: jnpf_flow
spring:
datasource:
driver-class-name: org.postgresql.Driver
type: org.postgresql.ds.PGSimpleDataSource
url: jdbc:postgresql://127.0.0.1:5432/jnpf_flow
username: dbuser
password: dbpasswd
```
##### 4.3.3.5 达梦dm8数据库
> 必需配置模式名称,连接后面需要添加参数 ?compatibleMode=oracle
```yaml
flowable:
database-schema: JNPF_FLOW
spring:
datasource:
driver-class-name: dm.jdbc.driver.DmDriver
type: dm.jdbc.driver.DmdbDataSource
url: jdbc:dm://127.0.0.1:5236/JNPF_FLOW?compatibleMode=oracle
username: dbuser
password: dbpasswd
```
##### 4.3.3.6 人大金仓KingbaseES数据库
**若使用默认 `public` 模式**
```yaml
spring:
datasource:
driver-class-name: org.postgresql.Driver
type: org.postgresql.ds.PGSimpleDataSource
url: jdbc:postgresql://127.0.0.1:5432/jnpf_flow
username: dbuser
password: dbpasswd
```
**若使用其他模式**
```yaml
flowable:
database-schema: jnpf_flow
spring:
datasource:
driver-class-name: org.postgresql.Driver
type: org.postgresql.ds.PGSimpleDataSource
url: jdbc:postgresql://127.0.0.1:5432/jnpf_flow
username: dbuser
password: dbpasswd
```
### 4.4 执行调试或运行
#### 4.4.1 `jnpf-workflow-core` 项目未使用加密
- 在IDEA中, 展开右侧 `Maven``Profiles` 去除勾选 `encrypted` 选项, 再点击 Maven `刷新` 图标刷新Maven
- 找到 `jnpf-workflow-admin/src/main/java/jnpf/JnpfFlowableApplication.java`,右击运行即可。
若使用JDK9及以上版本在IDEA中打开 `Edit Configurations` VM启动参数添加如下参数
```bash
--add-opens java.base/java.lang=ALL-UNNAMED
```
#### 4.4.2 `jnpf-workflow-core` 项目使用加密
- 在IDEA中展开右侧 `Maven` 中 `Profiles` 勾选 `encrypted` 选项, 再点击Maven `刷新` 图标刷新Maven
- 在IDEA中双击右侧 `Maven` 中 `jnpf-workflow` > `clean` 将会自动安装加密打包插件, 并创建创建`jnpf-workflow-admin/target/copylib` 复制依赖包用于下一步运行
**参数说明**
```bash
# 打开项目中`jnpf-workflow-admin/target/copylib` 目录, 复制Jar包 `jnpf-workflow-common-版本号.jar` 的文件名
-javaagent:项目存放路径/jnpf-workflow-admin/target/copylib/jnpf-workflow-common-当前版本号.jar(上面复制的文件名)="decryptProjectPathPrefix=jnpf-workflow-common___jnpf-workflow-flowable"
```
- 在IDEA中打开 `Edit Configurations` VM启动参数添加如下参数
若使用 JDK8 运行需要替换下方命令示例中的Jar包路径
``` bash
-XX:+DisableAttachMechanism
-javaagent:D:/Projects/IdeaProjects/jnpf-workflow-boot/jnpf-workflow-admin/target/copylib/jnpf-workflow-common-1.0.0-RELEASE.jar="decryptProjectPathPrefix=jnpf-workflow-common___jnpf-workflow-flowable"
```
若使用JDK 9及以上版本需要替换下方命令示例中的Jar包路径
``` bash
--add-opens java.base/java.lang=ALL-UNNAMED
-XX:+DisableAttachMechanism
-javaagent:D:/Projects/IdeaProjects/jnpf-workflow-boot/jnpf-workflow-admin/target/copylib/jnpf-workflow-common-1.0.0-RELEASE.jar="decryptProjectPathPrefix=jnpf-workflow-common___jnpf-workflow-flowable"
```
### 4.5 专业版用户
> 专业版用户无 `jnpf-workflow-core` 项目
若使用 `JDK 8/11` 开发
- 首先全局搜索 `jakarta.` 批量替换为 `javax.`,
- 在本项目根目录打开 `pom.xml` 文件,注释第 92 行,解除注释第 94 行;
## 五 项目发布
### 5.1 `jnpf-workflow-core` 项目未使用加密
- 在IDEA中, 展开右侧 `Maven` 中 `Profiles` 去除勾选 `encrypted` 选项, 再点击Maven `刷新` 图标刷新Maven
- 在IDEA中双击右侧Maven中 `jnpf-workflow` > `Lifecycle` > `clean` 清理项目
- 在IDEA中双击右侧Maven中 `jnpf-workflow` > `Lifecycle` > `package` 打包项目
- 打开 `jnpf-workflow/jnpf-workflow-admin/target`,将 `jnpf-workflow-admin-1.0.0-RELEASE.jar` 上传至服务器
### 5.2 `jnpf-workflow-core` 项目使用加密
- 在IDEA中, 展开右侧 `Maven` 中 `Profiles` 勾选 `encrypted` 选项, 再点击Maven `刷新` 图标刷新Maven
- 在IDEA中双击右侧 `Maven` > `jnpf-workflow` > `clean` 将会自动安装加密打包插件
- 在IDEA中双击右侧 `Maven` > `jnpf-workflow` > `Lifecycle` > `package` 打包项目
- 打开 `jnpf-workflow/jnpf-workflow-admin/target`,将 `jnpf-workflow-admin-1.0.0-RELEASE.jar` 上传至服务器
- 启动命令
若使用 JDK/JRE 8 运行
```bash
java -javaagent:./jnpf-workflow-admin-1.0.0-RELEASE.jar -XX:+DisableAttachMechanism -jar jnpf-workflow-admin-1.0.0-RELEASE.jar
```
若使用 JDK/JRE 9及以上版本运行
```bash
java -javaagent:./jnpf-workflow-admin-1.0.0-RELEASE.jar --add-opens java.base/java.lang=ALL-UNNAMED -XX:+DisableAttachMechanism -jar jnpf-workflow-admin-1.0.0-RELEASE.jar
```