SpringBoot集成Flowable_Jsite已发任务菜单报500

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;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/522680.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux按日期备份mysql,在Linux、Windows上如何按日期逻辑备份数据库

在逻辑备份数据库时&#xff0c;用户可能会希望在dmp文件中加入日期变量&#xff0c;以区分不同日期的备份文件&#xff0c;并且可以防止意外的覆盖。参考了eagle在逻辑备份数据库时&#xff0c;用户可能会希望在dmp文件中加入日期变量&#xff0c;以区分不同日期的备份文件&am…

一张图看懂阿里企业级分布式应用服务EDAS

摘要&#xff1a; 近日&#xff0c;阿里中间件&#xff08;Aliware&#xff09;的企业级分布式应用服务EDAS宣布再次升级&#xff0c;全面支持Spring Cloud应用。今后&#xff0c;使用Spring Cloud开源框架的应用可以实现0代码修改&#xff0c;即能在EDAS上平滑运行。目的是帮助…

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

JSite 快速开发框架&#xff0c;内置Flowable工作流引擎 五大基础模块 前后端基础代码自动生成 权限精确控制。 说明&#xff1a;此版本我已经调通&#xff0c;最新版本正在更新&#xff0c;页面未处理好&#xff0c;因此采用历史版本。 文章目录一、克隆/打开项目1.1. 搜索…

漫画:有趣的“帽子问题”

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 小灰来源 | 程序员小灰————— 第二天 —————主持人让三名参与者各自戴上眼罩&#xff08;看不见外界&#xff09;&#xff0c;然后随机给每个参与者戴上一顶帽子。比如下面这样&#xff1a;然后&#xff0c;主持人…

【程序员归家计划】放假回家之前拜服务器?不存在的,这才是保证程序员过好年的正确打开方式

摘要&#xff1a; 在即将到来的214情人节和举国同庆的农历春节期间&#xff0c;运维同学们应该如何才能不被公司召回&#xff0c;如何才能保证系统的正常运转&#xff1f;本文就为大家整理了自动化运维、架构升级以及安全保障的相关干货合集&#xff0c;希望能够帮助各位运维同…

秘籍分享:如何将负载均衡按量付费实例转换为包年包月实例

摘要&#xff1a; hi&#xff0c;大家好&#xff0c;今天我来教大家如何将负载均衡从按量计费实例转换成预付费&#xff08;即包年包月&#xff09;实例。 点此查看原文&#xff1a;http://click.aliyun.com/m/42583/ hi&#xff0c;大家好&#xff0c;今天我来教大家如何将负…

Flowable快速工作流脚手架_Jsite角色授权不显示

JSite 快速开发框架&#xff0c;内置Flowable工作流引擎 五大基础模块 前后端基础代码自动生成 权限精确控制。 说明&#xff1a;此版本我已经调通&#xff0c;最新版本正在更新&#xff0c;页面未处理好&#xff0c;因此采用历史版本。 文章目录一、克隆/打开项目1.1. 搜索…

中国撸串指北:13万家烧烤店的吃货最爱

戳蓝字“CSDN云计算”关注我们哦&#xff01;数据分析&#xff1a;还是更爱火锅的朱小五内容撰写&#xff1a;最爱干豆腐卷的王小九来源|凹凸数读对美食最大的肯定无疑就是那操着不同口音说出的“好吃&#xff01;”二字。——《人生一串》豆瓣短评以美食慰藉夜归人&#xff0c…

新功能:阿里云负载均衡支持访问日志功能(可能是这个星球上最好用的访问日志)...

摘要&#xff1a; 1. Greetings :) 2. 什么是负载均衡访问日志 3. 负载均衡访问日志有什么作用 4. 如何使用负载均衡访问日志功能 4.1. 开通访问日志 4.2. 查询访问日志 点此查看原文&#xff1a;http://click.aliyun.com/m/42584/ 负载均衡访问日志&#xff08;7层&#xff09…

绿联串口线linux驱动下载,绿联usb转db9驱动下载

绿联usb转db9串口线驱动是一款应用十分广泛的usb转串口驱动程序&#xff0c;本站提供的资源适用于ftdi芯片&#xff0c;具有体积小、易操作的特点&#xff0c;安装过程并不复杂&#xff0c;帮助你快速进行串口线的转换工作&#xff01;驱动介绍绿联的usb转串口线有两种&#xf…

