前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >flowable实现节点超时自动跳过(二)-------工作日节点超时跳过

flowable实现节点超时自动跳过(二)-------工作日节点超时跳过

作者头像
星痕
发布于 2019-11-13 13:35:42
发布于 2019-11-13 13:35:42
5K00
代码可运行
举报
文章被收录于专栏:JAVA后端开发JAVA后端开发
运行总次数:0
代码可运行

之前写过一个文章flowable实现节点超时自动跳过实现了流程超时自动跳过的功能.

但后面有朋友问我,能不能实现一个工作日自动跳过的功能,当前跳过,是非节假日的.

后面翻了一下flowable的源码,发现其实实现也是不难的.

  1. 首先要有一个节假日的接口,这个需要第三方提供, 该接口传入一个当前时间,及超时天数,计算需要超时跳过的时间.
  2. 重写日历时钟的配置,示例代码如下:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Bean
    public EngineConfigurationConfigurer<SpringProcessEngineConfiguration> customIdGeneratorConfigurer() {
        return engineConfiguration -> {
            engineConfiguration.setIdGenerator(customIdGenerator());
            engineConfiguration.setActivityBehaviorFactory(activityBehaviorFactory());
            engineConfiguration.setTransactionManager(transactionManager);
            //设置全局事件监听
            engineConfiguration.setTypedEventListeners(this.getGlobalFlowableEventListener());
            //需要先初始化时钟
            engineConfiguration.setClock(new DefaultClockImpl());
            //自定义工作日历
            engineConfiguration.setBusinessCalendarManager(this.getBusinessCalendarManager(engineConfiguration.getClock()));
        };
    }


    /**
     * 初始化日历
     * @param clock 时钟
     * @return 日历实现
     */
    private  MapBusinessCalendarManager getBusinessCalendarManager(Clock clock) {

            MapBusinessCalendarManager mapBusinessCalendarManager = new MapBusinessCalendarManager();
            mapBusinessCalendarManager.addBusinessCalendar(DurationBusinessCalendar.NAME, new DurationBusinessCalendar(clock));
            mapBusinessCalendarManager.addBusinessCalendar(DueDateBusinessCalendar.NAME, new AcDueDateBusinessCalendar(clock));
            mapBusinessCalendarManager.addBusinessCalendar(CycleBusinessCalendar.NAME, new CycleBusinessCalendar(clock));

            return mapBusinessCalendarManager;

    }

注意,上述代码中,AcDueDateBusinessCalendar是我重写日历超时的类

  1. 重写日历超时的类,示例如下:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class AcDueDateBusinessCalendar extends DueDateBusinessCalendar {
    public AcDueDateBusinessCalendar(ClockReader clockReader) {
        super(clockReader);
    }

    @Override
    public Date resolveDuedate(String duedate, int maxIterations) {
        try {
            // 这里可以调用工作日接口,返回计算后的工作日时间
            if (duedate.startsWith("P")) {
                return new DateTime(clockReader.getCurrentTime()).plus(Period.parse(duedate)).toDate();
            }

            return DateTime.parse(duedate).toDate();

        } catch (Exception e) {
            throw new FlowableException("couldn't resolve duedate: " + e.getMessage(), e);
        }
    }
}

看代码上的注释,因为我手头上没有工作日的接口,先不实现,大家就按自己的需求实现即可.

