探索 Flowable 后端表达式:简化流程自动化

在这里插入图片描述

什么是后端表达式?

在 Flowable 中,后端表达式是一种强大的工具,用于在流程、案例或决策表执行期间动态获取或设置变量。它还能实现自定义逻辑,或将复杂逻辑委托……

后端表达式在 Flowable 的后端运行,无法访问前端数据,但在 Flowable Design 中,你可以通过带有 ⚡️ 闪电图标的字段轻松使用它们。Flowable 采用统一的表达式语言(UEL),以 ${...} 格式书写,语法简单且功能丰富。

表达式类型

后端表达式分为两种:

  • 值表达式:返回一个值,如布尔、字符串或数字。例如:${variable.property}
  • 方法表达式:调用方法,可带参数。例如:${bean.setPropertyValue('newValue')}

任何暴露为 Spring Bean 的服务都可以在表达式中使用,极大扩展了灵活性。

核心功能与关键字

Flowable 支持上下文相关的对象,如 root(流程或案例实例的顶部对象)和 parent(上层对象)。在 BPMN 中,你还可以使用 execution(当前执行路径)、task(当前任务)以及 authenticatedUserId(当前用户 ID)。CMMN 则支持 caseInstanceplanItemInstance

常用属性示例

  • 流程实例${root.businessKey} 获取业务键。
  • 案例实例${parent.name} 获取案例名称。
  • 定义${definition.version} 获取模型版本。

实用函数

Flowable 提供了丰富的内置函数,简化变量操作、用户分配和数据处理:

  • 变量操作:如 ${var:getOrDefault(varName, defaultValue)} 获取变量或默认值。
  • 流程分配:如 ${bpmn:setAssignee(processInstanceId, userId)} 设置任务受理人。
  • 字符串处理:如 ${flwStringUtils.toLowerCase(text)} 转换小写。
  • 日期时间:如 ${flwTimeUtils.now()} 获取当前时间。
  • JSON 处理:如 ${json:array()} 创建空 JSON 数组。

实际应用场景

假设你有一个流程需要根据部门动态分配任务。通过表达式 ${departmentResolver.getAssignee(execution)},你可以调用自定义的 Spring Bean,根据部门 ID 查找成员并设置任务受理人。这样,流程就能灵活适应不同场景。

自定义表达式

想让表达式更强大?Flowable 支持通过 Spring Bean 或自定义 ELResolver 扩展功能。例如,你可以创建一个解析器,将 ${departmentAssignee} 直接映射到部门受理人,简化流程定义。

为什么选择 Flowable?

Flowable 的后端表达式让流程自动化更智能、更灵活。无论是动态任务分配还是复杂逻辑处理,它都能轻松应对。

想深入了解?访问 Flowable中文文档 查看完整文档和示例,解锁更多可能性!

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

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

相关文章

【Lua】Lua 入门知识点总结

Lua 入门学习笔记 本教程旨在帮助有编程基础的学习者快速入门Lua编程语言。包括Lua中变量的声明与使用,包括全局变量和局部变量的区别,以及nil类型的概念、数值型、字符串和函数的基本操作,包括16进制表示、科学计数法、字符串连接、函数声明…

符号速率估计——小波变换法

[TOC]符号速率估计——小波变换法 一、原理 1.Haar小波变换 小波变换在信号处理领域被成为数学显微镜,不同于傅里叶变换,小波变换可以观测信号随时间变换的频谱特征,因此,常用于时频分析。   当小波变换前后位置处于同一个码元…

android contentProvider 踩坑日记

写此笔记原因 学习《第一行代码》到第8章节实现provider时踩了一些坑,因此记录下来给后来人和自己一个提示,仅此而已。 包含内容 Sqlite数据库CURD内容provider界面provider项目中书籍管理provider实现逻辑用adb shell确认providercontentResolver接收…

Eureka、LoadBalance和Nacos

Eureka、LoadBalance和Nacos 一.Eureka引入1.注册中心2.CAP理论3.常见的注册中心 二.Eureka介绍1.搭建Eureka Server 注册中心2.搭建服务注册3.服务发现 三.负载均衡LoadBalance1.问题引入2.服务端负载均衡3.客户端负载均衡4.Spring Cloud LoadBalancer1).快速上手2)负载均衡策…

【开关电源】关于GaN反激电源开关噪声

文章目录 0 前言1 设计信息1.1 设计需求1.2 原理图1.3 电源表现 2 原因分析3 横向对比TI UCG28826 (GaN)采购的普通QR反激变换器 4 总结 0 前言 笔者原计划设计一款省电的,效率尚可的,稳定的2路输出反激电源,用于系统…

DOCA介绍

本文分为两个部分: DOCA及BlueField介绍如何运行DOCA应用,这里以DNS_Filter为例子做大致介绍。 DOCA及BlueField介绍: 现代企业数据中心是软件定义的、完全可编程的基础设施,旨在服务于跨云、核心和边缘环境的高度分布式应用工作…

