Flowable-子流程-嵌套子流程

news2024/10/5 16:25:33

目录

      • 定义
      • 图形标记
      • XML内容
      • 使用示例
      • 视频讲解

定义

内嵌子流程又叫嵌入式子流程,它是一个可以包含其它活动、分支、事件,等的活动。我们通
常意义上说的子流程通常就是指的内嵌子流程,它表现为将一个流程(子流程)定义在另一个流程
(父流程)的内部,子流程作为父流程的一部分。子流程是主流程中的一部分流程片段,并非独立
的流程定义,一般作为局部通用逻辑处理,或者因为特定业务需要,使比较复杂的单个主流程设计
清晰直观。

图形标记

子流程显示为标准的节点,它是一个圆角矩形。子流程有两种形态:如果子流程是折叠的,就
只显示名称和一个加号标记,从而高度概括了流程,如图所示;如果子流程是展开的,子流
程的步骤显示在子流程边界内,如图所示:

  • 子流程展开展示

在这里插入图片描述

  • 子流程折叠展示
    在这里插入图片描述

XML内容

子流程由 subProcess 元素定义,作为子流程一部分的所有活动,网关,事件和儿子都需要包含
在这个元素中

<process id="mainProcess" name="主流程" isExecutable="true">
<startEvent id="startEvent1"></startEvent>
 <subProcess id="subProcess">
     <startEvent id="subProcessStart" />
     
     <endEvent id="subProcessEnd" />
 </subProcess>
 </process>

可以看出,<subProcess>元素与主流程的其它元素同级,可以视作为主流程的专属属性,其本
质上只有一个流程,因此共享数据,使用主流程的 key 也能查询出子流程的任务等信息,主子流程的变量信息也是共享的。

使用示例

子流程就是将其中一部分可复用的片段组合到一个区域块中进行复用,将整个子流程都会被完
整地定义在父流程中,支持子流程的展开与缩放,使流程图设计更加简洁明了。如果不使用子流程,
同样也会将这些流程活动定义到主流程中,与子流程的效果一样,但是如果想为某部分流程活动添
加特定的事件范围,那么此时使用嵌入式子流程就很有必要。子流程主要的应用场景主要有以下两种:

1、子流程可以用于分层建模。在常见的建模工具中,都允许将子流程进行折叠来隐藏子流程的
所有细节,从而展示业务流程的高层端到端总览。

2、子流程会为事件创建新的作用域。在子流程执行中抛出的事件可以通过子流程边界上的边界
事件捕获,事件所创建的作用域只局限在子流程内。
在使用子流程时要考虑以下几个限制:

2.1、子流程有且只能有一个空开始事件,而不允许有其它类型的开始事件。

2.2、子流程至少有一个结束事件。需要注意的是,在 BPMN 2.0 规范中允许省略子流程的启动与
结束事件,但是当前 Flowable 的实现并不支持。

2.3、顺序流不能跨越子流程边界。子流程中顺序流不能直接输出流到子流程之外的活动上,有需
要可以通过边界事件替代。

下面我们用一个示例流程来演示子流程的用法。如图所示是一个贷款申请的流程,要经
过贷款申请、贷款额度审批和发放贷款三个环节,其中贷款申请环节和发放贷款环节使用的是用户
任务节点,而贷款额度审批环节使用的是子流程节点,内嵌了一个子流程。同时,子流程边界上加
入定时边界事件,如果定时器触发前子流程结束,则主流程流转到发放贷款节点;如果定时器触发
时子流程还没有结束,则直接流转到结束节点,整个流程结束。