至此,工作日节点超时跳过已完成.

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Holidays:工作日、节假日管理
在处理日期相关的编程任务时,我们经常需要判断某一天是否为法定节假日、调休日或工作日。传统方法需要手动维护日期列表,不仅繁琐还容易出错。直到遇见了holidays这个神奇的库,它完美解决了这个痛点,让日期处理变得轻而易举。
luckpunk
2025/01/15
1950
Holidays:工作日、节假日管理
开源工作流引擎Flowable的面试题
Flowable是一个基于Java的开源BPM框架,它主要基于Activiti中的一些组件,并在此基础上进行了扩展和升级。以下是Flowable的设计原理及架构解析:
jack.yang
2025/04/05
1360
判断当前时间是否是法定节假日或工作日
resources 目录下(与application.properties配置文件同级)新建一个文件 holiday.txt
时间静止不是简史
2022/05/06
6.2K0
activit5升到flowable后的全局设置的修改
用activiti做流程引擎时,我们需要定制一些全局配置,如主键的生成规则,全局事件等。 在activiti5中,是这样实现的
星痕
2018/12/07
1.3K0
JAVA判断当前日期是否是工作日,还是节假日
在使用hutool工具包的时候,发现hutool工具包无法判断是否是工作日还是节假日(因为每年节假日各不相同,所以自己写了一个) 当前只有2021年的数据,后续的数据需要等国务院发布 节假日数据来源:国务院办公厅关于2021年部分节假日安排的通知
卢衍飞
2023/02/16
2.2K0
工作日、工作小时的一种非常简单的计算方式
有些业务流程复杂,环节多样。为了看清整个业务的进展,往往需要对各个环节设定预计完成时间开销,然后在用这个是时间去考核实际业务开展的效率。
普通程序员
2019/12/29
1.7K0
获取上下一个工作日实践
其实这个文章个人之前有进行过发布和讨论,在上一篇文章中,介绍了如何通过postgresql数据库的sql语句构建一个工作日的表,并且介绍如何使用sql语法获取某一天往前或者往后的工作日或者自然日,但是实际阅读之后发现缺少了很多细节,故这里重新梳理一下整个过程,希望可以给读者一个参考。
阿东
2021/12/20
7930
获取上下一个工作日实践
python判断工作日,节假日
https://pypi.org/project/chinesecalendar/
py3study
2020/09/09
8.2K0
Python生成中国节假日工作表,快速给数据库内生成工作日历
有时候,我们处理一些业务,比如:计算员工请假的时间工作日;就需要数据库内存在一张工作日历,记录调休和节假日。
Mintimate
2024/08/11
9310
Python生成中国节假日工作表,快速给数据库内生成工作日历
flowable实现节点超时自动跳过
不论是flowable还是activiti,都可以快速的实现节点超时自动跳过,主要是使用边缘事件
星痕
2019/05/05
9.8K5
Golang如何实现节假日不打扰用户?
这里我们利用下json转golang struct的小工具,把接口返回的json转成golang的代码
壮壮熊
2023/01/17
1.5K0
Golang如何实现节假日不打扰用户?
计算在工作日时间推迟时间的算法
本文为仙士可原创文章,转载无需和我联系,但请注明来自仙士可博客www.php20.cn
仙士可
2022/09/13
8750
计算在工作日时间推迟时间的算法
iOS 工作日——过滤法定节假日日历提醒的实现
笔者五一之前补班的时候,闹钟没响,早上差点迟到了。笔者闹钟设置的是周一到周五,iPhone没有法定节假日的设置,也没有补休的设置。。。。笔者就想要解决这个痛点,梦想着,要是做出来了,发布到商店,从此走上人生巅峰,赢取白。。。。
莫空9081
2021/06/15
6.8K0
节假日API调用失效,看我如何解决!
上一篇博客为大家分享了Kettle的骚操作——生成年度节假日表,其中在JS代码中调用了节假日API。
大数据梦想家
2021/01/27
2.7K0
节假日API调用失效,看我如何解决!
prophet Seasonality, Holiday Effects, And Regressors季节性,假日效应和回归
https://github.com/lilihongjava/prophet_demo/tree/master/seasonality_holiday_effects__regressors
lovelife110
2021/01/14
2.6K0
prophet Seasonality, Holiday Effects, And Regressors季节性,假日效应和回归
Python 自带的日期日历处理大师:calendar 库
在 Python 开发中,我们经常需要处理日期和时间。虽然 datetime 库是最常用的选择,但其实 Python 标准库中的 calendar 模块也是一个强大的工具,特别适合处理日历相关的计算和展示。
Piper破壳
2024/12/22
1060
Quartz.net官方开发指南 第四课:关于Triggers更多内容
同Job一样,trigger非常容易使用,但它有一些可选项需要注意和理解,同时,trigger有不同的类型,要按照需求进行选择。 Calendars——日历 Quartz Calendar对象在trigger被存储到scheduler时与trigger相关联。Calendar对于在trigger触发日程中的采用批量世间非常有用。例如:你想要创建一个在每个工作日上午9:30触发一个触发器,那么就添加一个排除所有节假日的日历。 Calendar可以是任何实现Calendar接口的序列化对象。看起来如下;
张善友
2018/01/19
1K0
[DeepSeek]代码智能的新纪元:深度解析DeepSeek Coder的能力边界
在人工智能辅助编程的快速发展中,DeepSeek Coder作为中国本土的代码大模型,凭借其出色的编程能力在全球范围内引起广泛关注。本文将深入剖析DeepSeek Coder的技术原理、能力边界以及未来发展潜力,探讨AI辅助编程的新纪元。
远方2.0
2025/03/25
1250
[DeepSeek]代码智能的新纪元:深度解析DeepSeek Coder的能力边界
Pandas 2.2 中文官方教程和指南(二十一·三)
这种切片方式也适用于具有DatetimeIndex的DataFrame。由于部分字符串选择是一种标签切片的形式,端点将被包括在内。这将包括在包含日期上匹配时间:
ApacheCN_飞龙
2024/05/24
2330
Flowable学习笔记(二、BPMN 2.0-基础 )
业务流程模型和标记法(BPMN, Business Process Model and Notation)是一套图形化表示法,用于以业务流程模型详细说明各种业务流程。
三分恶
2020/07/16
4.7K0
推荐阅读
相关推荐
Holidays:工作日、节假日管理
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验