Flowable30跳过表达式----------------持续更新中

flowable 跳过用户结点 skipExpression 不起作用 重点— 特别注意,特别注意,特别注意 一定要设置这个值【“_ACTIVITI_SKIP_EXPRESSION_ENABLED”: true】不然没有跳过。 阅读详情

1.什么是跳过表达式?

跳过表达式(Skip Expression) 是 Flowable 提供的一种机制,它允许你在流程执行到某个活动(如用户任务、服务任务等)时,通过一个表达式来动态决定是否要“跳过”这个活动。
简单来说,你在一个任务上配置一个表达式。在流程准备执行这个任务之前,Flowable 会先计算这个表达式的值:
如果表达式的计算结果为 true,那么这个任务就会被自动跳过,流程直接沿着后续的路径继续执行,就好像这个任务已经瞬间完成了一样。
如果表达式的计算结果为 false(或表达式不存在、无效),那么这个任务就会被正常创建和执行(例如,生成一个待办任务给用户)。
这个表达式的语法通常是 JUEL (Java Unified Expression Language),并且可以访问所有当前的流程变量。

2. 为什么需要它?(解决了什么问题)

如果没有跳过表达式,当我们需要根据条件决定是否执行一个任务时,通常需要在流程图上画一个排他网关(Exclusive Gateway),像这样:
A[开始] --> B{需要经理审批吗?};
B – 是 --> C[经理审批];
B – 否 --> D[结束];
C --> D;
种方式完全可行,但当流程变得复杂,充满了各种可选步骤时,流程图上会布满大量的网关和连线,显得非常杂乱,可读性下降。
使用跳过表达式的优势:
简化流程图:你可以将判断逻辑直接内嵌到任务节点中,而不需要额外的网关。这让主干流程看起来更清晰、更线性。
提高灵活性:流程的行为可以完全由流程变量驱动,使得流程能够适应更多变的业务场景。
减少模型维护成本:当业务逻辑(例如,跳过的条件)发生变化时,你可能只需要修改任务的属性,而不需要重新绘制流程图的结构。

使用跳过表达式后的流程图可能看起来是这样的:

A[开始] --> C[经理审批 (如果金额>5000)];
C --> D[结束];

这里的判断逻辑 如果金额>5000 就被隐藏在了“经理审批”任务的属性里。

3. 如何配置和使用?

跳过表达式是 BPMN 2.0 规范中 Flowable 的一个扩展属性,其 XML 属性名为 flowable:skipExpression。
你可以在 BPMN 文件的 或其他任务节点上直接添加这个属性。
示例:一个请假审批流程
假设我们有一个规则:如果请假天数小于等于 1 天,则不需要部门经理审批,直接通过。

<definitions ... xmlns:flowable="http://flowable.org/bpmn">
  ...
  <process id="leaveProcess" name="请假流程">
    <startEvent id="start"/>
    <sequenceFlow sourceRef="start" targetRef="submitLeave"/>

    <userTask id="submitLeave" name="填写请假单"/>
    <sequenceFlow sourceRef="submitLeave" targetRef="managerApproval"/>

    <!-- 部门经理审批任务 -->
    <userTask id="managerApproval" name="部门经理审批"
              flowable:assignee="manager"
              flowable:skipExpression="${leaveDays <= 1}">  <!-- 核心在这里! -->
    </userTask>
    <sequenceFlow sourceRef="managerApproval" targetRef="end"/>

    <endEvent id="end"/>
  </process>
</definitions>

工作流程:
流程启动后,用户在“填写请假单”任务中提交表单,并设置了一个流程变量 leaveDays。
当流程流转到“部门经理审批”任务时,Flowable 引擎会检查 flowable:skipExpression。
它会获取 leaveDays 这个流程变量的值,并计算 ${leaveDays <= 1}。
如果用户请假 0.5 天,leaveDays 为 0.5,表达式结果为 true。于是,managerApproval 任务被跳过,流程直接到达结束节点。
如果用户请假 3 天,leaveDays 为 3,表达式结果为 false。于是,一个名为“部门经理审批”的待办任务会被创建并分配给 manager。

