调试工具在业务场景的使用-后端

这篇文档主要介绍在业务场景中,使用调试工具解决后端问题的思路。

调试工具的使用见文档:问题排查调试工具使用手册

调试工具的页面内容介绍:Oinone平台可视化调试工具


例1:模型配置不存在

现象:点击详情报模型配置不存在错误

调试工具在业务场景的使用-后端

排查路径:

  1. 将报错请求复制到接口调试出,查看调试信息

  2. 在调试信息页面,可以看到全部堆栈,利用堆栈信息找报错问题。

    调试工具在业务场景的使用-后端

  3. 可以看到执行了StudentAction的queryOne方法在42行有问题

    调试工具在业务场景的使用-后端

  4. 检查代码发现传进queryList的wrapper参数没有指定模型编码。添加模型编码问题解决

    调试工具在业务场景的使用-后端

例2:无权限问题排查

现象:用户前端自定义跳转工作流审批页面,提示无权限

排查路径:

  1. 将报错请求复制到接口调试处,查看调试信息
  2. 查看debug信息中权限上下文中角色携带的权限是否正确。复制debug信息中的path路径,去权限上下文中搜索查看该路径下所有的权限。

调试工具在业务场景的使用-后端

调试工具在业务场景的使用-后端
根据上面的path路径搜索权限信息:

~~~
"getRoleActionPermissionsByViewAction:workbench.WorkBenchWorkflowUserTaskActive:WorkflowMenus_WorkBenchMenu_ActiveUserTaskMenu": {
      "630732547466232342": {
     "/workflow/WorkflowMenus_WorkBenchMenu_ActiveUserTaskMenu/ACTION#workbench.WorkBenchWorkflowUserTaskActive#workflow_write/ACTION#workflow.WorkflowUserTask#workflow_writeturnon": 1,
        "/workflow/WorkflowMenus_WorkBenchMenu_ActiveUserTaskMenu/ACTION#workbench.WorkBenchWorkflowUserTaskActive#workflow_wait/ACTION#workflow.WorkflowUserTask#workflow_agree": 1,
      }
    },
~~~

参数介绍:

  • 630732547466232342:角色id为630732547466232342拥有的所有权限信息

  • /workflow/WorkflowMenus_WorkBenchMenu_ActiveUserTaskMenu:path路径

  • /ACTION#workbench.WorkBenchWorkflowUserTaskActive#workflow_write:此path路径下面的ACTION,模型为workbench.WorkBenchWorkflowUserTaskActive的workflow_write动作。

对比无权限页面和以上参数是否对应。可在页面url上查看模型,动作。常见问题有模型不匹配(更换为正常有权限的模型)、角色下无动作权限。

经查看调试信息发现,设置的该角色下并无所需动作的权限信息,考虑由于前端自定义跳转页面没有配置sessionPath所致。

由于5.0版本权限是根据路径进行鉴权的,请求载荷中variables需要携带path路径

如果是用户自定义跳转页面,需要配置sessionPath:/workflow/WorkflowMenus_WorkBenchMenu_ActiveUserTaskMenu,值为url中的path路径。

2A9BD4E8-F665-48B4-A5AC-E2961428A8DF

Oinone社区 作者:yexiu原创文章,如若转载,请注明出处:https://doc.oinone.top/wen-ti-zhen-duan/17746.html

访问Oinone官网:https://www.oinone.top获取数式Oinone低代码应用平台体验

(0)
yexiu的头像yexiu数式员工
上一篇 2024年9月21日 pm5:51
下一篇 2024年9月26日 pm3:33

