【activiti 入门】activiti6.0的中间事件,包含信号事件(捕获与抛出)

中间事件

        中间事件是指可以单独作为流程元素的事件,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)中间事件。

 

之前写了一篇定时任务的事件,可以参考: https://blog.csdn.net/qq_33333654/article/details/101364313

 

信号中间Catching事件

        信号中间事件分为Catching事件和Throwing事件,一个信号中间Catching事件会等待被触发,直接到该事件接收到相应的信号,与其他事件不同的是,当信号事件接收到信号后,该信号不会被消耗掉,如果存在多个引用了相同信号的事件,那么当接收到信号时,这些事件被一并被触发,即使它们不在同一个流程实例中。假设现有一个系统处理用户购买商品的流程,用户在选择商品后,出现并行分支,用户需要进行支付,而系统要产生订单并等待用户支付完成,此时可以使用信号中间Catching事件,流程如图11-14所示。

   如图11-14所示,在用户选择完商品后,流程出现并行分支,一个分支会进用户支付,另外一个会由系统生成订单,系统生成完订单后,会到达信号中间Catching事件,此时该事件会一直等待信号,当用户支付的UserTask完成后,可以使用RuntimeService的signaleEventReceived方法发送信号。对应图11-14的流程文件内容如代码清单11-33所示。

        代码清单11-33:

    <signal id="finishPay" name="finishPay"></signal>
    <process id="scProcess" name="scProcess">
        <startEvent id="startevent1" name="Start"></startEvent>
        <userTask id="usertask1" name="选择商品"></userTask>
        <parallelGateway id="parallelgateway1" name="Parallel Gateway"></parallelGateway>
        <userTask id="usertask2" name="用户支付"></userTask>
        <serviceTask id="servicetask1" name="系统生成订单"
            activiti:class

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

冒菜-码农

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

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

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

打赏作者

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

抵扣说明:

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

余额充值