Flowable开始事件-定时开始事件

news2024/11/24 15:57:48

文章目录

  • 定时开始事件
  • 一、定义
    • 1. 图形标记
    • 2. XML标记
      • 2.1、在指定时间点执行
      • 2.2、指定定时器之前要等待多长时间, timeDuration可以设置为timerEventDefinition的子元素。
      • 2.3、指定重复执行的间隔, 可以用来定期启动流程实例,或为超时时间发送多个提醒。timeCycle元素可以使用两种格式。
      • 2.3.1、第一种是 ISO 8601 标准的格式
      • 2.3.2、cron格式
  • 二、测试用例
    • 2.1 xml文件
    • 2.2 基于springboot的测试用例
  • 总结


定时开始事件


一、定义

定时开始事件用于在指定时间启动一个流程,或者在指定周期内循环启动多次流程,如在2023年8月25号10点发起年度目标审核流程,或每月1号启动财务结算处理流程。当满足设定的时间条件时,定时启动时间就会被触发,从而启动流程。

注意:
1、子流程中不能嵌入定时开始事件
2、 定时开始事件会自动触发流程启动,无需调用API启动流程,如果调用会启动两个流程实例
3、 如果定时开始事件的流程重新部署,新的流程定义会冲刷掉老的流程定义,定时作业也会刷新,再起自动启动流程会启动新的流程定义
4、 如果想使用定时启动事件需要开启作业任务 配置如下:configuration.setAsyncExecutorActivate(true);

注意

1. 图形标记

在这里插入图片描述

2. XML标记

定时开始事件的XML内容是普通开始事件的定义中嵌入一个定时事件。定时开始事件的定义格式如下三种形式:

2.1、在指定时间点执行

如:在2023-08-11T12:13:14执行启动该流程

<startEvent id="start">
   <timerEventDefinition>
      <timeDate>2023-08-11T12:13:14</timeDate>
    </timerEventDefinition>
</startEvent>

2.2、指定定时器之前要等待多长时间, timeDuration可以设置为timerEventDefinition的子元素。

示例:等待10天执行

<startEvent id="start">
   <timerEventDefinition>
       <timeDuration>P10D</timeDuration>
    </timerEventDefinition>
</startEvent>

2.3、指定重复执行的间隔, 可以用来定期启动流程实例,或为超时时间发送多个提醒。timeCycle元素可以使用两种格式。

2.3.1、第一种是 ISO 8601 标准的格式

示例:重复3次,每次间隔10小时

<startEvent id="start">
   <timerEventDefinition>
       <timeCycle>R3/PT10H</timeCycle>
    </timerEventDefinition>
</startEvent>

2.3.2、cron格式

示例:如每月月初启动一个任务

<startEvent id="start" >
      <timerEventDefinition>
        <timeCycle>0 0 2 1 * ?</timeCycle>
      </timerEventDefinition>
</startEvent>

二、测试用例

2.1 xml文件

<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/processdef">
  <process id="TimerStartEventProcess" name="定时开始事件示例流程" isExecutable="true">
    <!-- 定义定时开始事件 -->
    <startEvent id="start">
      <timerEventDefinition>
        <timeDuration>PT1M</timeDuration>
      </timerEventDefinition>
    </startEvent>
    <userTask id="task1" name="数据上报"></userTask>
    <endEvent id="end"></endEvent>
    <sequenceFlow id="sequenceFlow1" sourceRef="start" targetRef="task1"></sequenceFlow>
    <sequenceFlow id="sequenceFlow2" sourceRef="task1" targetRef="end"></sequenceFlow>
  </process>

  <bpmndi:BPMNDiagram id="BPMNDiagram_TimerStartEventProcess">
    <bpmndi:BPMNPlane bpmnElement="TimerStartEventProcess" id="BPMNPlane_TimerStartEventProcess">
      <bpmndi:BPMNShape bpmnElement="start" id="BPMNShape_start">
        <omgdc:Bounds height="31.0" width="31.0" x="100.0" y="150.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="task1" id="BPMNShape_task1">
        <omgdc:Bounds height="80.0" width="100.0" x="255.0" y="125.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="end" id="BPMNShape_end">
        <omgdc:Bounds height="28.0" width="28.0" x="480.0" y="151.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge bpmnElement="sequenceFlow1" id="BPMNEdge_sequenceFlow1">
        <omgdi:waypoint x="130.99994604632707" y="165.45910304473264"></omgdi:waypoint>
        <omgdi:waypoint x="255.0" y="165.13192612137203"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sequenceFlow2" id="BPMNEdge_sequenceFlow2">
        <omgdi:waypoint x="355.0" y="165.0"></omgdi:waypoint>
        <omgdi:waypoint x="480.0" y="165.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</definitions>

