Flowable-子流程-调用活动
目录
- 定义
- 图形标记
- XML内容
- 界面操作
- 使用示例
- 子流程设计
- 子流程的XML内容
- 主流程设计
- 主流程的XML内容
- 视频教程
定义
调用活动是在一个流程定义中调用另一个独立的流程定义,通常可以定义一些通用的流程作为
这种调用子流程,供其他多个流程定义复用。这种子流程使用 callActivity 元素来进行调用,很方
便地嵌入到主流程中,用起来比较方便。
图形标记
调用活动显示为标准的节点,它是一个圆角矩形,不过是粗边框,如图所示。

XML内容
调用活动的 XML 定义如下:
<callActivity id="Activity_1q7t28e" name="贷款额度审批" calledElement="ApproveLoanSubProcess" flowable:inheritVariables="true" flowable:processInstanceName="贷款额度审批" flowable:calledElementType="key"><extensionElements><flowable:assigneeType>static</flowable:assigneeType><flowable:formData /><flowable:modelBpmnExtension>[{"id":"8c7aefbf087f4d680fc36b871d77c967","modelId":"1252465dd6e511eda69100ff2cb2ed0e","modelKey":"ApproveLoanSubProcess","name":"贷款额度审批","appSn":"businessFlow","appName":"财务流程","categoryCode":"zshjt","categoryName":"中石化集团","status":3,"statusName":"已发布"}]</flowable:modelBpmnExtension></extensionElements>
</callActivity>
调用活动是一个普通活动,需要通过 calledElement 属性引用被调用的外部流程定义的 key。调
用活动可以向子流程传递与接收流程变量:①使用 flowable:in 标签定义父流程变量传入到子流程流
程变量的映射,在子流程启动时复制到子流程;②使用用 flowable:out 标签定义子流程变量回传到父
流程变量的映射,在其结束时复制回主流程。调用活动的拓展属性如表所示:
| 属性名称 | 属性说明 | 示例 |
|---|---|---|
| calledElement | 被调用流程的 key,对应的流程定义应独立存在 | <callActivity calledElement="testProcessDefinitonKey"> |
| businessKey | 子流程的 businessKey,可以使用表达式 | <callActivity flowable:businessKey="subProcessBusinessKey"> |
| inheritBusinessKey | 值为 true 时子流程复用父流程的 businessKey,该属性在businessKey 属性没有配置时才生效 | <callActivity flowable:inheritVariables="true"> |
| inheritVariables | 值为 true 时将父流程所有流程变量传递给子流程 | <callActivity flowable:inheritVariables="true"> |
| flowable:in | 将父流程的流程变量传入子流程(父流程变量必须事先定义,否则将不能获取) | <flowable:in source="someVariableInMainProcess" target="nameOfVariableInSubProcess"></flowable:in>,source:主流程中的变量名称,可以使用表达式;target:在将主流程变量传递给子流程中变量的名称,一般和 sourse 同名避免错误的出现 |
| flowable:out | 调用活动执行完成后的结果 | <flowable:out source="someVariableInSubProcss"target="nameOfVariableInMainProcess"></flowable:out>,source:子流程中的变量名称,可以使用表达式;target:在将子流程变量传递给父流程中变量的名称,一般和 source 同名避免错误的出现 |
由于主子流程是不同的实例,因此无法通过主流程的 key 查询子流程的任务,在查询子任务时需要使用子流程的 key 来进行查询。
界面操作

使用示例
子流程设计
子流程如图所示,子流程发起后首先进入“审批贷款额度”用户任务节点,审批完成后
由分支网关进行分支决策:贷款额度小于 100w 流程直接结束;贷款额度大于 100w 进入“复核贷
款额度”用户任务节点,审批完成后流程结束。