内嵌子流程示例流程
在这里插入图片描述

  <process id="nestSubProcessTest" name="子流程-嵌套子流程" isExecutable="true">
    <startEvent id="a78cb04a6b33d4993b841324220a7535a" />
    <userTask id="a0211d54ab2a949939ce31ff31c053b37" name="贷款申请">
        <extensionElements>
            <flowable:formData />
            <flowable:assigneeType>static</flowable:assigneeType>
        </extensionElements>
    </userTask>
    <sequenceFlow id="abe410f43f9f8479baddf7da69016f637" sourceRef="a78cb04a6b33d4993b841324220a7535a" targetRef="a0211d54ab2a949939ce31ff31c053b37" />
    <sequenceFlow id="Flow_0v94zzq" sourceRef="a0211d54ab2a949939ce31ff31c053b37" targetRef="Activity_1ndamrq" />
    <subProcess id="Activity_1ndamrq" name="贷款额度审批">
        <startEvent id="Event_1xr63oz">
            <extensionElements>
                <flowable:formData />
            </extensionElements>
        </startEvent>
        <sequenceFlow id="Flow_1onxxsx" sourceRef="Event_1xr63oz" targetRef="Activity_0zp1e7g" />
        <userTask id="Activity_10gcslh" name="复核贷款额度">
            <extensionElements>
                <flowable:formData />
                <flowable:assigneeType>static</flowable:assigneeType>
            </extensionElements>
        </userTask>
        <endEvent id="Event_0ulgoqy" />
        <sequenceFlow id="Flow_0pcmaok" sourceRef="Activity_10gcslh" targetRef="Event_0ulgoqy" />
        <userTask id="Activity_0zp1e7g" name="审批贷款额度">
            <extensionElements>
                <flowable:assigneeType>static</flowable:assigneeType>
                <flowable:formData />
            </extensionElements>
        </userTask>
        <exclusiveGateway id="Gateway_1h3mxrw" default="Flow_0jcc7nk" />
        <sequenceFlow id="Flow_1j4me9j" sourceRef="Activity_0zp1e7g" targetRef="Gateway_1h3mxrw" />
        <sequenceFlow id="Flow_0jcc7nk" name="小于100w" sourceRef="Gateway_1h3mxrw" targetRef="Event_0ulgoqy" />
        <sequenceFlow id="Flow_06jy5zt" name="大于等于100w" sourceRef="Gateway_1h3mxrw" targetRef="Activity_10gcslh">
            <conditionExpression xsi:type="tFormalExpression">${money&gt;=100}</conditionExpression>
        </sequenceFlow>
    </subProcess>
    <endEvent id="Event_1e8x10z" />
    <userTask id="Activity_0id07bt" name="发放贷款">
        <extensionElements>
            <flowable:formData />
            <flowable:assigneeType>static</flowable:assigneeType>
        </extensionElements>
    </userTask>
    <sequenceFlow id="Flow_1h37g0l" sourceRef="Activity_1ndamrq" targetRef="Activity_0id07bt" />
    <sequenceFlow id="Flow_1b7pjk9" sourceRef="Activity_0id07bt" targetRef="Event_1e8x10z" />
    <boundaryEvent id="Event_1902kar" name="30分钟" attachedToRef="Activity_1ndamrq">
        <timerEventDefinition>
            <timeDuration>PT2M</timeDuration>
        </timerEventDefinition>
    </boundaryEvent>
    <sequenceFlow id="Flow_1ap39px" sourceRef="Event_1902kar" targetRef="Event_1e8x10z" />
</process>

视频讲解

嵌套子流程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/817483.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C语言初阶(20)】调试练习题

文章目录 前言实例1实例2 前言 在我们开始调试之前&#xff0c;应该有个明确的思路&#xff1b;程序是如何完成工作的、变量到达某个步骤时的值应该是什么、出现的问题大概会在什么位置。这些东西在调试之前都需要先确认下来&#xff0c;不然自己都不知道自己在调试个什么东西…

IT服务管理学习笔记<一>

### IT服务管理知识整理 ITSM 的核心思想是&#xff0c;IT 组织&#xff0c;不管它是企业内部的还是外部的&#xff0c;都是 IT 服务提供者&#xff0c;其 主要工作就是提供低成本、高质量的 IT 服务。 ITSM 的核心思想是&#xff0c;IT 组织&#xff0c;不管它是企业内部的还…

中国农村大学生学习了这个【React教程】迎娶导师女儿,出任CEO走上人生巅峰

注&#xff1a;最后有面试挑战&#xff0c;看看自己掌握了吗 文章目录 React创建一个简单的 JSX 元素创建一个复杂的 JSX 元素在 JSX 中添加注释渲染 HTML 元素为 DOM 树 &#x1f338;I could be bounded in a nutshell and count myself a king of infinite space. 特别鸣谢…

《数据同步-NIFI系列》Nifi配置DBCPConnectionPool连接SQL Server数据库

Nifi配置DBCPConnectionPool连接SQL Server数据库 一、新增DBCPConnectionPool 在配置中新增DBCPConnectionPool&#xff0c;然后配置数据库相关信息 二、配置DBCPConnectionPool 2.1 DBCPConnectionPool介绍 主要介绍以下五个必填参数 Database Connection URL&#xff1…

简历上的项目,需要这样描述才有亮点!

作者&#xff1a;小傅哥 博客&#xff1a;https://bugstack.cn 沉淀、分享、成长&#xff0c;让自己和他人都能有所收获&#xff01;&#x1f604; 一、前言&#xff1b;豆包不是干粮 每每准备面试&#xff0c;总有些小伙子甩出自己的豆包项目&#xff0c;不是Xxx管理系统&…

绝绝子,这所211无歧视!极其保护一志愿!专硕爆冷全部录取!

一、学校及专业介绍 大连海事大学&#xff08;Dalian Maritime University&#xff09;&#xff0c;简称海大&#xff0c;位于辽宁省大连市&#xff0c;是中华人民共和国交通运输部所属的全国重点大学&#xff0c;位列国家“双一流”、“211工程”重点建设高校。 1.1 招生情况…

HJ99 自守数+OR86N 返回小于N的质数个数

HJ99 自守数 自守数_牛客题霸_牛客网 (nowcoder.com) #include <iostream> #include<cmath> using namespace std; bool Ending_Same(int a) {int a_a a * a;if (a_a a)return true;int i 1;while (a_a ! 0 && a_a/ (int)pow(10, i)!0)//保证a*a有足够…

