JSite 快速开发框架,内置Flowable工作流引擎 · 五大基础模块 · 前后端基础代码自动生成 · 权限精确控制。




说明:此版本我已经调通,最新版本正在更新,页面未处理好,因此采用历史版本。

文章目录

  • 一、部门经理流转
    • 1. 登录dept账号
    • 2. 在待办任务中,签收任务
    • 3. 在待办任务中,办理任务

一、部门经理流转

1. 登录dept账号

2. 在待办任务中,签收任务


3. 在待办任务中,办理任务


响应码500

  • 请求的url
  • 页面传递的参数
  • 控制台报错信息提取

    在获取代办列表FlowTaskService的104行

    在获取代办列表FlowTaskService的105行
e.setProcDefId(pd.getId());

这里需要tProcDefId对吧,程序中写的是从pd中获取,但是里面,没有

其实这个tProcDefId在task中,因此需要修改代码。

  • 点击办理,procDefId=undefined

    第一步进FlowTaskController的form方法,调用getFormKey的service进行业务处理



从上图可以看出很明显,没有获取到procDefId

,清除缓存,再次测试,点击待办任务菜单,debbug看程序,

procDefId=leave:1:b74aaad7-15d6-11ea-9f45-4a5ab6e330e5


  • 点击办理



    很明显获取到值了!!!
    f8跳过,页面又抛出403,权限的错了,真是一波未平一波又起啊。

    从页面很明显是没有办理权限,导致403错误,情有可原,对吧,那就给dept用户配置权限呗,
    登录jsite系统管理员账号,给dept用户配置权限



    角色授权既然是空的,我想静静。看看控制台报错信息再定位问题吧?

    从控制台中可以看出,由2条信息比较醒目:
java.lang.ClassNotFoundException: com.jsite.modules.sys.utils.AreaOfficeUtils
at com.jsite.modules.sys.web.RoleController.form(RoleController.java:74)

异常信息很明晰那说AreaOfficeUtils类,RoleController.java:74,既然有文件位置,那咱们就去看看吧,
从以下图中可以看出,通过反射区找 com.jsite.modules.sys.utils.AreaOfficeUtils类,那就在程序中找找有这个类吗?

程序我是看明白了,他想调用AreaOfficeUtils类的getOfficeList(获取当前用户有权限访问的部门方法),再utils包下就3个工具类,经过查找,UserUtils类中,有getOfficeList(获取当前用户有权限访问的部门方法),那就好办了,类名修改一下即可,再次测试。

校色授权,就显示了。

但是,我就不明白了,想获取一个工具类的方法,直接调用不就行了,如果是静态的方法,直接用类名.调用不更方便。代码还写了折磨多行,浪费。
代用的方法和我们预期的一样静态的,那就轻松+快乐了。


一行代码就搞定了。哈哈哈!!!
测试一下,好不好使,对吧

从上图可以看出,也好使。

dept用户的办理权限,我也配置好了,再去待办任务菜单中,去办理任务应该就好了,光预测也不行,测试一下保险。

任务办理完了,在已办任务菜单中,查看一下任务办理的详情不为过吧,
这里演示以,下面查看当前节点信息,debug断点调试了。


其实,也是那个definitionId=undefined导致的,也是由于获取的对象不对,这里我直接修改程序。


解决方案:

//修改后的程序
e.setProcDefId(histTask.getProcessDefinitionId());


再次测试

任务办理完了,在已办任务(历史)菜单中,查看一下任务办理的节点信息不为过吧,

其实,也是那个definitionId=undefined导致的,也是由于获取的对象不对,这里我直接修改程序。


解决方案:

//修改后的程序
e.setProcDefId(histTask.getProcessDefinitionId());


再次测试

下一个节点是hr,同理hr也需要权限

jsitehr登录

在待办任务菜单中,先对待办任务进行签收,签收之后进行办理。


在已办任务菜单中,查看当前节点信息

在已办任务菜单中,查看详情
节点流转结束了,jsite发起流程的执行人,查看一下历史任务应该吧。

先追踪一下流程详情

很明显又是这个问题,大家应该知道怎末改了吧,

再次测试

总上,异常现象有2种:

  1. 在待办任务/已办任务/已发任务都会抛出异常,都是由于definitionId=undefined导致的
  2. 由于没有办理权限导致的403
    到此,一个完整的工作流走完了。