mybatis mapper.xml中使用枚举

重点:application.propertis配置类 #TypeEnumHandler 这个类的包名,不是全路径 mybatis.type-handlers-packagecom.fan.test.handler两个枚举类: public enum StatusEnum {DELETED(0),ACTIVE(1);private final int code;StatusEnum(int cod…

鸿蒙生态:鸿蒙生态校园行心得

(个人观点,仅供参考) 兄弟们,今天来浅浅聊一聊这次的设立在长沙的鸿蒙生态行活动。 老样子,我们先来了解一下这个活动: Harmon&#x…

【速写】多LoRA并行衍生的一些思考

迁移学习上的一个老问题,怎么做多领域的迁移?以前的逻辑认为领域迁移属于是对参数做方向性的调整,如果两个领域方向相左,实际上不管怎么加权相加都是不合理的。 目前一些做法想着去观察LoRA权重矩阵中的稠密块与稀疏块&#xff0…

【Delphi 基础知识 44】接口interface的应用

目录 1. 前言2. 接口有哪些优势2.1. 实现多态性2.2 实现多重(解决单继承限制)2.3 解耦代码(依赖注入)2.4 便于测试(模拟接口)2.5 跨语言互操作性(COM支持)1. 前言 总结为一句话就是:接口只告诉你要做什么,而类会告诉你应该怎么做 下面是最简单的接口实现 typeIMyIn…

09.传输层协议 ——— TCP协议

文章目录 TCP协议 谈谈可靠性TCP协议格式 序号与确认序号窗口大小六个标志位 确认应答机制(ACK)超时重传机制连接管理机制 三次握手四次挥手 流量控制滑动窗口拥塞控制延迟应答捎带应答面向字节流粘包问题TCP异常情况TCP小结基于TCP的应用层协议 TCP协…

NLP高频面试题(五十一)——LSTM详解

长短期记忆网络(LSTM)相较于传统循环神经网络(RNN)的核心改进在于通过引入记忆单元(cell state)和门机制(gating mechanism)来有效缓解梯度消失与梯度爆炸问题,从而更好地捕捉长距离依赖关系 。在其网络结构中,信息通过输入门(input gate)、遗忘门(forget gate)和…

SpringCloud组件—Eureka

一.背景 1.问题提出 我们在一个父项目下写了两个子项目,需要两个子项目之间相互调用。我们可以发送HTTP请求来获取我们想要的资源,具体实现的方法有很多,可以用HttpURLConnection、HttpClient、Okhttp、 RestTemplate等。 举个例子&#x…

无需花钱购买域名服务器!使用 VuePress + Github 30分钟搭建属于自己的博客网站(保姆级教程)

前言 GitHub Pages 提供免费全球加速的服务器资源,VuePress 将 Markdown 变成艺术品级的网页,仅需 30 分钟,你便可以像提交代码一样发布文章,过程完全免费。 博客搭建好的效果如下:https://honorsong.github.io/exam…

提交到Gitee仓库

文章目录 注册配置公钥创建空白的码云仓库把本地项目上传到码云对应的空白仓库中 注册 注册并激活码云账号( 注册页面地址:https://gitee.com/signup ) 可以在自己C盘/用户/用户名/.ssh 可以看到 有id_rsa.pub 以前在GitHub注册时搞过&…

如何在 Java 中从 PDF 文件中删除页面(教程)

由于 PDF 文件格式不是 Java 原生支持的,因此要从 PDF 中删除页面,你需要使用外部库。 本教程介绍如何使用 JPedal 来实现这一功能。 开始使用 • 将 JPedal 添加到你的类路径或模块路径中(可从官网下载安装试用版 JAR 文件) •…

机器学习第二篇 多变量线性回归

数据集:世界幸福指数数据集中的变量有幸福指数排名、国家/地区、幸福指数得分、人均国内生产总值、健康预期寿命、自由权、社会支持、慷慨程度、清廉指数。我们选择GDP per Capita和Freedom,来预测幸福指数得分。 文件一:linear,…

位运算,状态压缩dp(算法竞赛进阶指南学习笔记)

目录 移位运算一些位运算的操作最短 Hamilton 路径(状态压缩dp模板,位运算) 0x是十六进制常数的开头;本身是声明进制,后面是对应具体的数; 数组初始化最大值时用0x3f赋值; 移位运算 左移 把二…

Java高频面试之并发编程-05

hello啊,各位观众姥爷们!!!本baby今天来报道了!哈哈哈哈哈嗝🐶 面试官:线程有哪些调度方法? 在Java中,线程的调用方法主要包括以下几种方式,每种方式适用于…

进程的同步和互斥

进程同步(synchronous) ✅通俗理解: 就像在排队买饭,一个一个来,前面的人不走,后面的人就不能干事。 进程同步就是:多个进程之间需要协调,有先后顺序,一个进程要等另一…