4. 实际应用场景

审批流程:金额小于某个阈值时,跳过高级别审批。
入职流程:如果是内部转岗员工,跳过“新人培训”、“办公用品领取”等步骤。
订单处理:如果是VIP客户,跳过“信用审核”步骤。
数据处理:如果前一个服务任务已经成功校验了数据(并设置了如 dataValid=true 的变量),则跳过后续的“人工数据复核”任务。

5. 注意事项

变量必须存在:表达式中引用的流程变量(如 leaveDays)必须在流程执行到该任务之前就已经被设置。否则,表达式求值时可能会因为找不到变量而报错。一个好的实践是在启动流程或在之前的任务中确保变量被初始化。
表达式的清晰性:虽然跳过表达式简化了图表,但也把逻辑“隐藏”了起来。如果跳过逻辑非常复杂,包含多个 AND 和 OR,那么使用一个排他网关可能会让逻辑更清晰,更易于理解和维护。需要在这两者之间做好权衡。
布尔值变量:一个常见的用法是使用一个布尔型的流程变量来控制,例如 ${skipManagerApproval}。这样,业务逻辑可以在之前的脚本任务或服务任务中计算好,然后把结果(true 或 false)存入这个变量,使得跳过表达式本身非常简洁。

Flowable根据任务id、参数,预测、获取下一任务节点集合、候选用户集合、候选组集合、参与用户id集合等 根据任务id、参数,预测、获取下一任务节点集合、候选用户集合、候选组集合、参与用户id集合等。 阅读详情

相关推荐

Flowable 如何设置线自动跳过

