前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【第九篇】Camunda系列-事件篇-定时器事件

【第九篇】Camunda系列-事件篇-定时器事件

作者头像
用户4919348
发布2022-10-28 11:29:07
1.7K0
发布2022-10-28 11:29:07
举报
文章被收录于专栏:波波烤鸭波波烤鸭
在这里插入图片描述
在这里插入图片描述

事件篇

事件(event)通常用于为流程生命周期中发生的事情建模。事件总是图形化为圆圈。在BPMN 2.0中,有两种主要的事件分类:*捕获(catching)抛出(throwing)*事件。

  • 捕获: 当流程执行到达这个事件时,会等待直到触发器动作。触发器的类型由其中的图标,或者说XML中的类型声明而定义。捕获事件与抛出事件显示上的区别,是其内部的图标没有填充(即是白色的)。
  • 抛出: 当流程执行到达这个事件时,会触发一个触发器。触发器的类型,由其中的图标,或者说XML中的类型声明而定义。抛出事件与捕获事件显示上的区别,是其内部的图标填充为黑色。

1. 定时器事件

  定时触发的相关事件,包括定时器启动事件,定时器捕获中间件事件,定时器边界事件

1.1 定时器启动事件

  定时器启动事件(timer start event)在指定时间创建流程实例。在流程只需要启动一次,或者流程需要在特定的时间间隔重复启动时,都可以使用。

*请注意:*子流程不能有定时器启动事件。

*请注意:*定时器启动事件,在流程部署的同时就开始计时。不需要调用startProcessInstanceByXXX就会在时间启动。调用startProcessInstanceByXXX时会在定时启动之外额外启动一个流程。

*请注意:*当部署带有定时器启动事件的流程的更新版本时,上一版本的定时器作业会被移除。这是因为通常并不希望旧版本的流程仍然自动启动新的流程实例。

定时器启动事件,用其中有一个钟表图标的圆圈来表示。我们通过具体案例来介绍

在这里插入图片描述
在这里插入图片描述

部署流程后等待到具体的时间,我们查看任务即可

在这里插入图片描述
在这里插入图片描述

时间定义这块使用的是 https://en.wikipedia.org/wiki/ISO_8601#Dates ISO 8601 格式

上面我们是通过指定固定时间来启动的,我们也可以通过duraction间隔时间来处理。

在这里插入图片描述
在这里插入图片描述

通过间隔的方式来启动。

timeCycle:指定重复周期,可用于周期性启动流程,或者为超期用户任务多次发送提醒,这个元素可以使用两种格式

  • 第一种是按照ISO 8601标准定义的循环时间周期。例如(三次重复间隔,每次间隔为10小时):R3/PT10H
  • 也可以使用timeCycle的可选属性endDate,或者像这样直接写在时间表达式的结尾:R3/PT10H/${EndDate}。 当到达endDate时,应用会停止,并为该任务创建其他作业
  • 也可以通过cron表达式来处理

案例:重复时间设置为 R3PT30S 重复3次,间隔30描述,自动任务绑定的是JavaDelegate

代码语言:javascript
复制
public class MyJavaDelegate implements JavaDelegate {
    @Override
    public void execute(DelegateExecution execution) throws Exception {
        System.out.println("MyJavaDelegate:执行了。。。"+ LocalDateTime.now().toString());
    }
}
在这里插入图片描述
在这里插入图片描述

在控制台可以看到对应的效果

在这里插入图片描述
在这里插入图片描述

也可以指定结束时间

代码语言:javascript
复制
      <timerEventDefinition>
        <timeCycle>R3/PT30S/2022-03-28T21:46:11+00:00</timeCycle>
      </timerEventDefinition>

此外还可以通过cron表达式来处理:

代码语言:javascript
复制
0 0/5 * * * ?

每隔5秒启动

1.2 定时器中间事件

  在我们具体的流程处理中,A节点处理完成后,定时触发B节点的处理。

在这里插入图片描述
在这里插入图片描述

1.3 定时器边界事件

  人工任务1如果在定义的2022-09-27T23:36:14这个时间之前还没有处理,那么就会触发定时边界事件,从而从人工任务3.

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-10-15,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 事件篇
    • 1. 定时器事件
      • 1.1 定时器启动事件
      • 1.2 定时器中间事件
      • 1.3 定时器边界事件
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档