子流程的XML内容
<process id="ApproveLoanSubProcess" name="子流程-调用活动-审批贷款子流程" isExecutable="true"><startEvent id="ab7ef4cb0c5e6455ab4406613fb6b198f" /><userTask id="a43f40e7a7d60446585661ed8b2232732" name="审批贷款额度"><extensionElements><flowable:formData /><flowable:assigneeType>static</flowable:assigneeType></extensionElements></userTask><sequenceFlow id="a75d9acf085184bc5b49fcbb29a7768e9" sourceRef="ab7ef4cb0c5e6455ab4406613fb6b198f" targetRef="a43f40e7a7d60446585661ed8b2232732" /><exclusiveGateway id="Gateway_09287wv" default="Flow_0nh3xov" /><sequenceFlow id="Flow_1yaqka8" sourceRef="a43f40e7a7d60446585661ed8b2232732" targetRef="Gateway_09287wv" /><userTask id="Activity_1pxhie8" name="复核贷款额度"><extensionElements><flowable:formData /><flowable:assigneeType>static</flowable:assigneeType></extensionElements></userTask><sequenceFlow id="Flow_0nh3xov" name="额度>100万元" sourceRef="Gateway_09287wv" targetRef="Activity_1pxhie8" /><endEvent id="Event_1cgk4gr" /><sequenceFlow id="Flow_1wdrb0h" name="额度<=100万元" sourceRef="Gateway_09287wv" targetRef="Event_1cgk4gr"><conditionExpression xsi:type="tFormalExpression">${loanAmount<=1000000}</conditionExpression></sequenceFlow><sequenceFlow id="Flow_1c8sxxy" sourceRef="Activity_1pxhie8" targetRef="Event_1cgk4gr" /></process>
主流程设计
主流程如图所示,主流程发起后进入“贷款申请”用户任务节点,提交后进入“贷款额
度审批”调用活动节点,父流程进入等待状态,启动并执行上述子流程,子流程结束后父流程继续
执行,进入“发放贷款”用户任务节点,办理完成后流程结束。

