Flowable-结束事件-取消结束事件

这篇具有很好参考价值的文章主要介绍了Flowable-结束事件-取消结束事件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

定义

取消结束事件只能与 BPMN 事务子流程结合使用,它可以取消一个事务子流程的执行,同时
也只能在子流程中执行。实际应用中,会把取消事件,事务子流程,补偿事件一起用。当到达取消
结束事件时,会抛出取消事件,它必须被取消边界事件捕获。取消边界事件会取消事务,并触发补
偿机制。

图形标记

取消结束事件显示为标准的结束事件(粗边圆圈),包含一个取消图标。取消图标是全黑的,
表示触发语法,如图所示:

Flowable-结束事件-取消结束事件,Flowable组件库,java,开发语言,流程引擎,bpmnjs,flowable

XML内容

取消结束事件内容是一个结束事件,包含 cancelEventDefinition 子元素:

<process id="cancelEndEventProcess">
     <endEvent id="cancelEndEvent">
     <cancelEventDefinition/>
     </endEvent>
 </process>

使用示例

取消结束事件,只能与事务子流程(Transaction Subprocess)一起使用。当到达取消结束事件
时,会抛出取消事件,且必须由取消边界事件(Cancel Boundary Event)捕获。之后这个取消边界
事件将取消事务,并触发补偿(compensation)。
下面我们看一个使用取消结束事件的示例流程,如图所示是一个系统上线流程,流程启
动后进入系统上线事务子流程,首先到达“人工上线”用户任务节点,办理完成后到达取消结束事
件,抛出取消事件,触发“自动回滚”补偿,并触发取消边界事件以及结束子流程进而流转到“用
户排查”用户任务节点。这个示例流程中涉及到用户任务节点、服务任务节点、事务子流程和取消
边界事件,这些都是 BPMN 定义的流程元素,在后面的章节中会展开介绍。

Flowable-结束事件-取消结束事件,Flowable组件库,java,开发语言,流程引擎,bpmnjs,flowable

<error id="errorFlag" errorCode="500" />
<process id="ThransactionSubProcessTest" name="子流程-事务子流程" isExecutable="true">
<startEvent id="a1bc9933739624c6694151aff2dce872b" />
<userTask id="aa49686c18f1c48879976ba75a55fcbc6" name="用户提交订单">
    <extensionElements>
        <flowable:formData />
        <flowable:assigneeType>static</flowable:assigneeType>
    </extensionElements>
