前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【问题篇】activiti工作流转办并处理备注问题

【问题篇】activiti工作流转办并处理备注问题

作者头像
小z666
发布于 2024-06-21 09:37:31
发布于 2024-06-21 09:37:31
18200
代码可运行
举报
文章被收录于专栏:javajava
运行总次数:0
代码可运行

互相学习交流

当处理activiti转办问题时,需要做的就是处理审批人和备注问题。

处理的思路是,先将当前环节标志成转办标签,再通过BUSINESS_KEY_找到流程实例的历史记录,找到最新的一条复制一份出来,表示需要转办到的人的历史记录并设置好审批人(默认转办人的环节‘单位领导’也是做转办人的环节名字,如不是则手动处理下),在更换当前流程的审批人,将任务分到转办人那里去,再将原来最新的历史记录处理掉(通过修改endTime改为处理完成,并将主键进行替换,为了将他隔离开,不与复制出来的id冲突,再通过同样的方式进行comment表的处理并将comment表新增的记录与上面的相关)。

代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public Boolean giveOther(String taskId, String userCode, String message) {

        // 先查任务
        Task task = activitiService.loadTaskInfo(taskId);
        if (task == null) {
            throw new BusinessException("任务不存在");
        }

        task.setDescription("转办");
        taskService.saveTask(task);

        boolean result = false;
        if (!StringUtils.isEmpty(taskId)) {

            // 查询最新的审批记录
            List<ActHiTaskInst> list = jt.queryForBeans(ActHiTaskInst.class, " SELECT\n" +
                    "\ta.* \n" +
                    "FROM\n" +
                    "\t`act_hi_taskinst` AS a\n" +
                    "\tLEFT JOIN act_hi_procinst AS b ON b.PROC_INST_ID_ = a.PROC_INST_ID_ \n" +
                    "\twhere b.BUSINESS_KEY_ = ?\n" +
                    "ORDER BY\n" +
                    "\ta.START_TIME_ DESC ", taskId);
            ActHiTaskInst oldHiTaskInst = list.get(0);

            // 复制一份最新的
            ActHiTaskInst hiTaskInst = new ActHiTaskInst();
            BeanUtils.copyProperties(oldHiTaskInst, hiTaskInst);
            hiTaskInst.setASSIGNEE_(userCode);
            //hiTaskInst.setNAME_("转办");
            hiTaskInst.setASSIGNEE_(userCode);
            hiTaskInst.setSTART_TIME_(new Date());
            actHiTaskInstRepo.save(hiTaskInst);

            // 更换审核人
            taskService.setAssignee(taskService.createTaskQuery().processInstanceBusinessKey(taskId).list().get(0).getId(), userCode);

            // 先处理原来的
            String id = UUIDUtil.getUUID();

            oldHiTaskInst.setEND_TIME_(new Date());
            oldHiTaskInst.setID_(id);
            actHiTaskInstRepo.save(oldHiTaskInst);

            // 处理备注
            // 查询最新的备注记录
            List<ActHiComment> list2 = jt.queryForBeans(ActHiComment.class, " SELECT\n" +
                    "\ta.* \n" +
                    "FROM\n" +
                    "\t`act_hi_comment` AS a\n" +
                    "\tLEFT JOIN act_hi_taskinst AS b ON a.PROC_INST_ID_ = b.PROC_INST_ID_ \n" +
                    "WHERE\n" +
                    "\ta.TASK_ID_ = ?\n" +
                    "ORDER BY\n" +
                    "\tb.START_TIME_ DESC ", hiTaskInst.getID_());
            ActHiComment oldActHiComment = list2.get(0);

            // 复制一份备注记录
            ActHiComment actHiComment = new ActHiComment();
            BeanUtils.copyProperties(oldActHiComment, actHiComment);

            actHiComment.setTASK_ID_(id);// 作为老的转办提出人的备注
            actHiComment.setMESSAGE_(message);
            actHiComment.setTYPE_("comment");
            actHiComment.setFULL_MSG_(message.getBytes(StandardCharsets.UTF_8));
            actHiCommentRepo.save(actHiComment);

            result = true;
        }
        return result;
    }
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Entity
@Table(name = "act_hi_taskinst")
@DynamicInsert
@DynamicUpdate
@Data
public class ActHiTaskInst {

    @Id
    @Column(name = "ID_")
    private String ID_;

    @Column(name = "PROC_DEF_ID_")
    private String PROC_DEF_ID_;

    @Column(name = "TASK_DEF_KEY_")
    private String TASK_DEF_KEY_;

    @Column(name = "PROC_INST_ID_")
    private String PROC_INST_ID_;

    @Column(name = "EXECUTION_ID_")
    private String EXECUTION_ID_;