主流程的XML内容
<process id="CallActivitySubprocessTest" name="子流程-调用活动" isExecutable="true"><startEvent id="a3d0c6c7163c5499cb41510c83ba21645" /><userTask id="a8c6f47b1424b4115ba9f66434f10529e" name="贷款申请"><extensionElements><flowable:formData /><flowable:assigneeType>static</flowable:assigneeType></extensionElements></userTask><sequenceFlow id="a9b2a0637bfa449e29959c2b21d476125" sourceRef="a3d0c6c7163c5499cb41510c83ba21645" targetRef="a8c6f47b1424b4115ba9f66434f10529e" /><sequenceFlow id="Flow_14yhbzw" sourceRef="a8c6f47b1424b4115ba9f66434f10529e" targetRef="Activity_1q7t28e" /><callActivity id="Activity_1q7t28e" name="贷款额度审批" calledElement="ApproveLoanSubProcess" flowable:inheritVariables="true" flowable:processInstanceName="贷款额度审批" flowable:calledElementType="key"><extensionElements><flowable:assigneeType>static</flowable:assigneeType><flowable:formData /><flowable:modelBpmnExtension>[{"id":"8c7aefbf087f4d680fc36b871d77c967","modelId":"1252465dd6e511eda69100ff2cb2ed0e","modelKey":"ApproveLoanSubProcess","name":"贷款额度审批","appSn":"businessFlow","appName":"财务流程","categoryCode":"zshjt","categoryName":"中石化集团","status":3,"statusName":"已发布"}]</flowable:modelBpmnExtension></extensionElements></callActivity><endEvent id="Event_16u42q4" /><userTask id="Activity_0olujzk" name="发放贷款"><extensionElements><flowable:formData /><flowable:assigneeType>static</flowable:assigneeType></extensionElements></userTask><sequenceFlow id="Flow_1dqsl2g" sourceRef="Activity_1q7t28e" targetRef="Activity_0olujzk" /><sequenceFlow id="Flow_0n0kqrn" sourceRef="Activity_0olujzk" targetRef="Event_16u42q4" /></process>
视频教程
调用活动
相关文章:
Flowable-子流程-调用活动
目录 定义图形标记XML内容界面操作使用示例子流程设计子流程的XML内容主流程设计主流程的XML内容 视频教程 定义 调用活动是在一个流程定义中调用另一个独立的流程定义,通常可以定义一些通用的流程作为 这种调用子流程,供其他多个流程定义复用。这种子流…...
java 并发
目录 什么是线程?什么是进程?为什么要有线程?有什么关系与区别?什么是守护线程?如何创建、启动 Java 线程?线程池参数详细解释Callable接口和Future类偏向锁 / 轻量级锁 / 重量级锁synchronized 和 java.ut…...
【MySQL】DDL和DML
4,DDL:操作数据库 我们先来学习DDL来操作数据库。而操作数据库主要就是对数据库的增删查操作。 4.1 查询 查询所有的数据库 SHOW DATABASES; 运行上面语句效果如下: 上述查询到的是的这些数据库是mysql安装好自带的数据库,我们以后不要操…...
使用python框架FastAPI
中文文档 Python ORM之SQLAlchemy Fastapi大型项目目录规划 SQL数据库操作 依赖项Depends 待看 和APIRouter from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmakerapp FastAPI()SQ…...
Vue实现leafletMap自定义绘制线段 并且删除指定的已绘制的点位
效果:点击表格可实现选中地图点位,删除按钮点击可删除对应点位并且重新绘制线段,点击确定按钮 保存已经绘制的点位信息传给父组件 并且该组件已实现回显 完整的组件代码如下 文件名称为: leafletMakePointYt <!--* Descripti…...
ChatGPT辅助写论文:提升效率与创造力的利器
写作是人类最重要的交流方式之一,也是学术研究中不可或缺的环节。然而,写作并不是一件容易的事情,尤其是对于科研人员来说,他们需要花费大量的时间和精力来撰写高质量的论文,并且面临着各种各样的挑战,如语…...
面试攻略,Java 基础面试 100 问(六)
JAVA 泛型 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本 质是参数化类型,也就是说所操作的数据类型被指定为一个参数。比如我们要写一个排序方法, 能够对整型数组、字符串数组甚至其他任何类型的…...
图解系列 DNS查找过程和DNS缓存
DNS 充当地址簿。它将人类可读的域名 (google.com) 转换为机器可读的 IP 地址 (142.251.46.238)。 开局一张图 来自:https://xiaolishen.medium.com/the-dns-lookup-journey-240e9a5d345c 寻址流程 查询浏览器缓存:当你输入一个域名后,浏览…...
《吐血整理》高级系列教程-吃透Fiddler抓包教程(21)-如何使用Fiddler生成Jmeter脚本-上篇
1.简介 我们知道Jmeter本身可以录制脚本,也可以通过BadBoy,BlazeMeter等工具进行录制,其实Fiddler也可以录制Jmter脚本(而且有些页面,由于安全设置等原因,使用Jmeter直接无法打开录制时,这时就…...
vim中出现复制不对齐-乱码问题
不对齐解决: 使用纯文本模式粘贴:在进入 Vim 编辑器后,先按下 :set paste 进入插入模式,然后再进行粘贴操作。这样可以确保粘贴的文本以纯文本格式插入,而不会触发自动缩进或其他格式化操作 中文乱码问题:…...
华为OD机考真题--单词接龙--带答案
2023华为OD统一考试(AB卷)题库清单-带答案(持续更新)or2023年华为OD真题机考题库大全-带答案(持续更新) 题目描述: 单词接龙的规则是: 用于接龙的单词首字母必须要前一个单词的尾字母…...
排序进行曲-v3.0
文章目录 小程一言归并排序步骤举例总结时间复杂度分析:空间复杂度分析:注意 应用场景总结 实际举例Other 代码实现结果解释 小程一言 这篇文章是在排序进行曲2.0之后的续讲, 这篇文章主要是对归并排序进行细致分析,以及操作。 希…...
编辑列表操作时的一些思考,关于全量和增量操作
假设我有一个这样的页面,需要对用户的信息做编辑操作 角色下面有一些菜单项,通过一张角色-菜单关系表来维护,那么我要在编辑用户后也要对用户角色关系表做修改,是经过两次比较分别计算出需要增加或者删除的角色用户关系࿰…...
【python】Python tkinter库实现重量单位转换器的GUI程序
文章目录 前言学到什么?导入模块和库创建一个GUI窗口定义函数 from_kg()创建标签、输入框、文本框和按钮设置组件的布局运行窗口循环完整代码运行效果结束语 前言 这段代码是一个简单的重量单位转换器的 GUI 程序,使用了 Python 的 tkinter 库来创建图形界面。该程…...
CVPR2023新作:源数据集对迁移学习性能的影响以及相应的解决方案
Title: A Data-Based Perspective on Transfer Learning (迁移学习的基于数据的观点) Affiliation: MIT (麻省理工学院) Authors: Saachi Jain, Hadi Salman, Alaa Khaddaj, Eric Wong, Sung Min Park, Aleksander Mądry Keywords: transfer learning, source dataset, dow…...
《TCP IP 网络编程》第十五章
第 15 章 套接字和标准I/O 15.1 标准 I/O 的优点 标准 I/O 函数的两个优点: 除了使用 read 和 write 函数收发数据外,还能使用标准 I/O 函数收发数据。下面是标准 I/O 函数的两个优点: 标准 I/O 函数具有良好的移植性标准 I/O 函数可以利用…...
新特性解读 | MySQL 8.0 字段信息统计机制
作者通过一个案例详细说明了 MySQL 8.0 字段信息统计机制的相关参数和使用方式。 作者:杨奇龙 网名“北在南方”,资深 DBA,主要负责数据库架构设计和运维平台开发工作,擅长数据库性能调优、故障诊断。 本文来源:原创投…...
基于Java+Swing实现超级玛丽游戏
基于JavaSwing实现超级玛丽游戏 一、系统介绍二、功能展示三、其他系统 一、系统介绍 超级玛丽小游戏的JAVA程序,进入游戏后首先按空格键开始,利用方向键来控制的马里奥的移动,同时检测马里奥与场景中的障碍物和敌人的碰撞,并判断…...
Day12-1-Webpack前端工程化开发
Webpack前端工程化 1 案例-webpack打包js文件 1 在index.html中编写代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><me…...
JUnit教程_编程入门自学教程_菜鸟教程-免费教程分享
教程简介 JUnit是一个Java语言的单元测试框架。它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个。 JUnit有它自己的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。JUnit是由 Erich Gamma 和…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...
SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...
C++.OpenGL (20/64)混合(Blending)
混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...
MySQL 8.0 事务全面讲解
以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...
Ubuntu系统复制(U盘-电脑硬盘)
所需环境 电脑自带硬盘:1块 (1T) U盘1:Ubuntu系统引导盘(用于“U盘2”复制到“电脑自带硬盘”) U盘2:Ubuntu系统盘(1T,用于被复制) !!!建议“电脑…...
6️⃣Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙
Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙 一、前言:离区块链还有多远? 区块链听起来可能遥不可及,似乎是只有密码学专家和资深工程师才能涉足的领域。但事实上,构建一个区块链的核心并不复杂,尤其当你已经掌握了一门系统编程语言,比如 Go。 要真正理解区…...
pgsql:还原数据库后出现重复序列导致“more than one owned sequence found“报错问题的解决
问题: pgsql数据库通过备份数据库文件进行还原时,如果表中有自增序列,还原后可能会出现重复的序列,此时若向表中插入新行时会出现“more than one owned sequence found”的报错提示。 点击菜单“其它”-》“序列”,…...
