热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

BPM中常见子流程使用场景介绍二(内嵌型、事务型、事件型)

接上篇《BPM中常见子流程使用场景介绍(一:复用型、集成型)》,本文将对另外几种类型进行介绍。分别是“内嵌型”、“事务型”、“事件型”,本质上“事务型”与“事件型”也是属于内嵌型,但


接上篇《BPM中常见子流程使用场景介绍(一:复用型、集成型)》,本文将对另外几种类型进行介绍。分别是“内嵌型”、“事务型”、“事件型”, 本质上“事务型”与“事件型”也是属于内嵌型,但后两种类型在内嵌的特点之外扩展了其他的业务特性来支撑更加复杂的业务场景。内容如下:


内嵌型


        “内嵌型子流程”通常也是为了进行复用,但与“复用型子流程”不同,“内嵌型子流程”是主流程中的一部分流程片段,并非独立的流程定义。“内嵌型子流程”一般包含如下特点:


流程图片段复用:在设计一些复杂人工流程时,可能会有上百个活动节点,流程图繁杂,连接线混乱交叉,可读性很差。而内嵌子流程就是将其中一部分可复用的片段组合到一个区域块中进行复用,支持子流程的展开与缩放,使流程图设计更加简洁明了。


流程灵活流转:运行时,“内嵌子流程”活动块里面的活动执行同外部活动执行方式一致(属于同一个流程实例),相对于“复用型子流程”的独立流程实例,可以方便的执行活动跳转、回退等操作以及任务列表查询。


内嵌型流程图示例:示例银行贷款授信审批类流程


1贷款审批流程:子流程未展开



2贷款审批流程:子流程展开


事务型


“事务型子流程”是一中特殊含义的“内嵌型子流程”通常称为“事务块”,除了具有内嵌子流程的特性外,其内部的活动还有“事务一致性”特点,即活动执行要么一起成功,要么一起失败。“事务型子流程”通常以如下方式来支持事务一致性保障:


Ÿ   异常定义、抛出:事务块中的活动节点中需要对可能抛出的异常进行定义,运行时发生异常后抛出异常事件。


Ÿ   异常捕获:在事务块活动上需要对块内异常进行捕获,并执行后续处理流转。


Ÿ   出错补偿:事务块内活动出错后,可以按顺序将块内已执行的活动进行出错补偿。


示例流程如下:



3手机充值流程


上图中,流程中的双实线区域内容就是“事务型子流程”即“事务块”。块中的三个自动服务“获取转账凭证”、“在线支付”、“手机账户加值”属于一个事务型交易,当出现异常时会抛出取消事件,取消事件会被事务块上的取消边界事件捕获,进行整个事务块中活动的补偿回滚操作。完成补偿后,执行后续流转,流程终止。


事件型


        “事件型子流程”是一种特殊的子流程也可称为“支线流程”,属于主流程之外的独立支线主线和分支不用连线相连,支线在某些特定的情况下才触发执行。一般具有如下特点:


        主线、支线独立:流程设计时,流程主线和支线之间活动独立,不存在连线流转。事件子流程的开始事件通常定义为消息捕获类型的事件。


        事件触发支线:运行时,在主流程未结束的情况下,“事件性子流程”通过开始事件定义的触发规则触发执行,事件子流程执行不会产生新的流程实例,主流程中的活动实例与“事件子流程”中的活动实例本质属于同一个流程实例。


        支线、主线共享数据:“事件子流程”支线触发时,支线同主线的关系也根据场景不同而不同。一般会有“并行执行”和“中断主线,执行支线”两种模式。支线流程执行过程中能够方便的同主线流程共享上下文数据。


示例流程如下:



4订单新建和取消流程


上图的流程为典型的事件型子流程场景,主流程完成订单创建后进行后续处理过程中,如果此时用户发起了取消订单请求,那么支线的取消订单流程将执行,最终终止主流程执行。


总结:


综上所述,子流程的使用场景有很多,可能还有其他场景我没有接触到,欢迎大家提供更多需求场景以及对上述场景说明的一些意见一起讨论。


推荐阅读
  • 深入解析Android自定义View面试题
    本文探讨了Android Launcher开发中自定义View的重要性,并通过一道经典的面试题,帮助开发者更好地理解自定义View的实现细节。文章不仅涵盖了基础知识,还提供了实际操作建议。 ... [详细]
  • 三星W799在2011年的表现堪称经典,以其独特的双屏设计和强大的功能引领了双模手机的潮流。本文详细介绍其配置、功能及锁屏设置。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • Python自动化处理:从Word文档提取内容并生成带水印的PDF
    本文介绍如何利用Python实现从特定网站下载Word文档,去除水印并添加自定义水印,最终将文档转换为PDF格式。该方法适用于批量处理和自动化需求。 ... [详细]
  • 本文探讨了卷积神经网络(CNN)中感受野的概念及其与锚框(anchor box)的关系。感受野定义了特征图上每个像素点对应的输入图像区域大小,而锚框则是在每个像素中心生成的多个不同尺寸和宽高比的边界框。两者在目标检测任务中起到关键作用。 ... [详细]
  • 如何高效创建和使用字体图标
    在Web和移动开发中,为什么选择字体图标?主要原因是其卓越的性能,可以显著减少HTTP请求并优化页面加载速度。本文详细介绍了从设计到应用的字体图标制作流程,并提供了专业建议。 ... [详细]
  • 苹果新专利或将引领无边框手机时代
    苹果公司最近公布了一项新的专利技术,该技术能够在设备屏幕中嵌入光线传感器,这标志着苹果在实现无边框手机设计上迈出了重要一步。这一创新将极大提升手机的屏占比,并可能为未来的iPhone带来革命性的变化。 ... [详细]
  • 本文介绍如何使用 Python 提取和替换 .docx 文件中的图片。.docx 文件本质上是压缩文件,通过解压可以访问其中的图片资源。此外,我们还将探讨使用第三方库 docx 的方法来简化这一过程。 ... [详细]
  • RT,个人博客图片管理(方便管理,大家 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • 从零开始构建完整手机站:Vue CLI 3 实战指南(第一部分)
    本系列教程将引导您使用 Vue CLI 3 构建一个功能齐全的移动应用。我们将深入探讨项目中涉及的每一个知识点,并确保这些内容与实际工作中的需求紧密结合。 ... [详细]
  • 帝国CMS多图上传插件详解及使用指南
    本文介绍了一款用于帝国CMS的多图上传插件,该插件通过Flash技术实现批量图片上传功能,显著提升了多图上传效率。文章详细说明了插件的安装、配置和使用方法。 ... [详细]
  • PHP 5.5.0rc1 发布:深入解析 Zend OPcache
    2013年5月9日,PHP官方发布了PHP 5.5.0rc1和PHP 5.4.15正式版,这两个版本均支持64位环境。本文将详细介绍Zend OPcache的功能及其在Windows环境下的配置与测试。 ... [详细]
author-avatar
郭建将_683
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有