疯狂Activiti6.0连载(27)BPMN中间事件

本文详细介绍了BPMN2.0中的中间事件,包括中间Catching事件(定时器、信号、消息事件)和中间Throwing事件(无指定、信号、补偿事件)。通过实例展示了Activiti6对这些事件的支持,如定时器事件在订单处理流程中的应用和信号事件在用户购买商品流程中的作用。同时提到了消息事件和无指定事件的使用场景。
摘要由CSDN通过智能技术生成

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

京东购买地址:https://item.jd.com/12246565.html

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

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

 

中间事件

本书所称的中间事件是指可以单独作为流程元素的事件,BPMN2.0规范中所指的中间事件也包括边界事件。中间事件作为流程元素表示对事件的捕获与事件的触发,一类中间事件可以在流程中等待被触发,一类中间事件会在流程中自动被触发并抛出结果(触发信息)。

中间事件分类

中间事件按照其特性可以分为两类:中间Catching事件和中间Throwing事件,当流程到达中间Catching事件时,它会一直在等待被触发,直接接收到的信息,才会被触发,而当流程到达中间Throwing事件时,该事件会自动被触发并抛出相应的结果或者信息。

BPMN2.0中定义的中间Catching事件有:消息(Message)中间事件、定时器(Timer)中间事件、条件(Conditional)中间事件、连接(Link)中间事件、信号(Signal)中间事件、组合(Multiple)中间事件和并行(Parallel Multiple)中间事件。

BPMN2.0中定义的中间Throwing事件有:无指定(None)中间事件、消息(Message)中间事件、升级(Escalation)中间事件、补偿(Compensation)中间事件、连接(Link)中间事件、信号(Signal)中间事件和组合(Multiple)中间事件

Activiti支持的中间Catching事件有定时器(Timer)中间事件、信号(Signal)中间事件和消息(Message)中间事件,支持的中间Throwing事件有无指定(None)中间事件、信号(Signal)中间事件和补偿(Compensation)中间事件。除了无指定Throwing中间事件外,其他事件均需要加入事件定义。使用intermediateCatchEvent元素定义一个中间Catching事件,如以下配置片断:

<intermediateCatchEvent id="myIntermediateCatchEvent" >

      <XXXEventDefinition/>

</intermediateCatchEvent>

使用intermediateThrowEvent元素定义一个中间Throwing事件,如以下配置片断:

<intermediateThrowEvent id="myIntermediateThrowEvent" >

      <XXXEventDefinition/>

</intermediateThrowEvent>

定时器中间事件

定时器中间事件是一个Catching事件,该事件会一直等被触发,当达到定义的时间条件后,该定时器中间事件会被触发,流程继续往下执行。假设现在有一个接收订单的业务,当接收到订单后,需要给一定的时间让相关的业务部门(例如仓库、物流或者生产)准备,然后进行发货,此时可以加入定时器中间事件定义流程自动向下执行的时间间隔,图11-13表示该业务流程,代码清单11-31为该流程对应的文件内容。


11-13 含有定时器中间事件的流程

代码清单11-31codes\11\11.6\intermediate-event\resource\bpmn\TimerCatchingEvent.bpmn

<process id="tcProcess" name="tcProcess">

<startEvent id="startevent1" name="Start"></startEvent>

<userTask id="usertask1" name="发货"></userTask>

<userTask id="usertask2" name="接收订单"></userTask>

<intermediateCatchEvent id="timerintermediatecatchevent1"

name="TimerCatchEvent">

<timerEventDefinition>

<timeDuration>PT1M</timeDuration>

</timerEventDefinition>

</intermediateCatchEvent>

<endEvent id="endevent1" name="End"></endEvent>

<sequenceFlow id="flow1" name="" sourceRef="startevent1"

targetRef="usertask2"></sequenceFlow>

<sequenceFlow id="flow2" name="" sourceRef="usertask2"

targetRef="timerintermediatecatchevent1"></sequenceFlow>

<sequenceFlow id="flow3" name=""

sourceRef="timerintermediatecatchevent1" targetRef="usertask1"></sequenceFlow>

<sequenceFlow id="flow4" name="" sourceRef="usertask1"

targetRef="endevent1"></sequenceFlow>

</process>

代码清单11-31粗体字代码,定义了一个定时器中间事件,使用了timeDuration元素<

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

杨大仙的程序空间

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

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

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

打赏作者

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

抵扣说明:

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

余额充值