Flowable主要子流程介绍
1. 内嵌子流程
(1)说明
内嵌子流程又叫嵌入式子流程,它是一个可以包含其它活动、分支、事件,等的活动。我们通常意义上说的子流程通常就是指的内嵌子流程,它表现为将一个流程(子流程)定义在另一个流程(父流程)的内部,子流程作为父流程的一部分。子流程是主流程中的一部分流程片段,并非独立的流程定义,一般作为局部通用逻辑处理,或者因为特定业务需要,使比较复杂的单个主流程设计清晰直观。
主流程执行到子流程时启动子流程,当子流程结束后继续执行主流程。
(2)示例
<process id="demo" name="demo" isExecutable="true"><startEvent id="sid-507da2f8-ca68-4e25-a256-c9e4e98a8e30"/><endEvent id="sid-312fd1bd-1a79-46f1-956c-b89aab8a03af"/><userTask id="sid-2b45eebc-75fa-465c-b870-4159a15df689" name="业务1" flowable:assignee="zj1"/><subProcess id="sid-b8b56b6f-35ae-4367-8c40-628321034b15" flowable:exclusive="true" name="子流程"><startEvent id="sid-fa9462e7-e72f-4489-a0d8-6d4aef4a8709"/><userTask id="sid-4774809a-d1b2-4c1b-96d5-86b9faf8c0f6" name="业务2" flowable:assignee="zj2"/><endEvent id="sid-39a81a5f-b2ae-4a3a-aea4-750eead4229b"/><sequenceFlow id="sid-1cf422bf-075b-49d0-8480-bc26859431cf" sourceRef="sid-fa9462e7-e72f-4489-a0d8-6d4aef4a8709" targetRef="sid-4774809a-d1b2-4c1b-96d5-86b9faf8c0f6"/><sequenceFlow id="sid-10847d4f-0f3f-4032-9116-9c14bbcef60e" sourceRef="sid-4774809a-d1b2-4c1b-96d5-86b9faf8c0f6" targetRef="sid-39a81a5f-b2ae-4a3a-aea4-750eead4229b"/></subProcess><sequenceFlow id="sid-c0064993-d7bc-4b80-97cd-18a3aef704c5" sourceRef="sid-2b45eebc-75fa-465c-b870-4159a15df689" targetRef="sid-b8b56b6f-35ae-4367-8c40-628321034b15"/><sequenceFlow id="sid-5a6e8042-f8d6-4df5-a9e1-8d2ebdb782a0" sourceRef="sid-507da2f8-ca68-4e25-a256-c9e4e98a8e30" targetRef="sid-2b45eebc-75fa-465c-b870-4159a15df689"/><sequenceFlow id="sid-38d41002-c4d5-4e24-94dd-f783a76eafac" sourceRef="sid-b8b56b6f-35ae-4367-8c40-628321034b15" targetRef="sid-312fd1bd-1a79-46f1-956c-b89aab8a03af"/></process>
2. 事件子流程
(1)说明
和内嵌子流程类似,把一系列的活动归结到一起处理,不同之处在于事件子流程不能直接启动,要被动地由其它的事件触发启动。事件子流程可以通过消息事件、错误事件、信号事件、定时器事件或补偿事件等触发。不能在事件子流程中使用空启动事件。
(2)示例
<error id="errorName" errorCode="500"/><process id="demo" name="demo" isExecutable="true"><startEvent id="sid-507da2f8-ca68-4e25-a256-c9e4e98a8e30"/><userTask id="sid-2b45eebc-75fa-465c-b870-4159a15df689" name="业务1" flowable:assignee="zj1"/><sequenceFlow id="sid-5a6e8042-f8d6-4df5-a9e1-8d2ebdb782a0" sourceRef="sid-507da2f8-ca68-4e25-a256-c9e4e98a8e30" targetRef="sid-2b45eebc-75fa-465c-b870-4159a15df689"/><sequenceFlow id="sid-6f4a2116-6f18-4bd6-b65c-c8fe7206e0ed" sourceRef="sid-2b45eebc-75fa-465c-b870-4159a15df689" targetRef="sid-312fd1bd-1a79-46f1-956c-b89aab8a03af"/><endEvent id="sid-312fd1bd-1a79-46f1-956c-b89aab8a03af"><errorEventDefinition errorRef="errorName"/></endEvent><subProcess triggeredByEvent="true" id="sid-45854983-401e-4b42-a19b-c7b1b329fea7" flowable:exclusive="true"><startEvent id="sid-9e7d64f5-69d6-4a3a-a91f-c0fadd2f85d4"><errorEventDefinition errorRef="errorName"/></startEvent><userTask id="sid-272840fa-915e-4fc6-a118-9d5b3357f438" name="业务2" flowable:assignee="zj2"/><endEvent id="sid-7cb94afc-5c74-4195-ba9f-6782b0797c8f"/><sequenceFlow id="sid-98cedd4b-0da3-493e-9645-97ec51404bde" sourceRef="sid-9e7d64f5-69d6-4a3a-a91f-c0fadd2f85d4" targetRef="sid-272840fa-915e-4fc6-a118-9d5b3357f438"/><sequenceFlow id="sid-926b5b9c-ea1d-4000-a3fe-2af432a2021e" sourceRef="sid-272840fa-915e-4fc6-a118-9d5b3357f438" targetRef="sid-7cb94afc-5c74-4195-ba9f-6782b0797c8f"/></subProcess></process>
3. 调用活动
(1)说明
调用活动可以引用流程定义外部的流程,当执行到调用活动时启动引用的外部流程,当外部流程执行完后转到当前流程下一节点。
(2)示例
<process id="demo" name="demo" isExecutable="true"><startEvent id="sid-507da2f8-ca68-4e25-a256-c9e4e98a8e30"/><userTask id="sid-2b45eebc-75fa-465c-b870-4159a15df689" name="业务1" flowable:assignee="zj1"/><sequenceFlow id="sid-5a6e8042-f8d6-4df5-a9e1-8d2ebdb782a0" sourceRef="sid-507da2f8-ca68-4e25-a256-c9e4e98a8e30" targetRef="sid-2b45eebc-75fa-465c-b870-4159a15df689"/><callActivity id="sid-bb4cd254-3b40-4c57-a27d-a7f855001cd7" name="调用活动" calledElement="processId"/><sequenceFlow id="sid-31dc97ee-52a5-4d1d-b62a-cb4609102abf" sourceRef="sid-2b45eebc-75fa-465c-b870-4159a15df689" targetRef="sid-bb4cd254-3b40-4c57-a27d-a7f855001cd7"/><userTask id="sid-b4291f3a-0b40-46e3-9048-480904d956bc"/><endEvent id="sid-91b8b5a7-e377-426b-9380-6557d2199343"/><sequenceFlow id="sid-246011bc-4109-4857-9f91-bdfefec621f7" sourceRef="sid-b4291f3a-0b40-46e3-9048-480904d956bc" targetRef="sid-91b8b5a7-e377-426b-9380-6557d2199343"/><sequenceFlow id="sid-a52c08d4-99e0-4925-9ed5-3b6b5f482f7a" sourceRef="sid-bb4cd254-3b40-4c57-a27d-a7f855001cd7" targetRef="sid-b4291f3a-0b40-46e3-9048-480904d956bc"/></process>
4. 自组织子流程
(1)说明
自组织子流程是子流程的一种,其内部包含一组无需定义先后顺序和依赖的活动。在流程中事先定义好一组活动,但活动的执行顺序是活动的执行者确定。
completionCondition标签需要在内部任务的最后面,可在代码中指定要实现的任务,该表达式成立时退出子流程流转到主流程下一节点。
(2)示例
<process id="demo" name="demo" isExecutable="true"><startEvent id="sid-507da2f8-ca68-4e25-a256-c9e4e98a8e30"/><userTask id="sid-2b45eebc-75fa-465c-b870-4159a15df689" name="业务1" flowable:assignee="zj1"/><sequenceFlow id="sid-5a6e8042-f8d6-4df5-a9e1-8d2ebdb782a0" sourceRef="sid-507da2f8-ca68-4e25-a256-c9e4e98a8e30" targetRef="sid-2b45eebc-75fa-465c-b870-4159a15df689"/><endEvent id="sid-91b8b5a7-e377-426b-9380-6557d2199343"/><adHocSubProcess id="sid-4d483bad-7247-49ca-bea6-75d0d0c6ee04"><userTask id="sid-1c48808c-00c4-45bb-96c2-db7e3db810b7"/><serviceTask id="sid-45246be8-bdc2-4951-979e-cece074d5f1a" flowable:exclusive="true"/><completionCondition>${flag}</completionCondition></adHocSubProcess><sequenceFlow id="sid-7fa29c4a-91d0-4104-9454-09f48c38267c" sourceRef="sid-2b45eebc-75fa-465c-b870-4159a15df689" targetRef="sid-4d483bad-7247-49ca-bea6-75d0d0c6ee04"/><sequenceFlow id="sid-d08ed212-288a-4c17-b228-6691774bd2cc" sourceRef="sid-4d483bad-7247-49ca-bea6-75d0d0c6ee04" targetRef="sid-91b8b5a7-e377-426b-9380-6557d2199343"/></process>
// 查询子流程的执行流 Execution exe = runtimeService.createExecutionQuery().processInstanceId(String instanceId).activityId(String activityId).singleResult(); // 让执行流到指定任务 runtimeService.executeActivityInAdhocSubProcess(String executionId,String activityId);
相关文章:
Flowable主要子流程介绍
1. 内嵌子流程 (1)说明 内嵌子流程又叫嵌入式子流程,它是一个可以包含其它活动、分支、事件,等的活动。我们通常意义上说的子流程通常就是指的内嵌子流程,它表现为将一个流程(子流程)定…...
通过插件去除Kotlin混淆去除 @Metadata标记
在Kotlin中,Metadata是指描述Kotlin类的元数据。它包含了关于类的属性、函数、注解和其他信息的描述。Metadata的作用主要有以下几个方面: 反射:Metadata可以用于在运行时获取类的信息,包括类的名称、属性、函数等。通过反射&…...
【docker】容器跟宿主机、其他容器通信
说明 容器跟宿主机、其他容器通信的关键在于它们要在同一个网络,或者通过修改路由信息来可以让它们互相之间能够找得到对方的 IP。本文主要介绍让它们在同一个网络的方法。 Docker 自定义网络模式介绍 Docker容器可以通过自定义网络来与宿主机或其他容器进行通信…...
nginx重要配置参数
1、https配置证书 nginx配置https访问_LMD菜鸟先飞的博客-CSDN博客 2、同一个端口代理多个页面 nginx同一个地址端口代理多个页面_同一ip,端口,访问不同页面 nginx_LMD菜鸟先飞的博客-CSDN博客 3、nginx访问压缩数据,加快访问速度 #gzip模块设置gzip on; #开启g…...
Docker 部署 PostgreSQL 服务
拉取最新版本的 PostgreSQL 镜像: $ sudo docker pull postgres:latest在本地预先创建好 data 目录, 用于映射 PostgreSQL 容器内的 /var/lib/postgresql/data 目录。 使用以下命令来运行 PostgreSQL 容器: $ sudo docker run -itd --name postgres -e POSTGRES_…...
【通信误码】python实现-附ChatGPT解析
1.题目 通信误码 时间限制: 1s 空间限制: 32MB 限定语言: 不限 题目描述: 信号传播过程中会出现一些误码,不同的数字表示不同的误码ID, 取值范围为1~65535,用一个数组“记录误码出现的情况。 每个误码出现的次数代表误码频度, 请找出记录中包含频度最高误码的最小子数组长度…...
人与机器只能感知到可以分类的事物?
众所周知,人与机器都能够感知和分类事物。人类拥有感官系统,如视觉、听觉、嗅觉、触觉和味觉,可以通过感知事物的外部特征和属性来进行分类。机器可以通过传感器和算法来感知和分类事物,比如计算机视觉技术可以通过图像和视频数据…...
2023华为杯数学建模竞赛E题
一、前言 颅内出血(ICH)是由多种原因引起的颅腔内出血性疾病,既包括自发性出血,又包括创伤导致的继发性出血,诊断与治疗涉及神经外科、神经内科、重症医学科、康复科等多个学科,是临床医师面临的重要挑战。…...
AIX360-CEMExplainer: MNIST Example
CEMExplainer: MNIST Example 这一部分屁话有点多,导包没问题的话可以跳过加载MNIST数据集加载经过训练的MNIST模型加载经过训练的卷积自动编码器模型(可选)初始化CEM解释程序以解释模型预测解释输入实例获得相关否定(Pertinent N…...
TouchGFX之自定义控件
在创建应用时,您可能需要TouchGFX中没有包含的控件。在创建应用时,您可能需要TouchGFX中没有包含的控件。但有时此法并不够用,当您需要全面控制帧缓冲时,您需要使用自定义控件法。 TouchGFX Designer目前不支持自定义控件的创建。…...
Python中match...case的用法
在C语言中有switch...case语句,Pthon3.10之前应该是没有类似语法,从Python3.10开始引入match...case与switch分支语句用法类似,但有细微差别,总结如下: 1.语法 肉眼可见的是关键词从switch变成了match,同…...
深度学习自学笔记二:逻辑回归和梯度下降法
目录 一、逻辑回归 二、逻辑回归的代价函数 三、梯度下降法 一、逻辑回归 逻辑回归是一种常用的二分类算法,用于将输入数据映射到一个概率输出,表示为属于某个类别的概率。它基于线性回归模型,并使用了sigmoid函数作为激活函数。 假设我们…...
【Element】通知 Notification
ElementUI 弹出通知 created() {const h this.$createElementconst that thisthis.$notify({onClose: function () {that.do()},type: warning,duration: 5000, // 5秒后隐藏offset: 0, // 距离顶部dangerouslyUseHTMLString: false, showClose: false,customClass: notify-…...
vue+express、gitee pm2部署轻量服务器(20230923)
一、代码配置 前后端接口都保持 127.0.0.1:3000 vue 项目 创建文件 pm2.config.cjs module.exports {apps: [{name: xin-web, // 应用程序的名称script: npm, // 启动脚本args: run dev, // 启动脚本的参数cwd: /home/vue/xin_web, // Vite 项目的根目录interpreter: none,…...
前端教程-H5游戏开发
Egret EGRETIA RC 版本正式发布 从端到云一站式区块链游戏开发工作流 官网 Laya Air 在渲染模式上,LayaAir 支持 Canvas 和 WebGL 两种方式;在工具流的支持程度上,主要是提供了 LayaAir IDE。LayaAir IDE 包括代码模式与设计模式ÿ…...
Nginx 关闭/屏蔽 PUT、DELETE、OPTIONS 请求
1、修改 nginx 配置 在 nginx 配置文件中,增加如下配置内容: if ($request_method !~* GET|POST|HEAD) {return 403; }修改效果如下: 2、重启 nginx 服务 systemctl restart nginx或者 service nginx restart3、功能验证 使用如下方式…...
【React】React概念、特点和Jsx基础语法
React是什么? React 是一个用于构建用户界面的 JavaScript 库。 是一个将数据渲染为 HTML 视图的开源 JS 库它遵循基于组件的方法,有助于构建可重用的 UI 组件它用于开发复杂的交互式的 web 和移动 UI React有什么特点 使用虚拟 DOM 而不是真正的 DO…...
大数据的崭露头角:数据湖与数据仓库的融合之道
文章目录 数据湖与数据仓库的基本概念数据湖(Data Lake)数据仓库(Data Warehouse) 数据湖和数据仓库的优势和劣势数据湖的优势数据湖的劣势数据仓库的优势数据仓库的劣势 数据湖与数据仓库的融合之道1. 数据分类和标记2. 元数据管…...
用go实现cors中间件
目录 一、概述 二、简单请求和预检请求 简单请求 预检请求 三、使用go的gin框架实现cors配置 1、安装 2、函数 一、概述 CORS(Cross-Origin Resource Sharing)是一种浏览器安全机制,用于控制在Web应用程序中不同源(Origin&a…...
Linux 链表示例 LIST_INIT LIST_INSERT_HEAD
list(3) — Linux manual page 用Visual Studio 2022创建CMake项目 * CmakeLists.txt # CMakeList.txt : Top-level CMake project file, do global configuration # and include sub-projects here. # cmake_minimum_required (VERSION 3.12)project ("llist")# I…...
Quartus中生成与烧录FPGA板载Flash的jic文件全流程解析
1. 为什么需要jic文件? 刚接触FPGA开发的朋友可能会疑惑:为什么编译生成的sof文件不能直接烧录到Flash?这个问题要从FPGA的特性说起。FPGA芯片内部是基于SRAM结构的,这意味着每次断电后配置数据都会丢失。想象一下你正在用电脑写文…...
AudioLDM-S效果惊艳:科幻飞船、城市夜晚,AI生成的音效有多真实?
AudioLDM-S效果惊艳:科幻飞船、城市夜晚,AI生成的音效有多真实? 想象一下,你正在制作一个科幻短片,需要一个飞船引擎启动时低沉、充满能量的嗡鸣声。或者,你想为一段城市夜景视频配上背景音,需…...
用户缓冲区与内核缓冲区原理及应用解析
1. 用户缓冲区与内核缓冲区深度解析1.1 系统架构概述现代计算机系统采用分层架构设计,将运行环境划分为用户空间和内核空间两个关键区域。这种划分基于处理器提供的不同执行权限级别:用户空间:运行所有用户进程,包括应用程序、服务…...
深入OpenBMC散热控制:从IPMI命令到D-Bus,揭秘手动与自动模式切换
深入OpenBMC散热控制:从IPMI命令到D-Bus,揭秘手动与自动模式切换 在数据中心和服务器运维领域,散热控制一直是系统稳定性的关键因素。OpenBMC作为开源基板管理控制器,其散热管理机制直接影响到服务器的可靠性和能效比。本文将带您…...
Systemd配置文件修改后不生效?试试这个命令比重启更高效
Systemd配置热更新实战:如何用daemon-reexec替代服务重启 在Linux系统管理中,systemd作为现代init系统的代表,其配置调整是管理员日常工作的核心部分。但许多工程师在修改/etc/systemd/system.conf这类全局配置后,往往陷入两难&am…...
告别论文 ddl 焦虑!PaperZZ AI:本科毕业论文从 0 到 1 的极速生成攻略[特殊字符]
Paperzz-AI官网免费论文查重复率AIGC检测/开题报告/文献综述/论文初稿/期刊论文paperzz - 毕业论文-AIGC论文检测-AI智能降重-ai智能写作https://www.paperzz.cc/dissertation 还在为本科毕业论文熬大夜?选题没思路、文献找不到、大纲搭不起来、初稿写不出…… 无数…...
使用Perfetto进行Settings中网络热点开启后anr分析的整体流程记录
目录 一.背景 二.Perfetto使用流程 阶段一:抓取 Perfetto Trace 文件 1. 指令核心解析 2. 数据源功能详解 (这些是抓取的“维度”) 3. 该指令的作用场景 阶段二:导入并认识 Perfetto UI 面板 1. 致命异常:Duration: (Did not end) 2…...
如何快速部署Uvicorn ASGI服务器到AWS Lightsail:终极云服务器配置指南 [特殊字符]
如何快速部署Uvicorn ASGI服务器到AWS Lightsail:终极云服务器配置指南 🚀 【免费下载链接】uvicorn An ASGI web server, for Python. 🦄 项目地址: https://gitcode.com/GitHub_Trending/uv/uvicorn Uvicorn是一个轻量级、高性能的A…...
从音乐均衡器到语音降噪:深入浅出玩转数字谐振器设计与MATLAB仿真
从音乐均衡器到语音降噪:深入浅出玩转数字谐振器设计与MATLAB仿真 你是否曾在调整音乐播放器的均衡器时好奇——那些滑动条如何精确控制特定频段的声音强弱?这背后隐藏的数字信号处理魔法,正是我们今天要探索的数字谐振器技术。无论是提取语音…...
零成本实现3D模型跨平台迁移:Blender到Unreal Engine的无缝解决方案
零成本实现3D模型跨平台迁移:Blender到Unreal Engine的无缝解决方案 【免费下载链接】bl_datasmith Blender addon to export UE4 Datasmith format 项目地址: https://gitcode.com/gh_mirrors/bl/bl_datasmith 你是否曾遇到这样的困境:在Blender…...