补充,在待办任务菜单中会出现2种业务场景,上明只讲了一种,直接在待办任务列表中签收任务,然后办理,已经签收的任务,另外一种情况就是,我还未签收,但是,我想先不签收,先查看一下节点信息和流程详情,也符合业务需要,这样需要在待办任务中添加这种业务场景。

当前属于未签收的业务场景:




解决方案:

 //源程序// e.setProcDefId(pd.getId());//修改后e.setProcDefId(task.getProcessDefinitionId());



源码附上:

/*** 获取待办列表* @param procDefKey 流程定义标识* @return*/public Page<Flow> todoList(Flow act){String userId = UserUtils.getUser().getLoginName();//ObjectUtils.toString(UserUtils.getUser().getId());Page<Flow> result = new Page<Flow>();List<Flow> flowList = new ArrayList<Flow>();// =============== 已经签收的任务  ===============TaskQuery todoTaskQuery = taskService.createTaskQuery().taskAssignee(userId).active().includeProcessVariables().orderByTaskCreateTime().desc();// 设置查询条件if (StringUtils.isNotBlank(act.getProcDefKey())){todoTaskQuery.processDefinitionKey(act.getProcDefKey());}if (act.getBeginDate() != null){todoTaskQuery.taskCreatedAfter(act.getBeginDate());}if (act.getEndDate() != null){todoTaskQuery.taskCreatedBefore(act.getEndDate());}result.setCount(todoTaskQuery.count());// 查询列表List<Task> todoList = todoTaskQuery.list();for (Task task : todoList) {Flow e = new Flow();e.setTaskId(task.getId());e.setTaskDefKey(task.getTaskDefinitionKey());e.setTaskName(task.getName());e.setAssignee(task.getAssignee());e.setCreateTime(task.getCreateTime());e.setExecutionId(task.getExecutionId());e.setVars(task.getProcessVariables());ProcessDefinition pd = ProcessDefCache.get(task.getProcessDefinitionId());//源程序// e.setProcDefId(pd.getId());//修改后e.setProcDefId(task.getProcessDefinitionId());e.setProcDefname(pd.getName());e.setProcDefKey(pd.getKey());e.setProcDefversion(pd.getVersion());e.setProcInsId(task.getProcessInstanceId());e.setStatus("todo");flowList.add(e);}// =============== 等待签收的任务  ===============TaskQuery toClaimQuery = taskService.createTaskQuery().taskCandidateUser(userId).includeProcessVariables().active().orderByTaskCreateTime().desc();// 设置查询条件if (StringUtils.isNotBlank(act.getProcDefKey())){toClaimQuery.processDefinitionKey(act.getProcDefKey());}if (act.getBeginDate() != null){toClaimQuery.taskCreatedAfter(act.getBeginDate());}if (act.getEndDate() != null){toClaimQuery.taskCreatedBefore(act.getEndDate());}// 查询列表List<Task> toClaimList = toClaimQuery.list();for (Task task : toClaimList) {Flow e = new Flow();e.setTaskId(task.getId());e.setTaskDefKey(task.getTaskDefinitionKey());e.setTaskName(task.getName());e.setAssignee(task.getAssignee());e.setCreateTime(task.getCreateTime());e.setExecutionId(task.getExecutionId());e.setVars(task.getProcessVariables());ProcessDefinition pd = ProcessDefCache.get(task.getProcessDefinitionId());//源程序// e.setProcDefId(pd.getId());//修改后e.setProcDefId(task.getProcessDefinitionId());e.setProcDefname(pd.getName());e.setProcDefKey(pd.getKey());e.setProcDefversion(pd.getVersion());e.setProcInsId(task.getProcessInstanceId());e.setStatus("claim");flowList.add(e);}logger.info("==FLOWABLE LIST=="+JsonMapper.toJsonString(flowList));result.setList(flowList);return result;}

SpringBoot集成Flowable_Jsite已发任务菜单报500相关推荐

  1. SpringBoot集成Flowable_Jsite待办任务菜单报500

    JSite 快速开发框架,内置Flowable工作流引擎 · 五大基础模块 · 前后端基础代码自动生成 · 权限精确控制. 说明:此版本我已经调通,最新版本正在更新,页面未处理好,因此采用历史版本. ...

  2. SpringBoot集成Flowable_Jsite办理任务菜单报403

    JSite 快速开发框架,内置Flowable工作流引擎 · 五大基础模块 · 前后端基础代码自动生成 · 权限精确控制. 说明:此版本我已经调通,最新版本正在更新,页面未处理好,因此采用历史版本. ...

  3. Springboot集成Durid远程连接数据库一直报ERROR 1045 (28000): Access denied for user

    1.问题   Springboot集成Durid远程连接数据库时,发现一直报ERROR 1045 (28000): Access denied for user,显示密码错误,但在本地通过Navica ...

  4. SpringBoot集成Flowable_Jsite已办任务菜单报500

    JSite 快速开发框架,内置Flowable工作流引擎 · 五大基础模块 · 前后端基础代码自动生成 · 权限精确控制. 说明:此版本我已经调通,最新版本正在更新,页面未处理好,因此采用历史版本. ...

  5. Neo4j【付诸实践 01】SpringBoot集成报错org.neo4j.driver.exceptions.ClientException:服务器不支持此驱动程序支持的任何协议版本(解决+源代码)

    SpringBoot集成Neo4j调试的时候报: org.neo4j.driver.exceptions.ClientException: The server does not support an ...

  6. springboot集成redis使用redis作为session报错ClassNotFoundException类RememberMeServices

    springboot 集成redis使用redis作为缓存,会报错的问题. 错误信息: java.lang.IllegalStateException: Error processing condit ...

  7. Springboot 集成 Activiti时启动报错!'org.activiti.spring.boot.SecurityAutoConfiguration

    Springboot 集成 Activiti时启动报错! org.springframework.beans.factory.BeanCreationException: Error creating ...

  8. Springboot集成mabatis-plus报com.xly.entity.ClientNot Found TableInfoCache.

    Springboot集成mabatis-plus报com.xly.entity.ClientNot Found TableInfoCache. 在用springboot集成mabatis-plus做项 ...

  9. SpringBoot集成Redis报non null key required(已解决)

    SpringBoot集成Redis报non null key required(已解决) 注意是不是给的key值或传过来的值是不是空的,如果是空的就会报这个错 接下来将流程走下去: 1.创建Sprin ...

最新文章

  1. Eclipse无法识别(手机)设备的解决方案
  2. android text字体居中显示,Android Canvas的drawText()和文字居中方案
  3. OS中关于父子进程的执行顺序和多个子进程之间的执行顺序(整理)
  4. Understanding Spring Web Application Architecture: The Classic Way--转载
  5. android音频开发6,Android 音视频开发(一) : 通过三种方式绘制图片
  6. express中间件系统的基本实现
  7. 常见计算机蓝屏代码,常见电脑蓝屏代码大全
  8. Python之常用内置函数
  9. 计算机编程大赛报道,带你领略编程的魅力———记重庆大学程序设计大赛
  10. opencv相似图片搜索
  11. 计算机网络路由器的配置连接不上,路由器安装设置好后电脑还是不能上网解决办法...
  12. 什么是telemetry
  13. unity无光照着色器(顶点片元着色器)使用TAA抗锯齿后角色移动时模糊(虚影)解决方案
  14. 基于android的交流平台,参阅:基于android的大学生信息交流平台的设计与实现
  15. Python快速计算函数耗时timeit
  16. 上市早不如巧,深度剖析嘉楠“两个第一”的内涵
  17. php 全文搜索引擎-讯搜使用
  18. 基于Servlet+jsp+mysql开发javaWeb学生成绩管理系统
  19. prometheus:原理和部署
  20. 一个小时学会 MySQL 数据库

热门文章

  1. 霍金的遗愿清单:离开地球,警惕人工智能
  2. nginx配置文件中参数的作用
  3. priority_queueint,vectorint,greaterint优先队列,按照从小到大
  4. 关于通过dll导出类模板和函数模板
  5. 实时化或成必然趋势?新一代 Serverless 实时计算引擎
  6. 卡顿人生,如何拯救?
  7. 开放、普惠、高性能-SLS时序存储助力打造企业级全方位监控方案
  8. 《Istio 从懵圈到熟练:二分之一活的微服务》
  9. 从 DevOps 到 NoOps,Serverless 技术的落地方式探讨
  10. 我被“非结构化数据包围了”,请求支援!