2.2 基于springboot的测试用例

@Slf4j
@SpringBootTest(classes = ProdFlowBpmnUiAdminApplication.class, webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
public class TimeStartEventTest extends AbstractFlowableEngine {

    @Test
    public void testTimeDuration() throws Exception{
        ProcessDefinition processDefinition = deployByClasspathResource("startEvent/TimerStartEventProcess.bpmn20.xml");

        Thread.sleep(1000*90);

        TaskQuery taskQuery = taskService.createTaskQuery().processDefinitionId(processDefinition.getId());

        List<Task> list = taskQuery.list();
        if (CollectionUtils.isNotEmpty(list)) {
            list.forEach(task -> {
                log.info("任务名称为:{}", task.getName());
            });
        }

    }
}

总结

定时启动事件,对企业规范化操作是非常有帮助的,通过梳理业务流程,我们能清晰的知道哪些审批流程在什么时间点可以自动触发,大大节约了成本,起到降本增效之目的。

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

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

相关文章

NLP的idea,看了就能水一篇论文

1.问题 在中文情感分析任务中,已有方法仅从单极、单尺度来考虑情感特征&#xff0c;无法充分挖掘和利用情感特征信息&#xff0c;模型性能不理想。 单级单尺度&#xff1a;只从一个方面学习文本的特征 多级多尺度&#xff1a;应该是分别从不同方面学习文本的特征&#xff0c…

电脑vcomp140.dll丢失怎么修复

vcomp140.dll是Microsoft的Visual C Redistributable for Visual Studio 2015的一部分。它是一个动态链接库文件&#xff0c;主要用于在Windows操作系统上运行使用Visual Studio 2015编写和编译的软件。与其他许多Windows动态链接库文件类似&#xff0c;vcomp140.dll包含函数和…

(二)CSharp-索引器

1、索引器定义 什么是索引器 索引器&#xff08;indexer&#xff09;是这样一种成员&#xff1a;它使对象能够用与数组相同的方式&#xff08;即使用下标&#xff09;进行索引 索引器的声明参见 C# 语言定义文档注意&#xff1a;没有静态索引器 索引器是一组 get 和 set 访问…

案例32:基于Springboot在线远程考试系统开题报告设计

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

地震勘探基础(十一)之水平叠加处理

水平叠加处理 地震资料经过预处理&#xff0c;静校正&#xff0c;反褶积&#xff0c;速度分析和动校正处理后就要进行水平叠加处理。地震水平叠加处理是地震常规处理的重要环节。 假设一个共中心点道集有三个地震道&#xff0c;经过速度分析和动校正以后&#xff0c;水平叠加…

【PCIE】TLP 发送三阶段和Secondary Bus Reset

TLP传输三阶段 TLP 发送的三个阶段涉及到 PCIe 协议栈中的不同层次&#xff0c;具体如下&#xff1a; TLP 发送阶段 1&#xff08;TS1&#xff09;&#xff1a;这个阶段是在传输层&#xff08;Transaction Layer&#xff09;中进行的。在这个阶段&#xff0c;TLP 数据包会进…

轻松应对大数据挑战!利用ETLCloud实现TDengine数据库的高效查询与数据迁移

TDengine 是一款开源、云原生的时序数据库&#xff0c;专为物联网、工业互联网、金融、IT 运维监控等场景设计并优化。它能让大量设备、数据采集器每天产生的高达 TB 甚至 PB 级的数据得到高效实时的处理&#xff0c;对业务的运行状态进行实时的监测、预警。 根据TDengine文档…

算法--递归--基础

定义 计算机科学中&#xff0c;递归是一种解决计算问题的方法&#xff0c;其中解决方案取决于同一类问题的更小子集 递归是一种非常高效、简洁的编码技巧&#xff0c;一种应用非常广泛的算法。 如求100以内的和 那么就等同于求10099以内的和 99以内和等同于9998以内的和 … 依…

复杂SQL优化实例

SQL语句的执行顺序&#xff1a; 执行计划指标查看 优化实例一 LIMIT 语句 分页查询是最常用的场景之一&#xff0c;但也通常也是最容易出问题的地方。比如对于下面简单的语句&#xff0c;一般 DBA 想到的办法是在 type, name, create_time 字段上加组合索引。这样条件排序都能…

面对市面上众多的商城系统,我们该如何选择?

数字化时代&#xff0c;传统的实体店铺发展进入瓶颈。越来越多的消费者选择在网上购物&#xff0c;这也催生了各种各样的电商平台和商城系统&#xff0c;如SHOP、Magento等。但是&#xff0c;对于那些想要进入电子商务领域的企业来说&#xff0c;如何选择适合自己的商城系统&am…

[BigGAN] Large Scale GAN Training for High Fidelity Natural Image Synthesis

1、目的 在大型数据集上训练class-conditional GAN&#xff0c;并探索相关的trick 2、贡献 1&#xff09;数据集的扩大使得GAN的表现也随之提升。文章的网络参数量是之前工作的2~4倍&#xff0c;batch size是之前的8倍。文章分别从两方面对performance进行提升&#xff1a;sca…

计算机视觉:语义分割理论及实战

语义分割 语义分割&#xff08;Semantic Segmentation&#xff09;是指将一张图像分割成若干个区域&#xff0c;并对每个区域赋予语义标签的任务。它是计算机视觉中的一种重要技术&#xff0c;被广泛应用于自动驾驶、医学图像分析、地理信息系统等领域。 与传统的图像分割任务…

奇安信应急响应-Linux

Linux需要经常关注的目录 /etc/passwd用户信息文件&#xff1a;我们需要看一下里面到底是什么&#xff0c;保存的用户信息 /etc/rc.d/rc.loacl&#xff1a;开机启动项&#xff1a;类似于Windows的开机启动项&#xff0c;有可能攻击者会在里面写一个后门文件&#xff0c;需要重…

EM算法实现对iris数据集和meat数据集的分类【MATLAB版本】

摘要&#xff1a;本章实验主要是对于学习 EM 算法的原理&#xff0c;掌握并实现混合高斯模型非监督学习 的 EM 算法&#xff0c;要求在两个数据集上面实现混合高斯模型的非监督学习的&#xff25;&#xff2d;算法。混合模型是相对于单高斯模型而言的&#xff0c;对于某个样本数…

【高级篇】分布式事务

分布式事务 1.分布式事务问题 1.1.本地事务 本地事务&#xff0c;也就是传统的单机事务。在传统数据库事务中&#xff0c;必须要满足四个原则&#xff1a; 1.2.分布式事务 分布式事务&#xff0c;就是指不是在单个服务或单个数据库架构下&#xff0c;产生的事务&#xff0c…

Nginx:Tomcat部署及优化(二)

Nginx&#xff1a;Tomcat部署及优化&#xff08;二&#xff09; 一、Tomcat 优化1.1 内核参数优化1.2 Tomcat 配置文件参数优化1.3 Java 虚拟机&#xff08;JVM&#xff09;调优 二、NginxTomcat 负载均衡、动静分离 一、Tomcat 优化 Tomcat 默认安装下的缺省配置并不适合生产…

9款超级实用的网页设计工具,快来看看有没有你用过的

随着网络时代的快速发展&#xff0c;游戏、购物、音乐、影视和社交网站的兴起都表明了网页设计的重要性&#xff01; 网页设计工具作为网页设计师的生产工具&#xff0c;自然要选择好的。 让我们分享9个高质量的网页设计工具&#xff0c;让您的设计效率悄然提高&#xff01; …

【Python TDD和BDD】零基础也能轻松掌握的学习路线与参考资料

Python TDD和BDD的学习路线 TDD&#xff08;测试驱动开发&#xff09;和BDD&#xff08;行为驱动开发&#xff09;在软件开发中的作用越来越受到重视。TDD通过先写测试代码&#xff0c;再编写生产代码的方式&#xff0c;使得开发者可以在开发过程中确保代码质量和正确性&#…

黑客学习-xss漏洞总结

1、什么是xss 先来看案例 在一个输入框中&#xff0c;输入js代码&#xff0c;存放alter()其弹窗,结果可以看到&#xff0c;代码成功执行。这个就是xss漏洞 XSS攻击全称跨站脚本攻击&#xff0c;是一种在Web应用中常见的安全漏洞&#xff0c;它允许用户将恶意代码植入到Web页面…

分布式事务 2PC

tip&#xff1a;作为程序员一定学习编程之道&#xff0c;一定要对代码的编写有追求&#xff0c;不能实现就完事了。我们应该让自己写的代码更加优雅&#xff0c;即使这会费时费力。 文章目录 一、简介二、2PC 的运行流程三、2PC 一定能保证数据的一致性吗&#xff1f;四、2PC 的…