阿里给所有卖家发福利:全球首个人工智能中文字库免费用

摘要&#xff1a; 你打开手机淘宝&#xff0c;精美的海报让你目不转睛&#xff0c;你下了单&#xff0c;从快递员手中接过商品&#xff0c;心满意足的那一刻&#xff0c;你不会想到自己在掏钱买下商品的同时也为海报买了单&#xff0c;从模特、摄影到设计师的后期处理&#xff…

第2篇:Flowable快速工作流脚手架Jsite_配置项目

接上一篇&#xff1a;第1篇&#xff1a;Flowable快速工作流脚手架Jsite_克隆项目 https://blog.csdn.net/weixin_40816738/article/details/103387442 说明&#xff1a;此版本我已经调通&#xff0c;最新版本正在更新&#xff0c;页面未处理好&#xff0c;因此采用历史版本。 文…

如何高效地准备技术面试?

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | Windson Yan来源 | www.enginego.org刚开始参加工作的时候&#xff0c;我对面试总是很恐惧&#xff0c;既担心简历无法通过初筛&#xff0c;也担心即使简历通过筛选&#xff0c;因为面试经验不多以及基础知识不扎实而导致发挥…

重要的机器学习算法

摘要&#xff1a; 本文旨在为那些获取关于重要机器学习概念知识的人们提供一些机器学习算法&#xff0c;同时免费提供相关的材料和资源。并且附上相关算法的程序实现。点此查看原文&#xff1a;http://click.aliyun.com/m/42631/本文旨在为那些获取关于重要机器学习概念知识的人…

linux红帽知识内容,RedHat基础入门(一)

Tips&#xff1a;转载自作者TedLau_R怎么说呢&#xff0c;要想学好linux&#xff0c;记命令肯定是必不可少的&#xff0c;虽然命令很多&#xff0c;但是我们不用害怕&#xff0c;其实用的一些常用的命令不算多&#xff0c;我们多刷题&#xff0c;多敲命令就一定可以学好它。当然…

如何从零开始用Keras开发一个机器翻译系统

摘要&#xff1a; 作者拥有大量的实战经验&#xff0c;快来跟着作者开发属于你自己的神经网络翻译系统吧。点此查看原文&#xff1a;http://click.aliyun.com/m/42632/机器翻译是一项非常具有挑战性的任务&#xff0c;按照传统方法是使用高度复杂的语言知识开发的大型统计模型。…

第1篇:Flowable快速工作流脚手架Jsite_克隆项目

JSite 快速开发框架&#xff0c;内置Flowable工作流引擎 五大基础模块 前后端基础代码自动生成 权限精确控制。 说明&#xff1a;此版本我已经调通&#xff0c;最新版本正在更新&#xff0c;页面未处理好&#xff0c;因此采用历史版本。 文章目录一、克隆/打开项目1. 搜索项…

基于阿里云MaxCompute实现游戏数据运营

摘要&#xff1a; 一、总览 一个游戏/系统的业务数据分析&#xff0c;总体可以分为图示的几个关键步骤&#xff1a; 1、数据采集&#xff1a;通过SDK埋点或者服务端的方式获取业务数据&#xff0c;并通过分布式日志收集系统&#xff0c;将各个服务器中的数据收集起来并送到指…

Spark精华问答 | 为什么选择Spark作为流计算引擎?

总的来说&#xff0c;Spark采用更先进的架构&#xff0c;使得灵活性、易用性、性能等方面都比Hadoop更有优势&#xff0c;有取代Hadoop的趋势&#xff0c;但其稳定性有待进一步提高。我总结&#xff0c;具体表现在如下几个方面。1Q&#xff1a;为什么选择Kafka去承担类似数据总…

linux c调用wcf服务,Silverlight+WCF实现跨域调用

在这篇文章中&#xff0c;WCF扮演服务器&#xff0c;向外提供LoginVaild服务&#xff1b;Silverlight扮演客户端&#xff0c;调用WCF提供的LoginVaild服务。思路有了&#xff0c;下面进行代码实现。数据库脚本实现新建T_User表&#xff0c;在表中添加两个字段username、passwor…