疯狂Activiti6.0连载(23)BPMN事件分类与事件定义

本文详细介绍了BPMN2.0中的事件分类,包括开始事件、结束事件、中间事件和边界事件,并深入讲解了各种事件定义,如定时器事件、错误事件、信号事件、消息事件、取消事件和补偿事件。通过实例展示了如何配置这些事件定义,如定时器事件的timeDate、timeDuration和timeCycle,以及cron表达式的使用。此外,还提及了错误事件的errorRef和信号事件的signalRef属性。文章最后提到了Activiti6对这些事件的支持情况。
摘要由CSDN通过智能技术生成

 本文节选自《疯狂Workflow讲义(第2版)》

工作流Activiti6电子书http://blog.csdn.net/boxiong86/article/details/78488562

工作流Activiti6教学视频http://blog.csdn.net/boxiong86/article/details/78608585

事件分类与事件定义

BPMN2.0规定了多种的事件定义,这些事件定义被嵌套到不同的事件中,则可以成为不同类型的事件,这些事件具有不同的特性,并BPMN2.0规定了这些事件允许出现的位置以及其作用,本小节将对BPMN2.0规范定义的事件进行分类。

按照事件的位置分类

对事件按照位置进行分类,主要可分为开始事件、中间事件和结束事件,其中中间事件可以分为两类:单独作为流程节点的中间事件依附在某个流程节点的中间事件本书中所讲的中间事件是指单独作为流程节点的事件,依附在某个流程节点的中间事件,本书将称为边界事件,那么按照位置进行分类,本书将会有以下4种类型的流程事件:

      开始事件:表示流程开始的事件。

      结束事件:表示流程结束的事件。

      中间事件:出现在流程中,单独作为流程节点的事件。

      边界事件:附属于某个流程节点(如子流程、流程任务)的事件。

按照事件的特性分类

按照事件的特性进行分类,可以将事件分为Catching事件和Throwing事件,Catching事件会一直等待被触发,而Throwing事件会自动触发并反馈结果,全部的开始事件是Catching事件,因为开始事件总会等待被触发,每种开始事件的触发条件不一样而已,例如定时器开始事件,就需要时间符合条件后触发。全部的结束事件是Throwing事件,结束事件会自动执行并返回结果。全部的边界事件是Catching事件,因为这些边界事件总会符合某些特定条件才会触发。部分的中间事件为Catching事件(如Signal Intermediate Catching Event),部分的中间事件为Throwing事件(如Signal Intermediate Throwing Event)。

事件定义概述

事件主要用于体现Catching事件的触发和Throwing事件的结果,BPMN2.0规范中规定了多种事件定义:CancelEventDefinitionCompensationEventDefinitionConditionalEventDefinitionErrorEventDefinitionEscalationEventDefinitionMessageEventDefinitionLinkEventDefinitionSignalEventDefinitionTerminateEventDefinitionTimerEventDefinition除此之外,还包括无指定事件和复合事件,无指定事件是指在一个事件中没有指定任何事件定义,复合事件是指在个事件中包含多个事件定义。每个事件定义可以按照规定与事件(开始事件、结束事件和中间事件)结合,成为特定的事件。例如将TimerEventDefinition与开始事件结合,成为定时器开始事件。

定时器事件定义

定时器事件是一个由定时器触发的事件,定时器事件的定义可以嵌套在开始事件、中间事件或者界事件中。在流程文件中使用timerEventDefinition元素表示一个定时器事件定义,假设在一个开始事件中定义一个定时器事件定义,配置如下:

<startEvent id="timerstartevent1" name="Timer start">

<timerEventDefinition></timerEventDefinition>

</startEvent>

只定义一个timerEventDefinition元素是不足以描述该定时器事件,需要往timerEventDefinition元素下加入子元素,timerEventDefinition下允许定义的子元素有以下3个:

      timeDate指定一个定时器触发的时间。

      timeDuration指定定时器激活后多久的时间内该定时器被运行。假设定时器在当前时刻激活,设置该值为PT5M,即会在5分钟后执行。

      timeCycle指定定时器的重复间隔,该元素常应用于一些定时任务的执行,包括流程的定时启动、任务提醒等。

以上3timerEventDefinition的子元素,在定义时间时,都需要遵守ISO 8601的国际标准,该标准是日期和时间的表示方法,其中timeCycle还支持使用cron表达式来设定定时器的重复间隔。代码清单11-1timerEventDefinition的三个子元素的配置示例。

代码清单11-1

codes\11\11.1\event-definition\resource\bpmn\timer\TimerDefine1.bpmn

codes\11\11.1\event-definition\resource\bpmn\timer\TimerDefine2.bpmn

codes\11\11.1\event-definition\resource\bpmn\timer\TimerDefine3.bpmn

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨大仙的程序空间

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值