</userTask>
<sequenceFlow id="ab3c3111802e74e1c829879ce06ef62f1" sourceRef="a1bc9933739624c6694151aff2dce872b" targetRef="aa49686c18f1c48879976ba75a55fcbc6" />
<transaction id="Activity_1vnyjkd" name="事务子流程">
    <startEvent id="Event_12nf6w8">
        <extensionElements>
            <flowable:formData />
        </extensionElements>
    </startEvent>
    <sequenceFlow id="Flow_1qdwcnq" sourceRef="Event_12nf6w8" targetRef="Gateway_1swfvxl" />
    <parallelGateway id="Gateway_1swfvxl" />
    <sequenceFlow id="Flow_17rtq7v" sourceRef="Gateway_1swfvxl" targetRef="Activity_1gw2yen" />
    <serviceTask id="Activity_1gw2yen" name="锁定库存" flowable:class="com.dragon.test.bpmn.delegate.TreasuryLockService">
        <extensionElements>
            <flowable:formData />
            <flowable:assigneeType>static</flowable:assigneeType>
        </extensionElements>
    </serviceTask>
    <userTask id="Activity_0s32nn4" name="用户取消订单">
        <extensionElements>
            <flowable:formData />
            <flowable:assigneeType>static</flowable:assigneeType>
        </extensionElements>
    </userTask>
    <sequenceFlow id="Flow_0x4x7li" sourceRef="Gateway_1swfvxl" targetRef="Activity_0s32nn4" />
    <userTask id="Activity_0k0ojol" name="用户支付订单">
        <extensionElements>
            <flowable:formData />
            <flowable:assigneeType>static</flowable:assigneeType>
        </extensionElements>
    </userTask>
    <sequenceFlow id="Flow_107046y" sourceRef="Activity_1gw2yen" targetRef="Activity_0k0ojol" />
    <sequenceFlow id="Flow_1yuazgn" sourceRef="Activity_0k0ojol" targetRef="Activity_0bi67sc" />
    <serviceTask id="Activity_0bi67sc" name="扣减库存" flowable:class="com.dragon.test.bpmn.delegate.TreasuryDeductService">
        <extensionElements>
            <flowable:assigneeType>static</flowable:assigneeType>
            <flowable:formData />
        </extensionElements>
    </serviceTask>
    <endEvent id="Event_167temk" />
    <sequenceFlow id="Flow_0pkp6lj" sourceRef="Activity_0bi67sc" targetRef="Event_167temk" />
    <endEvent id="Event_1mt0jp2">
        <cancelEventDefinition />
    </endEvent>
    <boundaryEvent id="Event_1w62z13" attachedToRef="Activity_0bi67sc">
        <errorEventDefinition errorRef="errorFlag" flowable:errorVariableLocalScope="false" flowable:errorVariableTransient="false" />
    </boundaryEvent>
    <boundaryEvent id="Event_0fblty6" name="30分钟" attachedToRef="Activity_0k0ojol">
        <timerEventDefinition>
            <timeDuration>PT3M</timeDuration>
        </timerEventDefinition>
    </boundaryEvent>
    <boundaryEvent id="Event_0dzq6vl" attachedToRef="Activity_1gw2yen">
        <compensateEventDefinition />
    </boundaryEvent>
    <serviceTask id="Activity_15oy2bt" name="释放库存" isForCompensation="true" flowable:class="com.dragon.test.bpmn.delegate.TreasuryReleaseService" />
    <boundaryEvent id="Event_0rv7u1v" attachedToRef="Activity_0k0ojol">
        <compensateEventDefinition />
    </boundaryEvent>
    <serviceTask id="Activity_0gw5xlk" name="费用退回" isForCompensation="true" flowable:class="com.dragon.test.bpmn.delegate.RefundPaymentService" />
    <association id="Association_1a1b669" associationDirection="One" sourceRef="Event_0dzq6vl" targetRef="Activity_15oy2bt" />
    <association id="Association_0vig570" associationDirection="One" sourceRef="Event_0rv7u1v" targetRef="Activity_0gw5xlk" />
</transaction>
<sequenceFlow id="Flow_0ynhbof" sourceRef="aa49686c18f1c48879976ba75a55fcbc6" targetRef="Activity_1vnyjkd" />
<boundaryEvent id="Event_0lxd35r" attachedToRef="Activity_1vnyjkd">
    <cancelEventDefinition />
</boundaryEvent>
<sequenceFlow id="Flow_0p83e5j" sourceRef="Event_0lxd35r" targetRef="Activity_0xmvtli" />
<serviceTask id="Activity_0xmvtli" name="自动取消订单" flowable:class="com.dragon.test.bpmn.delegate.CancelOrderService">
    <extensionElements>
        <flowable:formData />
        <flowable:assigneeType>static</flowable:assigneeType>
    </extensionElements>
</serviceTask>
<endEvent id="Event_0h8me6c" />
<sequenceFlow id="Flow_1vvt0is" sourceRef="Activity_0xmvtli" targetRef="Event_0h8me6c" />
<endEvent id="Event_1954lc4" />
<sequenceFlow id="Flow_0kcxljy" sourceRef="Activity_1vnyjkd" targetRef="Event_1954lc4" />
</process>

::: warning 注意
⑴取消结束事件只能使用在事务子流程中

⑵取消结束事件会触发依附在子流程上的取消边界事件(取消结束事件会被抛出,而取消边界
事件则会捕获事件)

⑶在 BPMN2.0 中对于已经完成的活动,可以使用补偿机制,而对于一些正在进行的活动,不
能使用补偿机制,而使用取消机制。取消事件一定要包含补偿事件,否则无法运行,会抛出
org.flowable.common.engine.api.FlowableException: No execution found for sub process of boundary cancel event ***的
异常
:::