Flowable 如何设置线自动跳过设置启动变量条件设置流程图设置 设置启动变量 variables.put("_ACTIVITI_SKIP_EXPRESSION_ENABLED", true); 条件设置 Map<String, Object> variables = new HashMap<>(); variables.put("input", "right"); variables.put("skipLeft", true); variables.put("skipRight

liuwenjun05101的博客 2677

25.flowable 流程中的自动跳过

项目地址:https://gitee.com/lwj/flowable.git 分支flowable-base 背景:在实际场景中,我们往往会有这样的需求,当流程到达某一个节点的时候,我们让其自动的跳过去,不做任何操作。 如: 1、当当前任务审批的人是空或者空串的时候,如果你不设置跳过,这个任务就会出现无法认领的状态。 2、第一个节点是提交人,本来就是他提交的流程,这个节点我们就没有必要让他还审批...

liuwenjun05101的博客 1万+

工作流定时任务实战:从原理到分布式部署的完整指南

定时任务是自动化流程中的核心技术,它通过预设规则在特定时间触发业务逻辑,实现周期性任务的自动执行。其核心原理在于调度器按照Cron表达式或ISO 8601时间格式,精准控制任务触发时机。在技术价值上,定时任务解放了人力,确保了流程的准时与可靠,是构建自动化系统的基石。常见的应用场景包括数据同步、报表生成和日志清理等周期性作业。本文聚焦于工作流引擎中的定时任务集成,深入探讨了内置定时器与外部调度器两种主流方案,并结合Flowable、Quartz等工具,提供了从单机测试到微服务部署的完整实践路径,帮助开发者构

weixin_34195142的博客 380

Flowable/Activiti之SkipExpression完成自动审批

flowable任务节点自动跳过 1.方法一:设置定时器 2.方法二:SkipExpression 通过(ExecutionListener)执行监听器进行设置 package com.workflow.interceptor; import com.pactera.workflow.utils.ObjectUtils; import org.apache.commons.lang3....

weixin_39102174的博客 1万+

Loop Engineering:构建健壮异步任务与状态管理的工程化范式

在分布式系统和微服务架构中,异步任务调度与状态管理是保障系统可靠性的核心挑战。其原理在于将复杂的、周期性的业务流程抽象为可管理的状态机与任务单元,通过明确的触发机制、状态转换规则和容错策略,实现业务逻辑的工程化编排。这一技术价值在于,它能将传统脆弱的脚本或简单循环,升级为具备可观测性、可恢复性和可扩展性的生产级组件。典型的应用场景包括数据同步管道、订单状态流转、批处理作业和Saga事务管理等。本文以**Celery**和**Spring State Machine**为例,深入解析如何通过Loop Engi

weixin_34129696的博客 396

【审计专栏】第六十五篇 招投标围标串标模式及利益链识别/关联交易/反洗钱01

编号010构建了一个以规则引擎为核心、AI模型为感知、法律法规知识图谱为底座的双轮合规治理体系。可司法采信:规则引擎的输出直接引用法条原文,符合证据链要求可审计追溯:每条规则触发均有完整日志,支持回放可热更新:规则版本Git管理,灰度发布,秒级回滚高性能:Rete算法增量匹配,100亿+主体高并发信创适配:全面支持鲲鹏、飞腾、昇腾、达梦等国产软硬件此体系可以独立部署,也可作为中央企业、地方政府公共资源交易平台的合规监管中台,真正实现“让数据说话、让规则执法、让法律落地”。维度。

weixin_49199313的博客 272

笔记-flowable工作流开启节点自动跳过

需要在启动时将参数_FLOWABLE_SKIP_EXPRESSION_ENABLED设置到流程变量里面去,_FLOWABLE_SKIP_EXPRESSION_ENABLED=true表示开启跳转,如果不设置的话默认是false(不开启跳转)默认false的话在流程图上面设置跳过表达式是不生效的。那么像这个图上面的流程,在设计评审打回以后,回到了工业设计设计节点,工业设计再次提交以后风控不需要再次审核,所以任务需要自动流转过去,避免卡顿停留。...

阿泽的博客 5537

[F2F] Java后端AI大纲

120 道 Java 后端 AI 方向面试题,按六个类别整理:数据与接口契约、高并发与流式响应、状态与架构、性能安全成本、工程化与可观测性、Function Calling 与 RAG。排版沿用 MySQL 经典 50 题的做法,第 3 节把试卷整份摊开供自测,第 4 节按同一套全局编号给参考答案:每题一句一针见血的结论,加 2~4 条能落到白板上的要点,写到具体类名、注解、配置项和阈值。

OxYGC 125

Flowable / 芋道 BPM 面试要点

本文全面梳理了基于芋道 BPM(底层 Flowable 6.8.0)的工作流面试要点。内容涵盖:简历表述与开场总述、芋道 BPM 三层架构与核心链路、流程定义部署/实例发起/任务审批/审批人策略/会签或签/业务回调等具体实现、流程与业务状态一致性保障、单人审批与审批组区别、网关分流实现、常见问题速答。重点深入分布式场景下的状态同步、并发处理、补偿对账机制,以及微服务架构下的最终一致性方案。适用于准备 BPM/工作流相关面试的开发者快速掌握核心知识点。

好看的皮囊千篇一律,有趣的灵魂万里挑一。 429

Java公文流转系统源码部署实战:从解压到跑通审批流程

企业数字化建设中,OA系统与工作流引擎是支撑内部协同的关键基础设施。公文流转作为典型的审批场景,涉及状态机、任务分配、审批链与权限控制等多重技术设计。以Java技术栈实现的公文流转系统,常基于Activiti或Flowable流程引擎搭建,通过BPMN文件定义审批路径,结合Spring Boot、MyBatis与MySQL实现业务数据与流程实例的解耦管理。这类系统不仅适用于课程设计与毕业设计,也能作为企业快速搭建OA审批模块的底座。本文以一份实际源码包为例,讲解从解压验包、环境配置、数据库初始化到编译启动的

weixin_34290631的博客 336

无人机通信安全渗透测试:从信号拦截到GPS欺骗的完整攻防框架

在物联网和智能设备普及的背景下,无线通信安全成为关键基础设施防护的核心环节。其原理在于,通过软件定义无线电等设备对空中的射频信号进行捕获、分析与模拟,从而评估通信协议在加密、认证和防重放等方面的脆弱性。这项技术的价值在于,它能主动发现并修复系统设计缺陷,避免因信号被拦截或欺骗导致设备被劫持、数据泄露等重大安全事件。其应用场景广泛,涵盖消费电子、工业控制及关键基础设施等领域。本文聚焦于无人机这一典型移动物联网终端,深入探讨如何构建一套针对其通信链路的渗透测试方法论,其中涉及信号拦截、协议逆向等关键技术,旨在为

weixin_34128237的博客 389

若依框架深度解析:从Spring Boot脚手架到企业级快速开发实战

在Java企业级开发领域,Spring Boot以其‘约定大于配置’的理念,极大地简化了应用初始化和部署流程,成为构建现代Web服务的基石。其核心原理在于通过自动配置和起步依赖,快速整合主流技术栈,显著提升开发效率。这一技术价值在需要敏捷交付的中后台管理系统开发中尤为突出,例如权限管理、用户体系等通用模块的重复构建。基于Spring Boot的权限管理系统脚手架应运而生,旨在解决这类场景下的开发痛点。若依(RuoYi)框架正是这样一个典型实践,它深度集成了MyBatis-Plus代码生成器和RBAC权限模型

weixin_30642869的博客 529

均值场博弈_平均场博弈(mean field game)

The New Big Fish Called Mean-Field Game Theory原文链接http://www.science4all.org/article/mean-field-games/​www.science4all.org主要内容在经典博弈论中,它对附近其他鱼类的行为做出反应。这是非常复杂的,因为不同的鱼类之间会有大量的相互作用。这意味着经典博弈论对应于一长串高度耦合的方程。...

weixin_34773479的博客 3680

ITSM选型必看:AI全链路、统一数据模型与BPMN三维评估框架

企业在建设IT服务管理体系时,往往面临平台选型难题。传统功能清单对比无法准确衡量平台的长期演进能力,容易造成“上线即落后”的困境。AI全链路能力、统一数据模型、BPMN标准支持度,构成了ITSM平台选型的三大底层评估维度。AI能力需按辅助、半自治到自治划分层级,并通过真实数据盲测验证;统一数据模型决定配置项(CI)扩展与关系图谱的灵活性,是CMDB发挥价值的基础;BPMN标准则保障流程定义的可编排、可迁移性。三者相互支撑,共同决定平台能否适应复杂运维场景及数字化转型需求。结合一套可量化的评分模型与POC方法

weixin_34038293的博客 163

Unity2018连接MySQL数据库

当前在做的一个Unity项目需要连接到MySQL数据库,弄了一整天,排了很多错,终于在Unity上成功连接到MySQL数据库了,所以分享一下,避免有这个需求的朋友不用花那么多时间。 我使用的软件是 Unity20184.0f1 + mysql-8.0.24 导入 MySql.Data.dll 首先需要把 MySql.Data.dll 导入到Assets/Plugins 这个dll需要安装Connector/NET,在安装目录\Assemblies\v4.0中拿到,最好不要下载版本太高的,版本太高导入的时候

ZLX的博客 9449

Comsol 超声空化气泡仿真

当液体中受到高能量的超声波作用时,液体中的压力会发生剧烈变化,形成局部的低压区域。当液体中的压力降低到饱和蒸汽压以下时,就会发生空化现象,即液体中形成微小气泡。这种空化常用于一些工业应用,如清洗、乳化、混合等。这种空化常用于一些医学和生物学应用,如碎石术、肿瘤治疗、细胞破碎等。超声空化的应用非常广泛。在医学领域,超声空化广泛应用于诊断和治疗,如超声造影、超声刀、超声碎石术等。在工业领域,超声空化可用于清洗、乳化、混合等工艺。此外,超声空化还在食品加工、化学合成、环境保护等领域有着重要应用。

声学黑洞仿真工作室 2555

FLOWABLE 流程中的自动跳过

FLOWABLE 流程中的自动跳过

Gblfy_Blog 6501

Win11下WSL2安装Ubuntu22.04避坑指南:从镜像源到C++环境配置

本文提供了一份详细的Win11下WSL2安装Ubuntu22.04的实战避坑指南。内容涵盖从WSL2核心安装、自定义安装路径,到更换国内镜像源以解决更新缓慢问题,并一站式配置完整的C++开发环境(包括GCC、CMake、vcpkg等),最后分享提升开发体验的进阶技巧,助你在Windows上打造高效的Linux开发工作站。

weixin_29260291的博客 562

Flowable 跳跃表达式

@Test public void startProcessByKey(){ Map<String,Object> afT=new HashMap<>(); Map<String,Object> afP=new HashMap<>(); afP.put("_FLOWABLE_SKIP_EXPRESSION_ENABLED",true); String key="jump"; ...

u011982711的博客 1346

【JAVA】海康威视门禁机ISAPI接口开发,人脸上传更新接口

本文实现了一个HTTP工具类HTTPClientUtil,提供GET/POST/PUT/DELETE请求方法,支持摘要认证。工具类封装了Apache HttpClient,设置连接超时、最大连接数等参数,通过DeviceInfoDTO传递设备IP、端口和认证信息。文中还展示了两个应用示例:userInfoAdd()用于添加人员信息,FaceDataRecordAdd()用于添加人脸数据,均通过POST请求与设备ISAPI接口交互。该工具类简化了HTTP请求处理,支持设备管理系统的集成开发。

qq_27246521的博客 587

innovus:Patch Wire(补丁线)

1)选中wire ,shift+A使用Edit Route功能,F3打开edit route对话框。线道Create Patch Wire,设置好层次和宽度。在修补一些min area的drc时,会有一些danling wire的drc冒出来,为了避免这些假错,可以使用工具patch wire功能。2)沿着选中的wire画线即可。如下图,patch wire和regular wire是能看出区别的。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?