SBFI AM(Na+Indicator),129423-53-6,可用来预测纯化线粒体Na+梯

资料编辑|陕西新研博美生物科技有限公司小编MISSwu​ SBFI AM(NaIndicator)钠离子荧光探针 PART1----​Product structure&#xff1a; PART2----​Product specifications&#xff1a; 1.CAS No&#xff1a;129423-53-6 2.Molecular formula&#xff1a;C56H58N2O23 3.Molec…

算法:HJ27 查找兄弟单词

描述 定义一个单词的“兄弟单词”为&#xff1a;交换该单词字母顺序&#xff08;注&#xff1a;可以交换任意次&#xff09;&#xff0c;而不添加、删除、修改原有的字母就能生成的单词。 兄弟单词要求和原来的单词不同。例如&#xff1a; ab 和 ba 是兄弟单词。 ab 和 ab 则…

职业发展规划指南:如何成为成功的产品经理

导语&#xff1a;产品经理是当今互联网时代最炙手可热的职位之一。作为连接技术、商业和用户需求的桥梁&#xff0c;产品经理在公司中扮演着至关重要的角色。本文将为你提供一些关于产品经理职业发展的规划指南&#xff0c;帮助你在这个领域取得成功。 掌握核心技能&#xff1…

修复navicat 不可用

第一步&#xff1a;关闭Navicat 第二步&#xff1a;打开注册表编辑器&#xff0c;win R, 输入regedit 第三步&#xff1a; 在最上方搜索框输入HKEY_CURRENT_USER\Software\PremiumSoft\NavicatPremium 将Registration15XCS文件夹 和 Update文件夹删除 第四步&#xff1a; 在…

Jenkins工具系列 —— Jenkins 安装并启动

文章目录 安装涉及相关链接选择安装Jenkins版本安装JenkinsJenkins web页面启动 安装涉及相关链接 Jenkins官网&#xff1a; https://www.jenkins.io/zh/ Jenkins下载安装步骤&#xff1a; https://www.jenkins.io/zh/download/ 安装各种版本OpenJDK&#xff1a; https://blog…

netty3和netty4 的区别

netty3和netty4 的区别 目录概述需求&#xff1a; 设计思路实现思路分析1.区别 拓展实现性能参数测试&#xff1a; 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,make a better…

SpringBoot项目中使用Lombok插件中Slf4j日志框架

前言&#xff1a;idea需要安装lombok插件&#xff0c;因为该插件中添加了Slf4j注解&#xff0c;可以将Slf4j翻译成 private static final org.slf4j.Logger logger LoggerFactory.getLogger(this.XXX.class); springboot本身就内置了slf4j日志框架&#xff0c;所以不需要单独…

Vue前端框架入门

文章目录 Vue快速入门Vue指令生命周期 Vue 经过一小段时间学习 我认为vue就是在原js上进行的一个加强 简化JS中的DOM操作 vue是分两个层的 一个叫做视图层(View)&#xff0c;你可以理解为展现出来的前端页面 一个叫数据模型层(Model),包含数据和一些数据的处理方法 MVVM就是实…

热度升温 SSOT上海国际智慧办公展览会精彩预告福利放送

上海国际智慧办公展览会&#xff08;SSOT&#xff09;是智慧办公及商用空间智能化解决方案及技术应用的专业平台&#xff0c;本届展会除了将“智联”智能行业&#xff0c;同时会以“智越”为题&#xff0c;与行业共建跨越行业界限之桥梁。 展会将融合应用智慧办公、智慧地产、智…

Flask中flask-session

Flask中flask-session Flask-Session是一个为Flask应用程序开发的工具&#xff0c;允许您轻松处理服务器端会话。会话是存储和追踪用户特定数据的方式。例如&#xff0c;当用户登录到应用程序时&#xff0c;他们的状态&#xff08;即登录状态&#xff09;可以保存在会话中&…

搞清楚 Windows C/C++ 编程中各种编码

最近编写程序,中文乱码问题让很多同学很头疼,那么今天黄老师来帮大家剖析一下: 以 “好人“ 两个字为例: 等会我们使用代码跟踪内存,来查看字节的编码: 先上代码: #include<stdio.h> #include<stdlib.h> #include<windows.h>char * ConvertUT…

PHP-Mysql好运图书管理系统--【白嫖项目】

强撸项目系列总目录在000集 PHP要怎么学–【思维导图知识范围】 文章目录 本系列校训本项目使用技术 首页必要的项目知识ThinkPHP的MVCThinkTemplateThinkPHP 6和ThinkPHP 5 phpStudy 设置导数据库前台展示页面后台的管理界面数据库表结构项目目录如图&#xff1a;代码部分&a…

模型法在初中物理中的实例与应用

摘要&#xff1a;模型法是初中物理解题的重要方法&#xff0c;它的优点有方便快捷&#xff0c;易于理解等。文章通过列举模型法在初中物理解题时应用的例子&#xff0c;与模型法在学习与生活中的实际应用&#xff0c;说明了模型法可用性高&#xff0c;易于理解&#xff0c;能让…