    @Column(name = "NAME_")
    private String NAME_;

    @Column(name = "PARENT_TASK_ID_")
    private String PARENT_TASK_ID_;

    @Column(name = "DESCRIPTION_")
    private String DESCRIPTION_;

    @Column(name = "OWNER_")
    private String OWNER_;

    @Column(name = "ASSIGNEE_")
    private String ASSIGNEE_;

    @Column(name = "START_TIME_")
    private Date START_TIME_;

    @Column(name = "CLAIM_TIME_")
    private String CLAIM_TIME_;

    @Column(name = "END_TIME_")
    private Date END_TIME_;

    @Column(name = "DURATION_")
    private String DURATION_;

    @Column(name = "DELETE_REASON_")
    private String DELETE_REASON_;

    @Column(name = "PRIORITY_")
    private String PRIORITY_;

    @Column(name = "DUE_DATE_")
    private String DUE_DATE_;

    @Column(name = "FORM_KEY_")
    private String FORM_KEY_;

    @Column(name = "CATEGORY_")
    private String CATEGORY_;

    @Column(name = "TENANT_ID_")
    private String TENANT_ID_;

}

save方法是采用jpa的方式,可自行采用项目对应的方式使用。taskService是activiti的api。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-02-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Activiti 开发案例之数据库表结构说明
ACT_RU_IDENTITYLINK:任务参与者数据表,主要存储当前节点参与者的信息。
小柒2012
2019/12/05
1.4K0
【第六篇】Flowable核心流程操作的本质
业务流程定义数据表。此表和ACT_RE_DEPLOYMENT是多对一的关系,即,一个部署的bar包里可能包含多个流程定义文件,每个流程定义文件都会有一条记录在ACT_REPROCDEF表内,每个流程定义的数据,都会对于ACT_GE_BYTEARRAY表内的一个资源文件和PNG图片文件。和ACT_GE_BYTEARRAY的关联是通过程序用ACT_GE_BYTEARRAY.NAME与ACT_RE_PROCDEF.NAME_完成的
用户4919348
2022/04/13
1.4K0
【第六篇】Flowable核心流程操作的本质
Activiti 工作流中的表,原来表示的是这些
前几天,阿粉给大家说了关于 Activiti 的使用,后台就有好友私信阿粉说,这些表都不知道是什么意思,不行呀,看不明白呀,于是阿粉就打算再这次给大家讲一下关于 Activiti 的这些表中的字段都是表示的什么意思。
Java极客技术
2022/12/02
1.9K0
Activiti 工作流中的表,原来表示的是这些
SpringBoot整合Activiti工作流
新建springBoot项目时勾选activiti,或者在已建立的springBoot项目添加以下依赖:
用户4283147
2022/10/27
5750
SpringBoot整合Activiti工作流
Flowable-表结构
4)流程定义、流程模板相关表(3个,RepositoryService接口操作的表)
用户10325771
2023/11/06
5320
Activiti5工作流笔记一
  网上工作流的定义一大堆,这里就不去复制了,通俗的理解,工作流就是类似OA系统中请假审批、报销审批等一系列流程,下级提交的申请只有直系领导才能审批,其他人是没有权限的,而只有直系领导审批通过后,直系领导的直系领导才可以看到申请,并进行审批,以此类推。。。