m0_61544122的博客 1962

flowable 跳过结点

想要再流程中跳过某个结点,启动时**_FLOWABLE_SKIP_EXPRESSION_ENABLED 这个变量一定要设置 **,且值为true; 再再skipExpression中设置跳过表达式

Commander_Officer的专栏 2597

【华为OD机试真题 新系统】1043、魔法咒语组合 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS)

【华为OD机试真题 新系统】1043、魔法咒语组合 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS) 华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2026e卷,od机试,2026E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2026华为od,如何备战华为od

KJ.JK 281

Flowable的RepositoryService、RuntimeService、TaskService、HistoryService、IdentityService

Flowable的RepositoryService、RuntimeService、TaskService、HistoryService、IdentityService

kimi 5946

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Activiti 6.0 之SkipExpression

惭愧惭愧,这么一个小小的功能整了这么久。 ​ 还是先说一下业务场景吧。在工作流中,我们难免会遇到这样的情况,即一个流程的发起者的身份问题。举个详细的例子。就拿一个公司的报销流程来讲。可能是这样的。 没有优化过的流程图(实在不想画了,太费劲了) 优化过的流程图 ​ 怎么样?看起来是不是清爽了很多?那怎么执行呢?首先,这篇说的是SkipExpression,所以审批不通过

轩少学习之路 5549

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Flowable Unknown property used in expression: xxx

在使用flowable某个用户任务属性:【跳过表达式】功能时,设置了表达式为${noCurrentUser == true},保存流程定义没有问题,在启动流程实例时,发生报错: 因为在启动实例过程中发现 运行时流程变量数据表( act_ru_variable ),没有noCurrentUser这个变量存在。 解决方法一: 在启动实例前,预设下这个变量,给个默认值 Map<String, Object> variables =po.getVariables(); variables.

MTonj的博客 5644

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

上一篇: Flowable29多人会签动态完成条件-------------------持续更新中
下一篇: Flowable31动态表单-----------------------终章
鱼见千寻
博客等级 码龄7年 222粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值