视频教程

取消结束事件

演示demo

取消结束事件

本文中内容和案例出自贺波老师的书《深入Activiti流程引擎:核心原理与高阶实战》,书中的介绍更全面、详细,推荐给大家。
深入Activiti流程引擎文章来源地址https://www.toymoban.com/news/detail-635018.html

到了这里,关于Flowable-结束事件-取消结束事件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Flowable边界事件-定时边界事件

    定义 定时器边界事件是附属在流程活动(如用户任务、系统任务、子流程)中的事件,当流程到达 了流程活动时,引擎会创建一个定时器,当定时器触发后,流程会沿定时边界事件的后继路线继续 执行 注意 使用定时器事件需要开启flowable的作业执行器 configuration.setAsyncExe

    2024年02月13日
    浏览(46)
  • Flowable工作流之Flowable UI画工作流程图

    Flowable 是一个用 Java 编写的轻量级业务流程引擎。 Flowable 流程引擎允许您部署 BPMN 2.0 流程定义(用于定义流程的行业 XML 标准)、创建这些流程定义的流程实例、运行查询、访问活动或历史流程实例和相关数据 Flowable 在将其添加到应用程序、服务、体系结构时非常灵活。您

    2024年02月01日
    浏览(52)
  • 小白学流程引擎-FLowable(四) —Flowable UI应用程序详解

    环境版本:Flowable UI 6.7.2 1.1 Flowable-idm主要提供以下功能: 提供用户管理功能:可以添加用户、编辑用户、删除用户和密码修改功能 提供用户分组功能:提供用户组的创建、用户组的删除、添加删除用户到组功能,方便统一管理用户权限,是一个简化版的角色处理 提供权限管

    2024年02月09日
    浏览(63)
  • flowable流程节点状态构造

    接口返回示例 前端展示效果

    2024年01月20日
    浏览(35)
  • Flowable 生成流程图

    2024年01月18日
    浏览(44)
  • 开发小程序的页面、组件、事件(下)

    小程序的事件是一种处理用户交互的方式,通过监听用户的操作行为,触发相应的事件来处理具体的业务逻辑和显示效果。小程序事件主要包括用户操作事件和自定义事件,开发人员需要了解这些事件的方法和机制,以便正确地处理用户的操作,并实现良好的用户体验。 一、

    2024年02月09日
    浏览(32)
  • Java开发工程师是做什么的?高考结束最重要的专业选择!

    各位同学大家好,我是小源,明天就是高考了,对于正常的一个考生来说,专本线的同学已经开始陆陆续续准备看专业。今天,好程序员分享一个专业,他的名字叫做Java开发工程师,不知道同学有没有听说过这个专业?目前咱们现在国家,还有社会都是依托互联网进行发展的

    2024年02月08日
    浏览(48)
  • Springboot整合Flowable流程引擎

    Flowable是一个开源的工作流引擎,它基于Activiti引擎进行发展,Flowable主要用于为业务流程管理(BPM)和工作流的设计、操作、监控提供支持。 这类表在Flowable中主要提供存储通用类型数据的功能,如流程名称,创建时间等。如下是通用表的主要成员: act_ge_bytearray:存储二进

    2024年02月05日
    浏览(39)
  • Activiti,Flowable,Camunda流程引擎对比

            市场上比较有名的开源流程引擎有osworkflow、jbpm、activiti、flowable、camunda。其中:Jbpm4、Activiti、Flowable、camunda四个框架同宗同源,祖先都是Jbpm4,开发者只要用过其中一个框架,基本上就会用其它三个。osworkflow目前功能简单,目前已处于不活跃状态,此处就不展开描

    2024年02月03日
    浏览(43)
  • 工作流程引擎之flowable(集成springboot)

    现状:公司各部门业务系统有各自的工作流引擎,也有cross function的业务在不同系统或OA系统流转,没有统一的去规划布局统一的BPM解决方案,近期由于一个项目引发朝着整合统一的BPM方案,特了解一下市面上比较主流的开源和收费的工作流引擎。本文主要介绍开源的工作流引

    2024年02月08日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包