# 事件定义

Camunda定时器事件(Timer Events)是由定义的计时器触发的事件。它们可以用作启动事件、中间事件或边界事件。边界事件可以中断,也可以不中断。
Camunda定时器事件包括:Timer Start Event(定时启动事件)、Timer Intermediate Catching Event(定时中间捕获事件)、Timer Boundary Event(定时边界事件)。

WARNING

定时器事件用于在给定时间创建流程实例。它既可以用于应该只启动一次的进程,也可以用于应该在特定时间间隔内启动的进程。在使用时我们需要注意以下几点

  • 子流程不能有计时器启动事件。
  • 一旦部署了流程,计时器启动事件就会被调度。没有必要调用startProcessInstanceBy…,尽管调用start进程方法是不受限制的,并且会导致在startProcessInstanceBy的时候再次启动进程…调用。
  • 当部署带有定时器启动事件的流程的更新版本时,上一版本的定时器作业会被移除。这是因为通常并不希望旧版本的流程仍然自动启动新的流程实例。

# 时间定义

# timeDate元素

该元素用于在指定时间触发定时器事件。timeDate是使用ISO 8601格式指定的开始时间。

<bpmn:timerEventDefinition id="TimerEventDefinition_14ilbim">
    <bpmn:timeCycle xsi:type="bpmn:tFormalExpression">R2/2022-02-11T09:07/PT1M</bpmn:timeCycle>
</bpmn:timerEventDefinition>

表示流程将于2022年2月11日09:07(24小时制)开始,以1分钟为间隔,共启动2次。

# timeDuration元素

该元素用于指定某一时间段后触发定时器事件。

<bpmn:timerEventDefinition id="TimerEventDefinition_1epfipx">
    <bpmn:timeDuration xsi:type="bpmn:tFormalExpression">PT3M</bpmn:timeDuration>
</bpmn:timerEventDefinition>

表示流程在任务一节点超时3分钟未处理将自动流转。

# timeCycle元素

该元素用于指定定时器触发周期,timeCycle目前有两种设置方式: ISO 8601和Cron表达式 (opens new window)

<bpmn:timerEventDefinition id="TimerEventDefinition_1epfipx">
    <bpmn:timeCycle>R2/PT1M</bpmn:timeCycle>
</bpmn:timerEventDefinition>

执行2次,每次间隔1分钟