Commit 20eff24e authored by 祁新's avatar 祁新

Merge branch 'develop' of http://gitlab.dev.shxrtech.com/doc/ldp-docs into develop

parents 0ff6ea21 16a8d0c1
...@@ -20,11 +20,44 @@ ...@@ -20,11 +20,44 @@
6. uaa资料库拷贝对应认证域的模板 6. uaa资料库拷贝对应认证域的模板
更多详情可参照升级说明文档:[LDP框架升级参考文档.md](安装文档/LDP框架升级参考文档.md)
## 2021-07-16
版本号: **1.2.45**
## 2021-09-07
**bpm-service**
版本:**1.0.28**
`feat`:
1. 节点添加相同审批人跳过配置
2. 节点添加默认抄送人配置
3. 节点监听器添加默认监听器
4. 流程定义回调增加已阅回调
5. 流程定义回调增加任务回调
### 本次更新方式
1. 替换ldp-manage/fatjar 目录下对应bpm的jar包
2. 替换nginx中bpm的前端代码
- 流程系统配置操作参考文档:[流程系统操作说明.md](流程系统集成/流程系统操作说明.md) 第1.1.4、1.1.5、1.1.6小节
## 2021-07-19
版本号: **1.2.47**
**base-service** **base-service**
...@@ -32,6 +65,7 @@ ...@@ -32,6 +65,7 @@
1. 新版自动填充注解、默认填充方法 1. 新版自动填充注解、默认填充方法
2. HqlWhereHelper支持多级条件查询 2. HqlWhereHelper支持多级条件查询
3. storage接口部分实现下载功能、删除(minio)
`fix` `fix`
...@@ -79,7 +113,7 @@ ...@@ -79,7 +113,7 @@
**bpm-service** **bpm-service**
版本:**1.0.22** 版本:**1.0.24**
`Fix` `Fix`
...@@ -91,17 +125,14 @@ ...@@ -91,17 +125,14 @@
1. 替换ldp-manage/fatjar 目录下对应的jar包 1. 替换ldp-manage/fatjar 目录下对应的jar包
2. 替换nginx中mcs、bpm的前端代码 2. 替换nginx中mcs、bpm的前端代码
3. 脚手架更新到`1.2.45` 3. 脚手架更新到`1.2.47`
- 下载gen-service配置文件:[gen-service配置文件](http://devdown.shxrtech.com/nacos_config_genservice_2021-07-15.zip),并导入Nacos。 - 下载gen-service配置文件:[gen-service配置文件](http://devdown.shxrtech.com/nacos_config_genservice_2021-07-15.zip),并导入Nacos。
- 新建sinra-ldp-generator数据库,并在Nacos修改`gen-service-dev.yml``gen-service-prod.yml` 数据库连接配置及redis配置
修改`gen-service-dev.yml``gen-service-prod.yml` 数据库连接配置及redis配置 - 新版代码生成使用说明文档:[LDP代码生成功能操作说明v2.0.docx](操作文档/LDP代码生成功能操作说明v2.0.docx)
- 新版hibernate自动填充文档:[LDP框架自定义注解.md](开发文档/LDP框架自定义注解.md) 第一章
- 新版代码生成使用说明文档:
- 新版hibernate自动填充文档:
......
# LDP框架升级参考文档
此文档为框架升级一份参考文档,根据情况判断升级时需要做哪些操作。
## 一、升级前准备工作
升级前,请先打开chanlog文档:[LDP框架ChangeLog&升级方式.md](../LDP框架ChangeLog&升级方式.md)
### 1.1、关闭服务
```shell
# 关闭主要的服务
./ldp-boot.sh stop
# 关闭bpm服务
./bpm-boot.sh stop
# 关闭报表服务
./report-boot.sh stop
```
### 1.2、 备份DB
虽然一般升级不会对已有的数据造成影响,但是建议先备份一份数据。
### 1.2、 UAA资源库备份(登录界面有自定义变更)
查看changelog文档,检查UAA是否有变更,如果有,则需要先备份UAA资源库,然后删除掉UAA资源库
```shell
# 创建uaa字员文件备份文件夹
mkdir -p bak/uaaui
# 备份uaaui自定义变更
cp -r ~/.ldp/uaaui/* bak/uaaui
# 删除资源库中的文件
rm -rf ~/.ldp/uaaui
```
等新版UAA重新启动后,再根据变更进行修改或者直接拷贝回去。
### 1.3、备份jar包
将老版本jar包进行备份,新版升级失败可以紧急回滚,如果新版正常运行一段时间后,可以删除掉备份文件
```shell
# 创建fatjar备份文件夹
mkdir -p bak/fatjar
# 备份fatjar
mv ldp-manage/fatjar/* bak/fatjar/
```
## 二、升级
### 2.1、解压新版tar包
解压新版tar的方式可以有很多,这里建议新建一个当前日期的目录文件夹,方便和旧版本的做区分,也方便拷贝文件
```shell
# 创建新版目录与之前的ldp-manage目录平级
mkdir ldp-20210716
# 将新版tar包移到刚才新建的目录下,这里的版本号不一定一致
mv ldp-manage-1.2.46.tar.gz ldp-20210716
# 切到新版目录下,并执行解压
cd ldp-20210716
tar -zxvf ldp-manage-1.2.46.tar.gz
```
### 2.2、将新版jar包拷贝到fatjar目录
```shell
# 当前目录在ldp-20210716下,
cp ldp-manage/fatjar/* ../ldp-mange/fatjar
```
### 2.3、拷贝新版ui文件到nginx/html目录下
```shell
# 拷贝mcs前端
cp -r ldp-manage/ui/mcs /usr/share/nginx/html
```
### 2.3、新增、修改配置文件
查看changelog文档,在`本次更新方式`中,是否有配置文件的变更,如果有则打开NACOS按照描述添加及修改配置文件。
### 2.4、拷贝启动脚本到tool目录(启动脚本有变更、新服务启动脚本)
```shell
cp ldp-manage/tool/* ../ldp-manage/tool/
```
### 2.5、启动新版服务
```shell
# 切到tool目录下
cd ../ldp-manage/tool
# 启动服务
./ldp-boot.sh start
```
### 2.6、测试
服务启动成功后,打开mcs地址验证是否OK。
**PS:BPM升级方式和上面类似,这里就不展开叙述**
...@@ -378,6 +378,8 @@ UUID:生成32位随机字符串。 ...@@ -378,6 +378,8 @@ UUID:生成32位随机字符串。
PINYIN:将ref字段的拼音填充到此字段中。 PINYIN:将ref字段的拼音填充到此字段中。
**PS:旧版自动填充在1.2.45版本废弃,新版请查看文档[LDP框架自定义注解.md](LDP框架自定义注解.md)**
```java ```java
// AutoService注解在新增时会对实体类中配置了@AutoComputed字段根据规则进行填充 // AutoService注解在新增时会对实体类中配置了@AutoComputed字段根据规则进行填充
@Override @Override
......
...@@ -414,6 +414,34 @@ HqlWhereHelper conditions = HqlWhereHelper.getInstance() ...@@ -414,6 +414,34 @@ HqlWhereHelper conditions = HqlWhereHelper.getInstance()
.and("a.name", "浦东新区"); .and("a.name", "浦东新区");
``` ```
#### 多级级联的样例
员工实体中有组织关联属性org,组织实体中有职位关联属性positions,下面样例则是通过职位过滤员工信息
```java
// 不指定class
LinkedList<Condition> conditions = HqlWhereHelper.getInstance()
.join("org", "org")
.join("org.positions", "post")
.and("post.id", "bd5b28b7ccd74ba28708c95db54230f0")
.buildConditions();
List list = genericDaoService.findByConditions(LdpMcsEmployeeInfo.class, conditions);
```
另外一种写法需要指定class,这两种写法查询结果一致
```java
// 指定class
LinkedList<Condition> conditions = HqlWhereHelper.getInstance()
.join("org", LdpMcsOrganization.class,"org")
.join("org.positions", LdpMcsPosition.class,"position")
.and("position.id", "bd5b28b7ccd74ba28708c95db54230f0")
.buildConditions();
List list = genericDaoService.findByConditions(LdpMcsEmployeeInfo.class, conditions);
```
......
...@@ -135,13 +135,20 @@ LDP IEDA代码生成插件使用文档:[LDP代码生成IDEA插件安装和使 ...@@ -135,13 +135,20 @@ LDP IEDA代码生成插件使用文档:[LDP代码生成IDEA插件安装和使
默认生成代码接口方法: 默认生成代码接口方法:
```java ```java
/** /**
* 新增地区 * 新增地区
* *
* @param area * @param area
*/ */
public String add(LdpArea area); public String add(LdpArea area);
/**
* 保存地区
*
* @param ldpArea
*/
public boolean saveEntity(LdpArea ldpArea);
/** /**
* 批量新增地区 * 批量新增地区
* *
...@@ -233,6 +240,16 @@ LDP IEDA代码生成插件使用文档:[LDP代码生成IDEA插件安装和使 ...@@ -233,6 +240,16 @@ LDP IEDA代码生成插件使用文档:[LDP代码生成IDEA插件安装和使
* @return * @return
*/ */
public Page<LdpArea> findPage(Page paramPage, LdpArea area); public Page<LdpArea> findPage(Page paramPage, LdpArea area);
/**
* 将新数据集合与通过外键查询出的数据库数据集合进行差异化处理
*
* @param fpkFieldName 属性名
* @param fpkColumnName 表字段名
* @param fpkValue 外键值
* @param newList 新数据集合
*/
void saveOrDeleteByCollection(String fpkFieldName, String fpkColumnName, Object fpkValue, Collection<LdpArea> newList);
``` ```
## 五、增删改查样例 ## 五、增删改查样例
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
## 一、自动填充注解 ## 一、自动填充注解
### 1.1. @AutoFilled ### 1.1. @AutoFilled(1.2.45及以上)
依赖:base-api 依赖:base-api
...@@ -27,6 +27,18 @@ ...@@ -27,6 +27,18 @@
| DefaultFillType.FILL_PINYIN | 填充原字段pinyin值 | 实现AutoFillHandler接口,并注册Bean,Bean名称为DefaultFillType.FILL_PINYIN | | DefaultFillType.FILL_PINYIN | 填充原字段pinyin值 | 实现AutoFillHandler接口,并注册Bean,Bean名称为DefaultFillType.FILL_PINYIN |
| DefaultFillType.FILL_VERSION | 填充version值 | 实现AutoFillHandler接口,并注册Bean,Bean名称为DefaultFillType.FILL_VERSION | | DefaultFillType.FILL_VERSION | 填充version值 | 实现AutoFillHandler接口,并注册Bean,Bean名称为DefaultFillType.FILL_VERSION |
默认实现需要依赖`common-autofilled`
```xml
<dependency>
<groupId>com.sinra.ldp</groupId>
<artifactId>common-autofilled</artifactId>
<version>${ldp.version}</version>
</dependency>
```
#### 1.1.2 使用案例 #### 1.1.2 使用案例
```java ```java
...@@ -65,7 +77,7 @@ ...@@ -65,7 +77,7 @@
#### 1.1.3 扩展填充算法 #### 1.1.3 扩展填充算法
扩展填充算法的方式,新建一个类,并实现AutoFillHandler,根据业务判断需要 填充的值,这里举例,例如需要填充一个随机数,新建一个RandomFillHandler类,实现AutoFillHandler方法 扩展填充算法的方式,新建一个类,并实现AutoFillHandler,根据业务判断需要 填充的值,这里举例,例如需要填充一个随机数,新建一个RandomFillHandler类,实现AutoFillHandler接口,并填入返回值的泛型,这里是一个整形随机数,所以填入整形的包装类Integer:
```java ```java
/** /**
...@@ -219,6 +231,16 @@ public RestResult getListByJdbc(@RequestParamMap(typeCovertMapping = ExampleUser ...@@ -219,6 +231,16 @@ public RestResult getListByJdbc(@RequestParamMap(typeCovertMapping = ExampleUser
**使用时需传递 moduleKey(模块名称,如果是新模块需提前建立表,以ldp_audit_log_ 开头+ modulekey 录入的值结尾的表 如ldp_audit_log_example , 表结构可参考 ldp_audit_log_sys), subKey 子模块名称最终会保存在日志中作为二级子模块**; **使用时需传递 moduleKey(模块名称,如果是新模块需提前建立表,以ldp_audit_log_ 开头+ modulekey 录入的值结尾的表 如ldp_audit_log_example , 表结构可参考 ldp_audit_log_sys), subKey 子模块名称最终会保存在日志中作为二级子模块**;
#### 3.2.3 版本变更(1.2.48以上)
注解增加属性`service`,值为枚举值`DynamicLogBizServiceEnum.INTERNAL` 或者 `DynamicLogBizServiceEnum.EXTERNAL`默认为`DynamicLogBizServiceEnum.EXTERNAL`,和之前版本的区分为:
EXTERNAL:需要在业务库中创建日志表。
INTERNAL:是调用dubbo rpc接口来存放日志,需要在LDP-MCS对应的数据库中创建日志表,并且需要依赖`internal-common-service`
RESTFUl:是使用REST请求调用mcs接口来存放日志
### 3.3. @SysJobLog ### 3.3. @SysJobLog
#### 3.3.1 注解介绍 #### 3.3.1 注解介绍
......
# LDP统一认证登录配置
在mcs中对应用配置统一认证时,根据配置的不同,能达到不同的登录控制效果。
### 一、样例数据
**应用**
- 应用系统A:认证领域编码 demo
**用户**
- 用户1: 类型-管理,系统标识-无
- 用户2: 类型-应用,系统标识-无
- 用户3: 类型-应用,系统标识-demo
- 用户4: 类型-应用,系统标识-example
### 二、认证服务接口地址配置
在mcs中,打开左侧菜单`应用认证管理`->`认证服务`,找到认证领域demo的认证服务,点击修改,登录配置只需要修改下图圈中的接口地址即可:
![](../imgs/UAA登录配置.png)
#### 2.1 不做限制,所有用户均可登录
将接口地址设置为user/alllogin
```java
// 所有用户均可登录
user/alllogin
```
#### 2.2 管理用户、应用用户(无系统标识或相同系统标识)均可登录
将接口地址设置为user/applogin,配置相关参数用户类型usertype=0,系统标识sysid=demo
```java
// 除了用户4由于系统标识不一致不能登录,用户1、用户2、用户3均可登录
user/applogin?usertype=0&sysid=demo
```
#### 2.3 仅应用用户(不检查系统标识)可登录
将接口地址设置为user/login,并设置应用类型usertype=0
```java
// 除用户1是管理用户不能登录,用户2、用户3、用户4均可登录
user/login?usertype=0
```
#### 2.4 仅应用用户(相同系统标识)可登录
将接口地址设置为user/login,并设置应用类型usertype=0,系统标识sysid=demo
```java
// 仅用户3满足条件,可以登录,其它用户均不可登录
user/login?usertype=0&sysid=demo
```
\ No newline at end of file
...@@ -26,6 +26,8 @@ ldp: ...@@ -26,6 +26,8 @@ ldp:
hidden-assign-button: true hidden-assign-button: true
# 隐藏委派按钮 # 隐藏委派按钮
hidden-delegate-button: true hidden-delegate-button: true
# 1.2.47版本后新增相同审批人跳过逻辑,需要跳过则配置为true
skip-approve-when-same-assign-user: true
``` ```
......
# 流程系统操作说明 # 流程系统操作说明
...@@ -40,9 +34,7 @@ ...@@ -40,9 +34,7 @@
#### 1.1.1、 添加用户任务
流程设计(**添加用户任务**)
填写节点名称(<span style="color:red;">节点名称必填请注意填写</span>) 填写节点名称(<span style="color:red;">节点名称必填请注意填写</span>)
...@@ -52,7 +44,7 @@ ...@@ -52,7 +44,7 @@
设置候选配置说明 #### 1.1.2 、设置候选配置
> 审批人为选择用户,可多选。 > 审批人为选择用户,可多选。
> >
...@@ -70,9 +62,9 @@ ...@@ -70,9 +62,9 @@
![image-20210302162525605](./images/process/06选择执行人确认.png) ![image-20210302162525605](./images/process/06选择执行人确认.png)
设置认领方式(默认手动认领)
#### 1.1.3 、设置认领方式(默认手动认领)
> 手动认领为设置的 审批人/候选组, 在系统内手动点击认领并执行。 > 手动认领为设置的 审批人/候选组, 在系统内手动点击认领并执行。
...@@ -112,7 +104,7 @@ ...@@ -112,7 +104,7 @@
#### 1.1.1、认领方式说明 ##### 1.1.3.1、认领方式说明
- 手动认领 - 手动认领
...@@ -130,7 +122,7 @@ ...@@ -130,7 +122,7 @@
#### 1.1.2、认领规则说明 ##### 1.1.3.2、认领规则说明
1. 匹配发起人组织 1. 匹配发起人组织
...@@ -208,6 +200,67 @@ PS: 如果需要配置认领方式为 **匹配表单归属组织** 和 **匹 ...@@ -208,6 +200,67 @@ PS: 如果需要配置认领方式为 **匹配表单归属组织** 和 **匹
#### 1.1.4、相同审批人跳过配置
在节点的基本设置中,可以分别对每个节点配置`相同审批人跳过`,这是一个开关配置,如果打开此配置,流程在执行时,如果当前任务审批人是发起人或者是前面节点的审批人,则跳过此节点审批。
![相同审批人跳过](images/process/114相同审批人跳过.png)
这里有一个样例,流程在运行中,`一级审批``二级审批`的审批人都是`审批用户002`,当`审批用户002`同意一级审批后,二级审批自动跳过,流程图如下:
![](./images/process/1141相同审批人流程图.png)
审批记录如下:
![](./images/process/1142相同审批人过程意见.png)
#### 1.1.5、默认抄送配置
在节点的基础配置中,可以配置默认抄送人(可以多选),当节点完成、退回、转办时都会给你默认抄送人增加一条抄送的审批记录,被抄送人在`我的待阅`中可以看到相关记录。
![默认抄送](./images/process/115默认抄送.png)
#### 1.1.6、监听器配置
流程管理系统对每个节点提供两种监听,一种是执行监听、一种是任务监听。
`执行监听`:监听的是流程所有节点和连线,主要有start、end、take事件。其中节点有start、end两种事件,而连线则有take事件:
![执行监听](./images/process/116执行监听.png)
`任务监听`:会经历assignment、create、complete、delete。当流程引擎触发这四种事件类型时,对应的任务监听器会捕获其事件类型,再按照监听器的处理逻辑进行处理。
![监听器配置](./images/process/1161监听器配置.png)
在对应的监听后面点击编辑,点击添加,选择事件类型,监听类型选择`默认监听器`,可以添加多个监听器,添加完成后,点击确定即可。
![监听配置2](./images/process/1162监听器配置.png)
配置好监听器后,当流程执行时,触发响应事件,并执行`流程定义`绑定的`任务回调`,其中`businessKey`为业务Id,`eventName`为事件名称。
![](./images/process/1163回调配置.png)
任务回调支持所有的流程变量(用户发起流程传入的),以及部分固定变量如下:
| 变量名 | 说明 |
| ------------------- | ----------------- |
| processDefinitionId | 流程定义ID |
| processId | 流程实例ID |
| processName | 流程实例名称 |
| processStartTime | 流程开始时间 |
| startUserId | 流程发起人account |
| taskId | 任务ID |
| taskName | 任务名称 |
| taskDefinitionKey | 节点ID |
| taskCreateTime | 任务创建时间 |
| formKey | 表单Key |
| businessKey | 业务ID |
| assignUserId | 任务审批人account |
| assignUserName | 任务审批人名称 |
| eventName | 事件名称 |
### 1.2、发布流程 ### 1.2、发布流程
...@@ -291,7 +344,7 @@ PS: 如果需要配置认领方式为 **匹配表单归属组织** 和 **匹 ...@@ -291,7 +344,7 @@ PS: 如果需要配置认领方式为 **匹配表单归属组织** 和 **匹
> 使用`iframe`方式集成应用,但是目前仅支持在查看流程详情时候,查看`iframe`的表单信息,在查看详情时会默认读取流程任务中的业务id,将业务id传递给iframe,然后交由iframe项目进行获取表单数据。 > 使用`iframe`方式集成应用,但是目前仅支持在查看流程详情时候,查看`iframe`的表单信息,在查看详情时会默认读取流程任务中的业务id,将业务id传递给iframe,然后交由iframe项目进行获取表单数据。
> >
> 仅需配置应用项目的地址即可进行查看。 > 仅需配置应用项目的地址即可进行查看。
...@@ -762,7 +815,7 @@ PS: 如果需要配置认领方式为 **匹配表单归属组织** 和 **匹 ...@@ -762,7 +815,7 @@ PS: 如果需要配置认领方式为 **匹配表单归属组织** 和 **匹
1. 显示暂无数据: 请查看是否流程是否绑定表单,如果无绑定也可以提交。 1. 显示暂无数据: 请查看是否流程是否绑定表单,如果无绑定也可以提交。
2. 显示资源加载失败: 请查看是否绑定的表单 地址填写错误, 或者应用项目打包出错。 2. 显示资源加载失败: 请查看是否绑定的表单 地址填写错误, 或者应用项目打包出错。
3. 外置VUE表单无数据显示, 请查看当前用户是否有权限访问绑定应用的功能视图页面, 请在`mcs系统`中查看授权。 3. 外置VUE表单无数据显示, 请查看当前用户是否有权限访问绑定应用的功能视图页面, 请在`mcs系统`中查看授权。
4. 外置iframe表单无法显示, 请查看配置项目的地址是否正常可访问。(`iframe表单`仅支持在流程详情中显示,其他模式下暂不显示。) 4. 外置iframe表单无法显示, 请查看配置项目的地址是否正常可访问。(`iframe表单`仅支持在流程详情中显示,其他模式下暂不显示。)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment