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

Activiti7(流程变量+网关)

Activiti7(流程变量+网关)(3.17)

一、流程变量

1.流程变量类型:

类型名称(Type name) 对应 Java 类型 核心描述 适用场景 & 注意事项
string java.lang.String 字符串类型,原始 JSON 文本也会按此类型解析 / 存储 存储文本、编号、描述等;支持直接读写 JSON 字符串
integer java.lang.Integer 整型,读写时会转换为文本格式持久化 常规整数数值(-2¹⁴⁷⁴⁸³⁶⁴⁸ ~ 2¹⁴⁷⁴⁸³⁶⁴⁷);业务计数、序号等
short java.lang.Short 短整型,读写时转换为文本格式持久化 小范围整数(-32768 ~ 32767);节省存储开销的场景
long java.lang.Long 长整型,读写时转换为文本格式持久化 大整数(-9²²³³⁷²⁰³⁶⁸⁵⁴⁷⁷⁵⁸⁰⁸⁸ ~ 9²²³³⁷²⁰³⁶⁸⁵⁴⁷⁷⁵⁸⁰⁸⁷);时间戳、ID 等
double java.lang.Double 双精度浮点型,读写时转换为文本格式持久化 小数数值(如金额、比例、精度要求不高的计算)
boolean java.lang.Boolean 布尔型,读写时转换为文本格式持久化 状态标记(如是否通过、是否生效)、流程分支判断条件
date java.util.Date 日期类型,写入时会按日期格式序列化 存储时间节点、截止日期、创建时间等;需注意时区转换
binary byte[](字节数组) 二进制变量,按字节数组处理,支持原始数据流 存储文件、图片、二进制流数据;不支持直接文本编辑
serializable 实现 java.io.Serializable 的 Java 对象 可序列化 Java 对象的二进制表示,存储为二进制流,关联原始二进制流 URL 存储自定义业务对象(如 POJO、DTO);复杂对象需谨慎,建议优先用 JSON 字符串替代

2.流程变量可以作用于:

  • 节点上:

    可以在 assignee 处设置 UEL 表达式,表达式的值为任务的负责人,比如: ${assignee}, assignee 就是一个流程变量名称。

  • 连线上:

    可以在连线上设置UEL表达式,决定流程走向。

    • true 则执行该连线

    • false 则不执行

      使用:画图时,在连线上使用${} UEL表达式的方式填写上内容(条件表达式)

      赋值:

      • 启动流程时
      • 使用到流程变量之前

image-20260317162612659

3.流程变量Plus版:

流程变量的三种特殊情况:

(1)若启动程序时,我们没有为连线上的流程变量赋值会怎样?

//启动程序不会报错。若使用到了该流程变量则会抛异常。(若启动时就使用到了该流程变量则会直接报错)
Caused by: javax.el.PropertyNotFoundException: Cannot resolveidentifierday

(2)若启动程序时,多条连线上的条件都不满足会怎样?

//会抛异常。找不到一条可以解析的出口
org.activiti.engine.ActivitiException: No outgoing sequence flow of element 'sid-628e4932-8d64-4720-8fel-320ed092c2a0' could be selected for continuing the process

(3)若启动程序时,多条连线上的条件都满足会怎样?

//会将所有满足条件的连线都执行。

二、网关

网关就是来解决一些特殊情况下出现的问题

(1)排他网关

image-20210603144113187

只能解决③问题

若启动程序时,我们没有为连线上的流程变量赋值会怎样?(与流程变量一致)

//启动程序不会报错。若使用到了该流程变量则会抛异常。(若启动时就使用到了该流程变量则会直接报错)
Caused by: javax.el.PropertyNotFoundException: Cannot resolveidentifierday

若启动程序时,多条连线上的条件都不满足会怎样?(与流程变量一致)

//会抛异常。找不到一条可以解析的出口
org.activiti.engine.ActivitiException: No outgoing sequence flow of element 'sid-628e4932-8d64-4720-8fel-320ed092c2a0' could be selected for continuing the process

若启动程序时,多条连线上的条件都满足会怎样?

//画图时,先给谁连线,谁执行。(只会选择一条执行)

(2)并行网关

image-20210603145537438

基于进和出的原则。

不会解析连线上的流程变量,也就是怎么进来的就怎么出去。

当进入网关后,需要将所有的节点都执行成功后,才能走到下一节点。

若启动程序时,我们没有为连线上的流程变量赋值会怎样?

//都执行

若启动程序时,多条连线上的条件都不满足会怎样?

//都执行

若启动程序时,多条连线上的条件都满足会怎样?

//都执行

注意:

并行网关是不会解析连线上的流程变量,会解析节点上的流程变量。

  • 若节点上不设置值,还是会抛异常。

(3)包含网关

image-20210603153330174

若启动程序时,我们没有为连线上的流程变量赋值会怎样?(与流程变量一致)

//启动程序不会报错。若使用到了该流程变量则会抛异常。(若启动时就使用到了该流程变量则会直接报错)
Caused by: javax.el.PropertyNotFoundException: Cannot resolveidentifierday

若启动程序时,多条连线上的条件都不满足会怎样?

//那就都不执行,走没有条件的连线。

若启动程序时,多条连线上的条件都满足会怎样?

//所有满足条件的连线及没有条件的连线都会执行。
http://www.jsqmd.com/news/491843/

相关文章:

  • 程序员生存图鉴2026:技术深耕、职业破局与可持续发展
  • 1126b移植SE8025T
  • NodePy 自动化办公节点包:零代码实现办公自动化
  • day114(3.16)——leetcode面试经典150
  • QtScrcpy官网下载与使用教程:安卓投屏神器完全指南(2026最新版) - xiema
  • FX5U PLC数据类型详解
  • 基于SpringBoot的幼儿园管理系统
  • springboot基于微信小程序的摄影作品分享交流平台设计与实现
  • 大模型基础
  • 网关核心功能全解析
  • python django框架开发实践
  • 开理发店3年,我最后还是关掉了那个“前台”
  • 快期指令系统优势全解析:高效合规的期现交易新范式
  • JavaWeb 笔记 02
  • PyTorch保姆级安装教程
  • 市场有实力的青岛工厂短视频团队哪家可靠
  • 2026网络安全转行全解析:薪资水平、工作节奏、前景趋势,一文讲透!
  • 2026高职统计与大数据分析,需要学编程吗?
  • 反向海淘代购系统架构设计与实现
  • 2026十大正版图库推荐,免费高清素材合规使用指南 - 品牌2025
  • 基于LangChain的RAG与Agent智能体开发 - Ollama简介以及安装和使用
  • springboot基于微信小程序的个体商业店铺商品展示与交易管理系统
  • k8s部署EFK日志管理系统
  • 工业机器人工件坐标创建与仿真运行的流程与问题及反思
  • 河南爱彼爱和新材料 | 打造低成本高敏捷数字化转型的河南标杆 - 搭贝
  • 三段式接地与相间距离保护仿真模型(Matlab/Simulink)及其实践应用
  • 领英更新其信息流算法
  • 基于Spring Boot与MySQL的二手车销售管理系统
  • comsol sofc固体氧化物燃料电池 单通道非绝热逆流固体氧化物燃料电池模型,包括阴阳极气...
  • 散列表初探:键值对存储的魔法