相关推荐

  • 新增模块不存在

    后端代码新增了一个模块,但在前端看不到新增的模块,主要排查以下几个方面 检查启动参数中是否添加-Plifecycle=INSTALL。 启动工程的yml文件中在pamirs: boot: modules: 中是否添加了该模块 启动工程的pom文件是否依赖该该模块所在包 检查启动工程是否扫描到了该模块所在包

    2024年7月23日
    76800
  • 树表查不到二级目录

    场景:树表结构查不到二级模型内容,联动配置如下 问题:界面只显示部门,不显示岗位。 已知: 自定义部门代理模型继承了PamirsDepartment @Model.model(DepartmentDoc.MODEL_MODEL) @Model.Advanced(type = ModelTypeEnum.PROXY) @Model(displayName = “部门资料代理模型”, summary = “部门资料代理模型”) public class DepartmentDoc extends PamirsDepartment { public static final String MODEL_MODEL = “top.DepartmentDoc”; @Field.many2one @Field(displayName = “上级部门”) private DepartmentDoc parent; @Field.one2many @Field(displayName = “岗位列表”) private List positionLists; } 自定义岗位代理模型继承了PamirsPosition @Model.model(PositionDoc.MODEL_MODEL) @Model(displayName = “岗位代理模型”, summary = “岗位代理模型”) @Model.Advanced(type = ModelTypeEnum.PROXY) public class PositionDoc extends PamirsPosition { public static final String MODEL_MODEL = “top.PositionDoc”; @Field.many2one @Field(displayName = “上级岗位”) private PositionDoc parent; } 首先查看控制台相应请求 找到请求接口进后端debug,pro.shushi.pamirs.boot.web.action.UiTreeAction#fetchChildren 检查这两个数据是否正常 继续debug可知,在queryWrapper中使用departmentCode没有查询出数据,这时候回看模型定义,发现岗位列表中没有定义关联字段,导致没有查出数据。pro.shushi.pamirs.boot.web.manager.tree.UiTreeRelationQueryManager#_fetchIsLeaf 解决:在模型配置中添加关系字段@Field.Relation(relationFields = {"code"}, referenceFields = {"departmentCode"}),并和父类中的关系字段保持一致 部门代理模型: @Model.model(DepartmentDoc.MODEL_MODEL) @Model.Advanced(type = ModelTypeEnum.PROXY) @Model(displayName = "部门资料代理模型", summary = "部门资料代理模型") public class DepartmentDoc extends PamirsDepartment { public static final String MODEL_MODEL = "top.DepartmentDoc"; @Field.many2one @Field.Relation(relationFields = {"parentCode"}, referenceFields = {"code"}) @Field(displayName = "上级部门") private DepartmentDoc parent; @Field.one2many @Field.Relation(relationFields = {"code"}, referenceFields = {"departmentCode"}) @Field(displayName = "岗位列表") private List<PositionDoc> positionLists; } 岗位代理模型 @Model.model(PositionDoc.MODEL_MODEL) @Model(displayName = "岗位代理模型", summary = "岗位代理模型") @Model.Advanced(type = ModelTypeEnum.PROXY) public class PositionDoc extends PamirsPosition { public static final String MODEL_MODEL = "top.PositionDoc"; @Field.many2one @Field.Relation(relationFields = {"departmentCode"}, referenceFields = {"code"}) @Field(displayName = "上级岗位") private PositionDoc parent; }

    2024年7月23日
    50700
  • 同步导出时路由新页面问题

    情景复现:界面设计器配置了同步导出,在页面上点击导出之后跳转到首页而没有正常下载文件排查路径: 点击导出之后,查看跳转的页面路径发现,跳转到了127.****/Hfyk/pamirs/page,可知,跳转路径不对,怀疑是Nginx路由配置问题,排查Nginx配置 发现没有配置下载路由,在Nginx中配置下载路由

    2024年7月24日
    75600
  • 跳转动作无权限问题排查

    版本: 5.0.X以上 现象 配置了一个跳转动作,并配置了加载函数。点击跳转到另一个页面,发现弹出“无权限进行该操作”错误。 原因 权限那边配置动作权限也都给了权限,但是为什么会出现这种情况呢?大概率是因为没有配置加载函数的权限,导致报错。 排查路径 5.0.X 以上版本权限控制是通过请求载荷里面的variables参数携带的path路径进行鉴权的。这个path路径是通过菜单名字一层一层拼接的。这个报错的根本原因就是因为这个无权限的请求的path路径下,没有这个加载函数的权限。所以要解决问题很简单,只需要在这个路径下配置上这个加载函数的权限就可以了。 ① 跳转页面是弹窗打开或抽屉打开:这种情况新打开的页面的path路径是不会变的,所使用的还是外面表格页面的路径,所以只需要把该加载函数配置到外面表格页面并隐藏掉,然后在权限那边配置上该动作权限问题就解决了。 ② 跳转页面是新窗口打开,这个时候新打开的页面的path路径是会变成新窗口所在的路径,所以只需要把该加载函数配置到跳转页面上,并隐藏掉,然后在权限那边配置上该动作权限问题也可以解决。 ③ 如果这个加载函数不需要有页面交互,或者页面和函数不属于同一个模型,则可以直接把这个函数改为Function绕过权限验证就好。

    2024年10月29日
    2.1K00
  • 问题排查调试工具使用手册

    当前端发起对应用的访问时,如果出现错误,那么我们可以通过以下方式进行简易排查,如果排查不出来,则也可以把排查工具给出的信息发送给Oinone官方售后进行进一步分析。本文将通过模拟异常信息,来介绍排查工具,提供了哪些辅助信息帮我们来快速定位问题。 排查工具基础介绍 通过前端页面的 /debug 路由路径访问调试工具的页面,假设我们的前端页面访问地址为http://localhost:6800,那么我们的排查工具请求路径就是 http://localhost:6800/debug排查工具可以帮我们排查前端页面元数据异常和后端接口的异常 排查前端页面元数据 将问题页面浏览器地址栏内 page 后的部分复制到调试工具的 debug 路由后重新发起请求,如图可以看到调试工具展示的信息,可以根据这些信息排查问题。 排查后端接口 后端接口出现问题后,打开(在原页面)浏览器的调试工具,切换到“网络”的标签页,在左侧的历史请求列表中找到需要调试的请求,右键会弹出菜单,点击菜单中的 “复制”,再次展开该菜单,点击二级菜单中的“以 fetch 格式复制”,这样可以复制到调试所需要的信息 2.复制调试信息到“接口调试”标签页内的文本框内,点击“发起请求”按钮获取调试结果 我们可以看到页面展示了该接口的各种调试信息,我们可以据此排查问题。 场景化的排查思路 业务代码中存在代码bug 报错后发起调试请求,我们可以看到,调试工具直接给出了异常抛出的具体代码所在位置,此时再切换到“全部堆栈”下,可以看到是业务类的233行导致的空指针异常,查看代码后分析可得是data.getName().eqauls方法在调用前未做条件判断补全该判断后代码可以正常执行 业务代码中没有直接的错误,异常在平台代码中抛出 报错后发起调试请求可以看到异常不在业务代码内再切换到“全部堆栈”,可以看到具体异常信息,提示core_demo_item表出现了重复的主键,该表是DemoItem模型的我们还可以切换到“sql调试”的标签页,可以看到出错的具体sql语句经过分析可以得知是240行的data.create()�重复创建数据导致的。 三、排查工具无法定位怎么办 当我们通过排查工具还是没有定位到问题的时候,可以通过调试页面的“下载全部调试数据”和“下载调试数据”按钮将调试信息的数据发送给官方售后人员帮助我们定位排查问题。 点击页面最顶部的“下载全部调试数据”按钮,可以下载页面调试数据和接口调试数据点击“调试接口”标签页内的“下载调试数据”按钮,可以下载接口调试数据 四、排查工具细节

    2024年5月21日
    1.3K00

Leave a Reply

登录后才能评论