flowable流程节点状态构造

这篇具有很好参考价值的文章主要介绍了flowable流程节点状态构造。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

    public Result<List<TaskDetailVO>> record(@PathVariable("processInstanceId") String processInstanceId){
        List<Comment> processInstanceComments = taskService.getProcessInstanceComments(processInstanceId);
        Map<String, List<Comment>> commentsMap = processInstanceComments.stream()
                .collect(Collectors.groupingBy(Comment::getTaskId));
        List<Attachment> processInstanceAttachments = taskService.getProcessInstanceAttachments(processInstanceId);
        Map<String, List<Attachment>> attachmentMap = processInstanceAttachments.stream()
                .collect(Collectors.groupingBy(Attachment::getTaskId));
        List<HistoricActivityInstance> list = historyService.createHistoricActivityInstanceQuery().processInstanceId(processInstanceId).orderByHistoricActivityInstanceStartTime().asc().list();
        List<TaskDetailVO> taskDetailVOS= new ArrayList<>();
        for (HistoricActivityInstance historicActivityInstance : list) {
            if("userTask".equals(historicActivityInstance.getActivityType())){
                List<Comment> comments = commentsMap.get(historicActivityInstance.getTaskId());
                if(CollUtil.isNotEmpty(comments)){
                    for (Comment comment : comments) {
                        if(OPINION_COMMENT.equals(comment.getType())){
                            TaskDetailVO taskDetailVO= new TaskDetailVO();
                            taskDetailVO.setTaskId(historicActivityInstance.getTaskId());
                            taskDetailVO.setActivityId(historicActivityInstance.getActivityId());
                            taskDetailVO.setName(historicActivityInstance.getActivityName());
                            taskDetailVO.setCreateTime(historicActivityInstance.getStartTime());
                            taskDetailVO.setEndTime(historicActivityInstance.getEndTime());
                            taskDetailVO.setComment(comment.getFullMessage());
                            taskDetailVO.setUser(getUserInfoVo(historicActivityInstance.getAssignee()));
                            taskDetailVO.setStatus(Objects.equals(historicActivityInstance.getDeleteReason(), "拒绝")?2:1);
                            List<Attachment> attachments = attachmentMap.get(historicActivityInstance.getTaskId());
                            List<AttachmentVO> attachmentVOList = new ArrayList<>();
                            if(attachments!=null){
                                for (Attachment attachment : attachments) {
                                    AttachmentVO attachmentVO = new AttachmentVO();
                                    attachmentVO.setId(attachment.getId());
                                    attachmentVO.setName(attachment.getName());
                                    attachmentVO.setUrl(attachment.getUrl());
                                    attachmentVOList.add(attachmentVO);
                                }
                            }
                            for (Comment comment1 : comments) {
                                if(SIGN_COMMENT.equals(comment1.getType())){
                                    taskDetailVO.setSignImage(comment1.getFullMessage());
                                }
                            }

                            taskDetailVO.setAttachmentVOList(attachmentVOList);
                            taskDetailVOS.add(taskDetailVO);
                        }
                    }
                }else{
                    TaskDetailVO taskDetailVO= new TaskDetailVO();
                    taskDetailVO.setTaskId(historicActivityInstance.getTaskId());
                    taskDetailVO.setActivityId(historicActivityInstance.getActivityId());
                    taskDetailVO.setName(historicActivityInstance.getActivityName());
                    taskDetailVO.setCreateTime(historicActivityInstance.getStartTime());
                    taskDetailVO.setEndTime(historicActivityInstance.getEndTime());
                    if(Objects.equals(historicActivityInstance.getActivityName(), "发起人")){
                        // 查发起人的信息
                        HistoricProcessInstance historyProcessInstance  = historyService.createHistoricProcessInstanceQuery().processInstanceId(historicActivityInstance.getProcessInstanceId()).singleResult();
                        taskDetailVO.setUser(getUserInfoVo(historyProcessInstance.getStartUserId()));
                        taskDetailVO.setStatus(-1);
                    }else{
                        taskDetailVO.setUser(getUserInfoVo(historicActivityInstance.getAssignee()));
                        taskDetailVO.setStatus(0);
                    }
                    taskDetailVO.setComment("");
                    taskDetailVOS.add(taskDetailVO);
                }
            }
        }
        return Result.OK(taskDetailVOS);
    }

接口返回示例

{
    "success": true,
    "message": "操作成功!",
    "code": 200,
    "result": [
        {
            "taskId": "1747191729082482688",
            "activityId": "root",
            "name": "发起人",
            "createTime": "2024-01-16T17:39:04.117+08:00",
            "endTime": "2024-01-16T17:39:04.385+08:00",
            "signImage": null,
            "attachmentVOList": null,
            "optionVOList": null,
            "commentVOList": null,
            "comment": "",
            "user": {
                "id": "1",
                "name": "张三",
                "type": "user",
                "sex": "1",
                "selected": true
            },
            "status": null
        },
        {
            "taskId": "1747191730344968192",
            "activityId": "node_417233798091",
            "name": "审批人",
            "createTime": "2024-01-16T17:39:04.422+08:00",
            "endTime": "2024-01-16T19:31:09.651+08:00",
            "signImage": null,
            "attachmentVOList": [],
            "optionVOList": null,
            "commentVOList": null,
            "comment": "同意",
            "user": {
                "id": "2",
                "name": "张四",
                "type": "user",
                "sex": "1",
                "selected": true
            },
            "status": true
        },
        {
            "taskId": "1747219938314448896",
            "activityId": "node_223911503301",
            "name": "审批人",
            "createTime": "2024-01-16T19:31:09.725+08:00",
            "endTime": null,
            "signImage": null,
            "attachmentVOList": null,
            "optionVOList": null,
            "commentVOList": null,
            "comment": "待审批",
            "user": {
                "id": "5",
                "name": "晓华",
                "type": "user",
                "sex": "1",
                "selected": true
            },
            "status": null
        }
    ],
    "data": null,
    "timestamp": 1705406600461
}

