App端–后端常见问题
2.8.1操作手册下载地址:2.8.1操作手册
下面是根据app进行区分的,查找时请根据对应App进行查找:
1.Base和多租户APP
1.1 线上环境菜单和产品线丢失
- 先查看ui_menu表,找到对应菜单的is_delete字段,判断是否为1,如果为1,改为0,再重启即可;
- 如果is_delete字段值是正确的,判断app_ids字段值是否正确,该值对应的是meta_app表的id,如果不正确,重置种子数据,再重启即可;
- 如果上述数据是正确的,登录平台租户管理员,多租户-》权限点明细-》左上角点击刷新权限;
- 如果刷新权限,没有效果,查看tenant_permission表的数据是否正确,即app_name是否正确,code是否重复导致,父子级是否正确;
- 如果上述步骤仍然不能解决,可以重启全部容器,其他恢复操作,请参考:产品线与菜单丢失问题
1.2 测试环境数据库迁移到本地,菜单和产品线丢失
- 如果平台租户管理员没有菜单显示,参考别的环境的重置base的种子数据接口,使用postman调用,传参为meta_app中base的id;
- 调用接口重置种子数据成功后,重启服务;
- 如果上述步骤还不能解决问题,请参考1.1问题的排查步骤
1.3 新增或更新的视图不显示
- 查看loadview返回的内容是否正确,如果为null或错误,重置该视图的种子数据;
- 如果返回的内容和后端配置的视图是一致的,请查看isDisplay的字段值是否为true,如果为false代表未授权,需要重新授权;
- 如果授权不生效,查看tenant_permission表是否存在该视图的权限点,根据name进行查询;
- 如果不存在,请点击刷新权限(登录平台租户管理员,多租户-》权限点明细-》左上角点击刷新权限);
- 如果还不能恢复,请联系项目支持人员进行恢复
1.4 作用域失效
- 首先排查在作用范围选择的模型及字段是否正确,可以查看tenant_action_rule表,根据选择的model_name字段进行查看数据是否正确;
- 目前作用域不支持,作用域字段选择ManyToOne,ManyToMany字段,例如主子表都需要作用域,那么两个表都需要配置相应的作用域;
- 如果上述内容正确,请检查该用户是否分配相应的作用域及是否关联维度;
- 配置信息都是对的,请登录平台租户管理员,在多租户-》多租户管理-》点击同步维度,进行内存数据的同步
1.5 作用域如何开发及使用
1.6 后端视图扩展
1.7 loadView返回结果为null,数据错误或报错
- 重置视图的种子数据;
- 如果重置后无效果,查看后端日志是否有报错,以及排查使用jsonpath扩展后端视图的内容是否正确;
- 如果后端无报错,请查看菜单管理里面对应的模型及视图是否正确
1.8 租户授权失效
- 先检查该App是否安装;
- 如果已安装,请重新取消授权,再次授权试一下;
1.9 普通用户授权失效
- 首先检查在用户角色的权限配置是否分配其权限;
- 如果已分配,可以尝试取消授权,再次授权保存
1.10 新增的视图在用户角色-》权限配置显示的权限名字为null
- 检查视图是否配置name,和最外层的type在同一层级别
1.11 更换模型名字,导致前端页面报错
- 修改菜单视图绑定的模型;
- 修改视图绑定的模型
1.12 更换APP名字,菜单丢失
- delete from tenant_permission where app_name = '旧app的名字'
- 登录平台租户管理员,多租户-》权限点明细-》左上角点击刷新权限,或重新安装
1.13 平台管理员的账号被锁定,如何处理
- 登录数据库;
- 修改rbac_user表的status为0,login_count为0
1.14 租户管理员的账号被锁定,如何处理
- 登录平台租户管理员的账号;
- 在多租户-》租户管理进行解锁
1.15 普通用户的账号被锁定,如何处理
- 登录相应的租户管理员账号;
- 在用户权限-》用户管理,选择相应的用户账号进行解锁
1.16 前端扩展包不生效,如何处理
- 打开
开发者工具 (F12)
查看prepareListApps
接口返回内容,根据前端 app 的名字找到其返回内容。 - 一般分为3种情况
-
prepareListApps
没返回该 app 的内容,即前端扩展包未安装或安装失败 - 与其他正常 app 返回的内容对比,如果内容格式不同,即为前端扩展包解压失败导致
- 返回内容都正常,检查是否配置了按需加载,以及页面路径是否满足按需加载的条件(
"effectPaths"
)
-
- 解压失败时的解决方法:
- 方法一: 下载下来前端扩展包,在本地重新解压,压缩,上传,上架,更新;
- 方法二: 如果方法一没有效果,
cd /usr/share/nginx/html/umdComps
,rm -rf tech-mbm-common tech-mbm-common.zip
,然后在meta_app
表将该 app 的md5
置为null
,点击更新。
1.17 用户绑定多个角色,只显示个别角色的菜单
- select * from rbac_user_prefer where user_id = '' and sign_type = 'CURRULE';
- 查看sign_content的内容,保存的角色是否为当前已授权的角色id
- 如果已授权的角色id不对,请删除重新登录;
- 如果删除后重新登录无效,需要升级用户偏好app的版本
1.18 新增的视图在权限配置没有显示
- 登录平台租户管理员,多租户-》权限点明细-》左上角点击刷新权限
1.19 如何忽略作用域
1.20 如何获取当前作用域
1.21 如何修改token的过期时间
- 在安全策略修改token的过期时间;
- 重新登录;
1.22 新创建的用户,如何修改密码的过期时间
- 在安全策略,修改密码的到期时间
1.23 作用域右上角显示的是作用域实例id,不是具体名称
- 在业务模型上的某一个属性指定displayForModel为true,用于户右上角作用域实例的显示
1.24 自定义的按钮,如何进行权限控制
1.25 按钮配置了视图,但是在权限配置不显示或不受权限控制
- 排查配置的后端视图,是否配置auth关键字;
- 如果配置了,要保证在同一级auth对应的值是唯一的
2.用户偏好APP–高级表格和基础表格
2.1 如何删除高级表格的内容
- delete from rbac_user_prefer where user_id = '' and sign_type = 'uiScheme' and sign_id = ''
2.2 设置了高级表格,没有生效
-
如果用户偏好版本>=sie-snest-user-prefer-v2.8.1-HOTFIX.003,检查loadView的args参数是否有"techAdvancedTable": true的参数;如果前端没有配置,请在nginx的配置文件apps.json加入该配置,请参考:高级表格配置
-
如果版本低于sie-snest-user-prefer-v2.8.1-HOTFIX.003,请设置一个方案为默认,然后排查loadView是否有返回
3.文件APP(sie-snest-file)
- 文件上传:
InputStream inputStream = (InputStream) i.get("inputStream");
String originalFilename = (String)i.get("originalFilename");
String bucketName = (String)i.get("bucketName");
Map<String, Object> fileInfo = (Map<String, Object>)rs.getMeta().get("base_file")
.call("putObject", rs, inputStream, originalFilename, bucketName);
-
文件下载: String fileId = "meta_attacment 的 id";
InputStream is = rs.get("base_file").call("getInputStream", fileId); - 引擎上传和下载:前端可调用的上传和下载
4.数据字典APP
4.1 数据字典如何使用
4.2 数据字典失效或查询不到值,如何排查
- 排查Dict注解是否正确;
- 排查查询数据字典的值是否正确,即label-value是否已配置,如果是对的,执行第3步;
- 登录redis客户端;
- 模糊查询包含sie-snest-dict:dict_value的key的值,判断是否存在相应的值及值存在是否正确;
- 如果不存在或不正确,请联系项目支持人员;
5.日志APP
5.1 如何为接口配置操作日志记录
- 在运维中心->日志分析->日志配置进行配置相应接口
5.2 操作日志需要记录真实的ip,如何配置(注意:该配置只适用于非单点登录的情况)
6.配置中心APP(sie-snest-config)
6.1 如何读取application文件配置的值
- ConfigUtils.getOrDefault("application文件中值的key",默认值)
6.2 如何根据app读取配置中心的值
- ConfigUtils.get("appName", "master", "key的值").orElse("true")
6.3 如何在app中配置配置中心的值
- 在app.json文件加入下面的值:
"appConfig": { "自定义的key":{ "value":"自定义值", "desc": "描述" } }
6.4 配置中心如何使用
7.接口集成平台APP(sie-snest-interface)
7.1 常见问题
7.2 日志存储配置
8.国际化APP
8.1 国际化如何开发使用
8.2 操作手册
9.工作流APP
9.1 开发手册
9.2 常见问题
10.邮件APP(sie-snest-mail)
10.1 如何配置使用
11.多数据源APP(sie-snest-datasource)
11.1 如何配置使用
12.打印组件APP
12.1 开发使用说明
12.2 数据源无法显示某个模型
- 排查模型是否加上isPrint标记
12.3 常见问题
13.文件预览APP
13.1 开发使用说明
14.Excel(导入导出)APP
14.1 开发使用说明
14.2 业务自定义导出接口逻辑
15.消息推送APP
15.1 开发使用说明
15.2 常见问题
16.编码规则APP
16.1 开发使用说明
17.API文档
17.1 操作手册
18.流程向导
18.1 操作手册
19.附件APP
19.1 开发使用说明
20.任务调度APP
21.规则引擎APP
21.1 操作手册
引擎端–后端常见问题
1.应用市场
1.1 常见问题
2.白名单失效
2.1 检查appliaction文件中,白名单的配置是否正确,正确格式如下:
- url.whiteList=appName.modelName.serviceName(其中*代表全部)
2.2 如果配置是正确的,登录redis客户端,查看key为iidp:whitelist:url的值是否正确
3.ManyToOne及ManyToMany相关问题
3.1 one2many related属性如何配置搜索
3.2 ManyToOne使用相关问题
4.其他常见问题
5.如何获取容器安装了哪些app的信息
6.property指定数据类型为text,但是在数据库的字段类型不对
- @Property(columnName = "sign_content", dataType = DataType.TEXT, length = Integer.MAX_VALUE, displayName = "标记内容")
7.如何开启和关闭DDL(在application-dev文件添加)
- 开启DDL: engine.model2ddl.mode=CREATE
- 关闭DDL: engine.model2ddl.mode=NONE
8.如何判断App或模型是否存在
- InjectedDataFacadeAccess.getAppDataInfos(appName + "." + appTag)
- 参数说明:appName–App的名称 appTag–master
运维管理
1.Minio上传或下载异常排查思路
- 先打开console控制台,看看报什么错,如果报403说明没有minio相应桶权限,去到相应的桶,把权限改为public;
- 如果改为public不能解决问题,就查看nginx中fileSysytem配置的代理服务器地址是否正确。
-
上传文件过大 413 错误解决方法
- minio对应的桶要设置成公有权限
- 授权操作:授权操作
- 检查对象存储策略,是否有无效策略导致所有用户都无法访问这个桶
2.图片回显失败或访问失败
- 检查minio对应的桶的权限是否正确
3.如何查看分布式日志
4.授权过期如何处理,如何部署
5. gw网关镜像地址
- 镜像地址: harbor.devcenter.gushen.sieiot.com/iidp/iidp-gw:v1.3.1
- 下载地址: http://idp.chinasie.com/download/repository/iidp-gw-v1.3.1.tar
gw-v1.3.1 版本存在可能无法根据app进行寻址的问题,但概率很低。如果出现了,可人工恢复,首先查询app安装所在的容器,然后重启该容器即可。升级至v1.3.3
可杜绝此问题。