当前位置: 首页 > news >正文

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="额度&#62;100万元" sourceRef="Gateway_09287wv" targetRef="Activity_1pxhie8" /><endEvent id="Event_1cgk4gr" /><sequenceFlow id="Flow_1wdrb0h" name="额度&#60;=100万元" sourceRef="Gateway_09287wv" targetRef="Event_1cgk4gr"><conditionExpression xsi:type="tFormalExpression">${loanAmount&lt;=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内容 视频教程 定义 调用活动是在一个流程定义中调用另一个独立的流程定义&#xff0c;通常可以定义一些通用的流程作为 这种调用子流程&#xff0c;供其他多个流程定义复用。这种子流…...

java 并发

目录 什么是线程&#xff1f;什么是进程&#xff1f;为什么要有线程&#xff1f;有什么关系与区别&#xff1f;什么是守护线程&#xff1f;如何创建、启动 Java 线程&#xff1f;线程池参数详细解释Callable接口和Future类偏向锁 / 轻量级锁 / 重量级锁synchronized 和 java.ut…...

【MySQL】DDL和DML

4&#xff0c;DDL:操作数据库 我们先来学习DDL来操作数据库。而操作数据库主要就是对数据库的增删查操作。 4.1 查询 查询所有的数据库 SHOW DATABASES; 运行上面语句效果如下&#xff1a; 上述查询到的是的这些数据库是mysql安装好自带的数据库&#xff0c;我们以后不要操…...

使用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自定义绘制线段 并且删除指定的已绘制的点位

效果&#xff1a;点击表格可实现选中地图点位&#xff0c;删除按钮点击可删除对应点位并且重新绘制线段&#xff0c;点击确定按钮 保存已经绘制的点位信息传给父组件 并且该组件已实现回显 完整的组件代码如下 文件名称为&#xff1a; leafletMakePointYt <!--* Descripti…...

ChatGPT辅助写论文:提升效率与创造力的利器

写作是人类最重要的交流方式之一&#xff0c;也是学术研究中不可或缺的环节。然而&#xff0c;写作并不是一件容易的事情&#xff0c;尤其是对于科研人员来说&#xff0c;他们需要花费大量的时间和精力来撰写高质量的论文&#xff0c;并且面临着各种各样的挑战&#xff0c;如语…...

面试攻略,Java 基础面试 100 问(六)

JAVA 泛型 泛型提供了编译时类型安全检测机制&#xff0c;该机制允许程序员在编译时检测到非法的类型。泛型的本 质是参数化类型&#xff0c;也就是说所操作的数据类型被指定为一个参数。比如我们要写一个排序方法&#xff0c; 能够对整型数组、字符串数组甚至其他任何类型的…...

图解系列 DNS查找过程和DNS缓存

DNS 充当地址簿。它将人类可读的域名 (google.com) 转换为机器可读的 IP 地址 (142.251.46.238)。 开局一张图 来自&#xff1a;https://xiaolishen.medium.com/the-dns-lookup-journey-240e9a5d345c 寻址流程 查询浏览器缓存&#xff1a;当你输入一个域名后&#xff0c;浏览…...

《吐血整理》高级系列教程-吃透Fiddler抓包教程(21)-如何使用Fiddler生成Jmeter脚本-上篇

1.简介 我们知道Jmeter本身可以录制脚本&#xff0c;也可以通过BadBoy&#xff0c;BlazeMeter等工具进行录制&#xff0c;其实Fiddler也可以录制Jmter脚本&#xff08;而且有些页面&#xff0c;由于安全设置等原因&#xff0c;使用Jmeter直接无法打开录制时&#xff0c;这时就…...

vim中出现复制不对齐-乱码问题

不对齐解决&#xff1a; 使用纯文本模式粘贴&#xff1a;在进入 Vim 编辑器后&#xff0c;先按下 :set paste 进入插入模式&#xff0c;然后再进行粘贴操作。这样可以确保粘贴的文本以纯文本格式插入&#xff0c;而不会触发自动缩进或其他格式化操作 中文乱码问题&#xff1a;…...

华为OD机考真题--单词接龙--带答案

2023华为OD统一考试&#xff08;AB卷&#xff09;题库清单-带答案&#xff08;持续更新&#xff09;or2023年华为OD真题机考题库大全-带答案&#xff08;持续更新&#xff09; 题目描述&#xff1a; 单词接龙的规则是&#xff1a; 用于接龙的单词首字母必须要前一个单词的尾字母…...

排序进行曲-v3.0

文章目录 小程一言归并排序步骤举例总结时间复杂度分析&#xff1a;空间复杂度分析&#xff1a;注意 应用场景总结 实际举例Other 代码实现结果解释 小程一言 这篇文章是在排序进行曲2.0之后的续讲&#xff0c; 这篇文章主要是对归并排序进行细致分析&#xff0c;以及操作。 希…...

编辑列表操作时的一些思考,关于全量和增量操作

假设我有一个这样的页面&#xff0c;需要对用户的信息做编辑操作 角色下面有一些菜单项&#xff0c;通过一张角色-菜单关系表来维护&#xff0c;那么我要在编辑用户后也要对用户角色关系表做修改&#xff0c;是经过两次比较分别计算出需要增加或者删除的角色用户关系&#xff0…...

【python】Python tkinter库实现重量单位转换器的GUI程序

文章目录 前言学到什么?导入模块和库创建一个GUI窗口定义函数 from_kg()创建标签、输入框、文本框和按钮设置组件的布局运行窗口循环完整代码运行效果结束语 前言 这段代码是一个简单的重量单位转换器的 GUI 程序&#xff0c;使用了 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 函数的两个优点&#xff1a; 除了使用 read 和 write 函数收发数据外&#xff0c;还能使用标准 I/O 函数收发数据。下面是标准 I/O 函数的两个优点&#xff1a; 标准 I/O 函数具有良好的移植性标准 I/O 函数可以利用…...

新特性解读 | MySQL 8.0 字段信息统计机制

作者通过一个案例详细说明了 MySQL 8.0 字段信息统计机制的相关参数和使用方式。 作者&#xff1a;杨奇龙 网名“北在南方”&#xff0c;资深 DBA&#xff0c;主要负责数据库架构设计和运维平台开发工作&#xff0c;擅长数据库性能调优、故障诊断。 本文来源&#xff1a;原创投…...

基于Java+Swing实现超级玛丽游戏

基于JavaSwing实现超级玛丽游戏 一、系统介绍二、功能展示三、其他系统 一、系统介绍 超级玛丽小游戏的JAVA程序&#xff0c;进入游戏后首先按空格键开始&#xff0c;利用方向键来控制的马里奥的移动&#xff0c;同时检测马里奥与场景中的障碍物和敌人的碰撞&#xff0c;并判断…...

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建立&#xff0c;逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个。 JUnit有它自己的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。JUnit是由 Erich Gamma 和…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

Cursor实现用excel数据填充word模版的方法

cursor主页&#xff1a;https://www.cursor.com/ 任务目标&#xff1a;把excel格式的数据里的单元格&#xff0c;按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例&#xff0c;…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

06 Deep learning神经网络编程基础 激活函数 --吴恩达

深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象&#xff1a;mysql已经安装&#xff0c;但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时&#xff0c;可能是因为以下几个原因&#xff1a;1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

深度学习习题2

1.如果增加神经网络的宽度&#xff0c;精确度会增加到一个特定阈值后&#xff0c;便开始降低。造成这一现象的可能原因是什么&#xff1f; A、即使增加卷积核的数量&#xff0c;只有少部分的核会被用作预测 B、当卷积核数量增加时&#xff0c;神经网络的预测能力会降低 C、当卷…...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例&#xff0c;其中使用的是 Module Federation 和 npx-build-plus 实现了主应用&#xff08;Shell&#xff09;与子应用&#xff08;Remote&#xff09;的集成。 &#x1f6e0;️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下&#xff0c;卢森堡罗伯特舒曼医院&#xff08;the Robert Schuman Hospitals, HRS&#xff09;凭借在无菌制剂生产流程中引入增强现实技术&#xff08;AR&#xff09;创新项目&#xff0c;荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...