前端展示效果
flowable流程节点状态构造,flowable文章来源地址https://www.toymoban.com/news/detail-809304.html

到了这里,关于flowable流程节点状态构造的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Activiti,Flowable,Camunda流程引擎对比

            市场上比较有名的开源流程引擎有osworkflow、jbpm、activiti、flowable、camunda。其中:Jbpm4、Activiti、Flowable、camunda四个框架同宗同源,祖先都是Jbpm4,开发者只要用过其中一个框架,基本上就会用其它三个。osworkflow目前功能简单,目前已处于不活跃状态,此处就不展开描

    2024年02月03日
    浏览(40)
  • flowable流程移植新项目前端问题汇总

    flowable流程移植到新项目时,出现一些前端问题,汇总如下: PS F:khxmNBCIO_VUE yarn run serve yarn run v1.21.1 $ vue-cli-service serve  INFO  Starting development server...  ERROR  Error:  Vue packages version mismatch: - vue@2.6.11 (F:khxmNBCIO_VUEnode_modulesvuedistvue.runtime.common.js) - vue-template-compiler@2.7.14 (F:

    2024年02月12日
    浏览(40)
  • 工作流程引擎之flowable(集成springboot)

    现状:公司各部门业务系统有各自的工作流引擎,也有cross function的业务在不同系统或OA系统流转,没有统一的去规划布局统一的BPM解决方案,近期由于一个项目引发朝着整合统一的BPM方案,特了解一下市面上比较主流的开源和收费的工作流引擎。本文主要介绍开源的工作流引

    2024年02月08日
    浏览(31)
  • ruoyi-nbcio-plus基于vue3的flowable增加开始节点的表单绑定修改

    更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 http://122.227.135.243:9666/ 更多nbcio-boot功能请看演示系统  gitee源代码地址 后端代码: https://gitee.com/nbacheng/nbcio-boot 前端代码:https://gitee.com/nbacheng/nbcio

    2024年03月23日
    浏览(45)
  • springboot,Flowable 流程实例的激活与挂起(一)

    要实现流程实例的挂起和激活,首先要知道什么是流程实例的挂起和激活。 挂起: ①一个定义好的 流程模板(流程定义) ,如果挂起了,那么就无法据此创建新的流程实例。 ② 一个 流程实例 如果挂起了,那么就无法执行流程中的任务。 激活: 就跟挂起是相反的。 1.查询

    2024年02月05日
    浏览(40)
  • Springboot +Flowable,详细解释啥叫流程实例(一)

    上一篇中学习了Flowable 中的流程模板(流程定义)的部署问题,这一篇来学习什么叫流程实例。 部署之后的流程模板,还不能直接运行,例如我们部署了一个请假流程,现在 张三想要请假,他就需要开启一个请假流程,李四 想请假,他也需要开启一个请假流程,这开启的请

    2024年02月01日
    浏览(34)
  • Springboot +Flowable,详细解释啥叫流程实例(二)

    上一篇中学习了Flowable 中的流程模板(流程定义)的部署问题,这一篇来学习什么叫流程实例。 部署之后的流程模板,还不能直接运行,例如我们部署了一个请假流程,现在 张三想要请假,他就需要开启一个请假流程,李四 想请假,他也需要开启一个请假流程,这开启的请

    2024年02月02日
    浏览(35)
  • Spring Boot 整合流程引擎 Flowable,so easy

    为啥想写 flowable 呢?原因很简单,因为最近在录的 tienchin 项目视频会用到,先写一篇文章和大家打打预防针,后面视频再细讲。 流程引擎,也算是一个比较常见的工具了,我们在日常的很多开发中都会用到,当然用的最多的就是 OA 系统了,但是在一些非 OA 系统中,我们也

    2024年02月07日
    浏览(39)
  • Springboot +Flowable,通过代码绘制流程图并设置高亮

    通过代码绘制一张流程图,并设置成高亮。 首先先来看一下绘制出来的效果图,截图如下: 已经执行的节点和连线用红色标记出来,大致上就是这么一个效果。 将一个流程图绘制成图片,相关的 API 在 flowable 中其实都是有提供的,流程图片的绘制,是根据流程的定义来绘制

    2024年02月02日
    浏览(46)
  • 基于jeecg-boot的flowable流程跳转功能实现

    更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码: https://gitee.com/nbacheng/nbcio-boot 前端代码:https://gitee.com/nbacheng/nbcio-vue.git 在线演示(包括H5) : http://122.227.135.243:9888       今天我们实现nbcio-boot的flowable的流程跳转功能。 一、前端实现 界面实现,就是点击跳转出来

    2024年02月11日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包