HUC思梦
2020/09/03
7940
Activiti5工作流笔记一
Spring Boot + flowable 快速实现工作流
来源:https://blog.csdn.net/duan18888/article/details/124881904 今天分享一个不错的工作流引擎:flowable! 1. flowable-ui部署运行 flowable-6.6.0 运行 官方demo 参考文档: “ https://flowable.com/open-source/docs/bpmn/ch14-Applications/ ” 1、从官网下载flowable-6.6.0 : https://github.com/flowable/fl
程序猿DD
2023/04/04
1.3K0
Spring Boot + flowable 快速实现工作流
Flowable数据库
Flowable的所有数据库表都以ACT_开头。第二部分是说明表用途的两字符标示符。服务API的命名也大略符合这个规则。 ACT_RE_*: ‘RE’代表 repository 。带有这个前缀的表包含“静态”信息,例如流程定义与流程资源(图片、规则等)。 ACT_RU_*: ‘RU’代表 runtime 。这些表存储运行时信息,例如流程实例(process instance)、用户任务(user task)、变量 (variable)、作业(job)等。Activiti只在流程实例运行中保存运行时数据,并在流程实例结束时删除记录。这样保证运行时表小和 快。 ACT_ID_*: ‘ID’代表 identity 。这些表包含身份信息,例如用户、组等。 ACT_HI_*: ‘HI’代表 history 。这些表存储历史数据,例如已完成的流程实例、变量、任务等。 ACT_GE_*: 通用数据。用于不同场景下。
全栈程序员站长
2022/08/26
5480
Activiti开发案例之工作流任务数据统计
工作流可以提高企业运营效率、改善企业资源利用、提高企业运作的灵活性和适应性、提高工作效率、集中精力处理核心业务、跟踪业务处理过程、量化考核业务处理的效率、减少浪费、增加利润、充分发挥现有计算机网络资源的作用。实施工作流将达到缩短企业运营周期、改善企业内(外)部流程、优化并合理利用资源、减少人为差错和延误,提高劳动生产率等目的。
小柒2012
2019/12/05
1.4K0
activit 表结构 flowable也大体适用
’RE’表示repository(存储),RepositoryService接口所操作的表。带此前缀的表包含的是静态信息,如,流程定义,流程的资源(图片,规则等)。
FHAdmin
2022/03/01
4520
SpringBoot整合Activiti工作流(附源码)
Activiti是一个开源的工作流引擎,它实现了BPMN 2.0规范,可以发布设计好的流程定义,并通过api进行流程调度。Activiti 作为一个遵从 Apache 许可的工作流和业务流程管理开源平台,其核心是基于 Java 的超快速、超稳定的 BPMN2.0 流程引擎,强调流程服务的可嵌入性和可扩展性,同时更加强调面向业务人员。
搜云库技术团队
2020/01/16
12.5K0
SpringBoot整合Activiti工作流(附源码)
flowable工作流所有业务概念
说起flowable还来自于activiti,因为activiti内部工作人员不合,一大堆小伙伴相约出去创业了。但是锅还是原来的锅,只不过做饭的方式不同了。所以在思想上,flowable与activiti相差不大。只不过功能更加强大了。
全栈程序员站长
2022/08/25
3.9K0
flowable工作流所有业务概念
Flowable表结构解析:深入理解工作流引擎的数据存储设计
Flowable作为一款强大的开源业务流程管理(BPM)引擎,其数据库表结构设计体现了模块化、高效性和可扩展性。本文将从表命名规则、核心引擎表结构及功能模块表三个方面,全面解析Flowable的数据库表设计。
没事学点编程小知识
2025/03/10
3700
Flowable表结构解析:深入理解工作流引擎的数据存储设计
【问题篇】activiti工作流流程图更新后旧数据问题
找到通过NAME_字段找到目标流程定义,再通过VERSION_字段定位到最新的图版本。
小z666
2024/06/21
7040
【问题篇】activiti工作流流程图更新后旧数据问题
Activiti工作流杂谈-工作机制详解
以下内容为博主在公司内部分享的一个小文档,谈到了activiti的各方面内容,有需要的可留言要word原文件 
kl博主
2018/04/13
3.7K2
Activiti工作流杂谈-工作机制详解
【云+社区年度征文】Activiti7流程框架基础功能详细讲解
但是阿里云的Maven仓库里面是有的,只是名字不同而已,所以我们需要去重新导入这些依赖.并且M5的版本存在一个bug就是每次项目之后都会在 act_re_deployment表里面插入一条数据SpringAutoDeployment ,所以建议大家使用M4的版本
萌萌哒的瓤瓤
2020/12/18
1.5K0
【云+社区年度征文】Activiti7流程框架基础功能详细讲解
FLOWABLE流程引擎分析
历史:  flowable工作流引擎是从jboss的jbpm->alfresco的activiti->flowable 逐步演化过来的, 核心开发人员是同一个团队. 都是因为与原公司的设计理念存在分歧,导致两次出走. flowable自16年fork之后,已经成为一个活跃的社区,逐步赢得的许多工作流引擎使用者的青睐.
小锋学长生活大爆炸
2021/06/29
2K0
activiti工作流框架_springboot工作流框架
Activiti是一个项目的名称,Alfresco软件在2010年5月17日宣布Activiti业务流程管理(BPM)开源项目的正式启动,其首席架构师由业务流程管理BPM的专家 Tom Baeyens担任。
全栈程序员站长
2022/09/27
8610
activiti工作流框架_springboot工作流框架
Activiti7的api查询(实时更新)
学习activiti,就是学习使用java代码操作25张表; java代码中我们调用Activiti的工具类;
一写代码就开心
2022/05/27
3K0
Activiti7的api查询(实时更新)
Spring和Activiti工作流整合详解
Activiti作为一个流行的开源工作流引擎,正在不断发展,其6.0版本以API形式提供服务,而之前版本基本都是要求我们的应用以JDK方式与其交互,只能将其携带到我们的应用中,而API方式则可以服务器独立运行方式,能够形成一个专网内工作流引擎资源共享的方式。
品茗IT
2019/09/12
1.1K0
相关推荐
Activiti 开发案例之数据库表结构说明
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验