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

别再手动循环了!用Activiti6.0多实例节点搞定多人审批(附完整Java代码)

Activiti6.0多实例节点实战告别低效循环实现优雅会签审批当团队需要集体决策时传统的手动循环审批代码就像用算盘处理大数据——既笨拙又容易出错。想象一下部门团建审批场景财务要审核预算、HR要确认人员、主管要评估时间每个环节都需要多人参与。Activiti6.0的多实例节点功能正是为解决这类协作难题而生。1. 多实例节点核心机制解析多实例节点的本质是一任务多执行模式。与普通任务节点不同它通过内置的循环引擎自动处理任务分发和结果聚合。就像快递柜的智能分配系统不需要人工指定每个包裹的位置。关键内置变量解析变量名作用域典型用途示例nrOfInstances流程实例级别获取总审批人数${nrOfInstances}nrOfActiveInstances流程实例级别检查当前活跃任务数nrOfCompletedInstances流程实例级别计算完成比例${nrOfCompletedInstances/nrOfInstances}loopCounter任务实例级别获取当前处理人在集合中的索引位置这些变量在运行时由引擎自动维护开发者无需手动更新。例如在团建审批中当财务部3人中已有2人同意时nrOfCompletedInstances会自动变为2。注意loopCounter是任务级变量不同审批人看到的值不同不能用于流程级判断2. 完整会签审批实现路径2.1 流程定义配置实战以部门团建审批为例我们需要在.bpmn文件中定义多实例用户任务userTask idteamBuildingApproval name团建方案会签 activiti:assignee${approver} multiInstanceLoopCharacteristics isSequentialfalse activiti:collection${approverList} activiti:elementVariableapprover completionCondition ${nrOfCompletedInstances/nrOfInstances 0.6} /completionCondition /multiInstanceLoopCharacteristics /userTask这段配置实现了并行会签模式isSequentialfalse动态审批人列表${approverList}变量传入自定义完成条件60%成员通过即生效2.2 Java服务层集成在Spring Boot项目中启动流程的典型代码Autowired private RuntimeService runtimeService; public void startTeamBuildingProcess(TeamBuildingRequest request) { MapString, Object variables new HashMap(); // 设置审批人列表实际项目可从数据库获取 variables.put(approverList, Arrays.asList( finance_manager, hr_director, dept_leader, team_leader )); // 设置其他业务变量 variables.put(budget, request.getBudget()); variables.put(participants, request.getParticipantCount()); ProcessInstance instance runtimeService.startProcessInstanceByKey( teamBuildingProcess, variables ); log.info(启动团建审批流程{}, instance.getId()); }2.3 任务查询与处理审批人获取待办任务的示例public ListTask getPendingApprovals(String userId) { return taskService.createTaskQuery() .taskAssignee(userId) .processDefinitionKey(teamBuildingProcess) .active() .list(); } public void completeApproval(String taskId, boolean approved) { MapString, Object taskVars new HashMap(); taskVars.put(approved, approved); taskService.complete(taskId, taskVars); log.debug(完成任务审批taskId{}, 结果{}, taskId, approved); }3. 高级应用场景与避坑指南3.1 动态调整审批人列表有时需要在流程运行时调整审批人。通过RuntimeService的setVariable方法实现public void updateApprovers(String processInstanceId, ListString newApprovers) { runtimeService.setVariable( processInstanceId, approverList, newApprovers ); // 注意已有任务不受影响只对新生成实例有效 }3.2 常见问题排查表现象可能原因解决方案任务未生成collection变量未设置或为空检查流程变量传递完成条件不触发表达式语法错误使用activiti:expressionManager测试审批人看到重复任务变量作用域冲突确保elementVariable名称唯一顺序会签卡住前序任务未完成检查nrOfActiveInstances值3.3 性能优化建议对于大规模会签超过50人避免在collection中直接存储大量数据考虑分批次处理使用子流程对nrOfInstances等变量建立流程索引// 优化后的批量查询 ListTask tasks taskService.createTaskQuery() .processInstanceId(processInstanceId) .taskAssignee(userId) .initializeFormKeys() // 预加载表单 .listPage(0, 100); // 分页处理4. 业务规则与审批策略设计4.1 多维度审批策略根据不同业务场景设计完成条件!-- 简单多数通过 -- completionCondition ${nrOfCompletedInstances nrOfInstances/2} /completionCondition !-- 关键角色必须同意 -- completionCondition ${(nrOfCompletedInstances 3) contains(approvedUsers, ceo)} /completionCondition4.2 混合审批模式实现结合顺序和并行审批的优势multiInstanceLoopCharacteristics isSequentialtrue activiti:collection${firstPhaseApprovers} !-- 第一阶段顺序审批 -- /multiInstanceLoopCharacteristics multiInstanceLoopCharacteristics isSequentialfalse activiti:collection${secondPhaseApprovers} !-- 第二阶段并行审批 -- /multiInstanceLoopCharacteristics这种模式适合需要先由主管初审再交由部门全员表决的场景。

相关文章:

别再手动循环了!用Activiti6.0多实例节点搞定多人审批(附完整Java代码)

Activiti6.0多实例节点实战:告别低效循环,实现优雅会签审批 当团队需要集体决策时,传统的手动循环审批代码就像用算盘处理大数据——既笨拙又容易出错。想象一下部门团建审批场景:财务要审核预算、HR要确认人员、主管要评估时间&a…...

Qwen3-0.6B-FP8轻量AI助手搭建:基于开源镜像的开发者私有化部署方案

Qwen3-0.6B-FP8轻量AI助手搭建:基于开源镜像的开发者私有化部署方案 想在自己的电脑或服务器上拥有一个专属的AI助手,但又担心大模型太吃资源、部署太复杂?今天,我们就来聊聊如何用Qwen3-0.6B-FP8这个“小身材、大能量”的模型&a…...

StructBERT零样本分类-中文-base服务监控:Prometheus+Grafana指标采集配置

StructBERT零样本分类-中文-base服务监控:PrometheusGrafana指标采集配置 1. 模型介绍与监控需求 StructBERT零样本分类模型是阿里达摩院专门为中文文本处理设计的智能分类工具。这个模型最大的特点是"零样本"能力——你不需要准备训练数据,…...

ArduinoOcpp:轻量级OCPP-J 1.6嵌入式客户端实现

1. ArduinoOcpp项目概述ArduinoOcpp是一个面向嵌入式微控制器的OCPP-J 1.6客户端实现,采用可移植C/C编写,专为资源受限的电动汽车供电设备(EVSE)设计。该库并非仅限于Arduino生态,其核心设计目标是跨平台兼容性——已验…...

当动态文档生成器“罢工“时:技术深潜与修复实战

当动态文档生成器"罢工"时:技术深潜与修复实战 【免费下载链接】docxtemplater Generate docx, pptx, and xlsx from templates (Word, Powerpoint and Excel documents), from Node.js, the Browser and the command line / Demo: https://www.docxtempl…...

RMBG-2.0高并发处理方案:基于Redis的任务队列实现

RMBG-2.0高并发处理方案:基于Redis的任务队列实现 1. 为什么RMBG-2.0需要高并发支持 电商运营人员小张最近遇到一个实际问题:每天要为上千款商品图去除背景,每张图单独处理虽然效果不错,但用单机部署的RMBG-2.0模型,…...

道格拉斯-普克算法在GPS轨迹优化中的实战应用与性能分析

1. 道格拉斯-普克算法在GPS轨迹处理中的核心价值 当你打开手机地图查看历史运动轨迹时,可曾想过那些流畅的线条背后隐藏着怎样的数据处理魔法?这就是道格拉斯-普克算法的用武之地。作为轨迹抽稀领域的经典算法,它能将成千上万的原始GPS点压缩…...

AI智能二维码工坊部署规范:企业IT标准下的安装流程制定

AI智能二维码工坊部署规范:企业IT标准下的安装流程制定 1. 引言:为什么企业需要标准化的二维码工具部署? 想象一下这个场景:市场部急需为新品发布会生成500个带Logo的二维码,IT部门临时从网上找了个开源工具&#xf…...

Ollama部署本地大模型:LFM2.5-1.2B-Thinking在AMD CPU/苹果M系列/安卓NPU上的实测对比

Ollama部署本地大模型:LFM2.5-1.2B-Thinking在AMD CPU/苹果M系列/安卓NPU上的实测对比 1. 实测背景与模型介绍 最近在测试各种本地大模型时,发现了一个很有意思的模型——LFM2.5-1.2B-Thinking。这个模型虽然只有12亿参数,但据说性能可以媲…...

Grbl CNC固件深度配置指南:从原理到实战的进阶之路

Grbl CNC固件深度配置指南:从原理到实战的进阶之路 【免费下载链接】grbl grbl: 一个高性能、低成本的CNC运动控制固件,适用于Arduino,支持多种G代码命令,适用于CNC铣削。 项目地址: https://gitcode.com/gh_mirrors/grb/grbl …...

Realtek 8852CE Linux驱动性能优化与架构调优解决方案

Realtek 8852CE Linux驱动性能优化与架构调优解决方案 【免费下载链接】rtw89 Driver for Realtek 8852AE, an 802.11ax device 项目地址: https://gitcode.com/gh_mirrors/rt/rtw89 在Linux系统中部署Realtek 8852CE、8852AE、8852BE等Wi-Fi 6/7无线网卡时,…...

S7-200 PLC在变电站变压器自动化中的奇幻之旅:组态王变压器强迫油循环风冷控制探秘

No.1219 S7-200 PLC在变电站变压器自动化中的应用 组态王变压器强迫油循环风冷控制带解释的梯形图接线图原理图图纸,io分配,组态画面在变电站的复杂运作体系里,变压器就如同心脏一般重要。而保证变压器稳定运行的关键之一,便是有效…...

从像素操作到目标追踪:OpenCV算子进阶路线图(含版本适配建议)

从像素操作到目标追踪:OpenCV算子进阶路线图(含版本适配建议) 计算机视觉工程师在工业级项目中常面临一个核心挑战:如何在OpenCV版本迭代中保持代码的稳定性和性能。本文将从实际项目经验出发,系统梳理从基础像素操作到…...

Navicat vs DBeaver:从企业级部署到个人开发者的数据库管理工具选型指南

1. 数据库管理工具的核心战场:Navicat与DBeaver的定位差异 第一次接触数据库管理工具的新手,往往会陷入"功能越多越好"的误区。我在2015年负责公司数据库工具选型时,就曾犯过这个错误——当时团队花了3万美元采购某款全能型工具&am…...

Gemma-3-270m保姆级教程:零配置Ollama环境快速调用推理

Gemma-3-270m保姆级教程:零配置Ollama环境快速调用推理 想体验谷歌最新的轻量级大模型,但又担心环境配置太复杂?今天,我们就来手把手教你,如何在零配置的情况下,快速玩转Gemma-3-270m模型。整个过程就像打…...

translategemma-4b-it部署案例:基于Ollama的55语种图文翻译服务搭建

translategemma-4b-it部署案例:基于Ollama的55语种图文翻译服务搭建 本文介绍如何使用Ollama快速部署translategemma-4b-it模型,搭建支持55种语言的图文翻译服务,无需复杂配置即可实现专业级翻译效果。 1. 环境准备与模型部署 1.1 系统要求与…...

七年老项目MaskRCNN复活记:用Anaconda+Python3.6.8搞定TensorFlow 1.13.1环境(附完整依赖清单)

经典CV项目复活指南:用Anaconda精准构建MaskRCNN历史环境 在计算机视觉领域,有些经典项目就像老式跑车——设计精良但维护困难。MaskRCNN就是这样一个典型案例,它在2017年提出的实例分割方案至今仍被许多论文引用,但官方代码却因T…...

告别AI编程的‘玄学’:手把手教你用Qwen Coder的PRP框架,让代码生成稳定又靠谱

告别AI编程的“玄学”:用PRP框架打造确定性代码生成流程 第一次用AI生成代码时,我盯着屏幕上那堆语法错误和逻辑混乱的代码,感觉像在玩抽奖游戏——永远不知道下一次生成会得到什么。这种“开盲盒”式的开发体验,让不少开发者对AI…...

C语言GUI开发避坑指南:GTK/Qt/WinAPI三大库性能对比与选型建议

C语言GUI开发避坑指南:GTK/Qt/WinAPI三大库性能对比与选型建议 在嵌入式设备、桌面应用和快速原型开发领域,C语言GUI框架的选择往往决定了项目的成败。面对GTK、Qt和WinAPI这三个主流选项,开发者常陷入性能、资源消耗和开发效率的权衡困境。本…...

RAG系统优化必备:Qwen3-Reranker-0.6B轻量部署与集成实战

RAG系统优化必备:Qwen3-Reranker-0.6B轻量部署与集成实战 你是否遇到过这样的场景:在RAG系统中,向量检索返回了一大堆文档,但真正能回答用户问题的可能只有那么一两段。传统的向量相似度匹配,有时候会因为关键词匹配或…...

FLUX.1-devWebUI定制化:修改主题色、添加水印、导出带版权信息图像

FLUX.1-dev WebUI定制化:修改主题色、添加水印、导出带版权信息图像 你是不是也觉得,每次用FLUX.1-dev生成的那些电影级大片,直接分享出去少了点自己的印记?默认的WebUI界面虽然酷炫,但总感觉是“别人家”的工具。 今…...

Realistic Vision V5.1写实模型参数详解:官方‘起手式’摄影提示词结构拆解

Realistic Vision V5.1写实模型参数详解:官方‘起手式’摄影提示词结构拆解 如果你玩过AI绘画,肯定遇到过这样的问题:明明选了一个号称“顶级写实”的模型,但生成的人像要么像塑料娃娃,要么手部扭曲、脸部崩坏&#x…...

SpringBoot项目实战:手把手教你搞定苍穹外卖的套餐管理CRUD(附完整代码)

SpringBoot实战:深度解析苍穹外卖套餐管理模块的设计与实现 在当今快节奏的外卖行业,一套高效稳定的后台管理系统是业务运转的核心支柱。作为Java开发者,掌握如何构建这样的系统不仅能提升技术实力,更能理解真实商业场景下的技术决…...

春联生成模型-中文-base多场景应用:跨境电商中国年营销素材生成流程

春联生成模型-中文-base多场景应用:跨境电商中国年营销素材生成流程 1. 引言:当中国年遇上跨境电商 春节是中国最重要的传统节日,也是全球华人共同庆祝的盛典。对于跨境电商来说,春节意味着巨大的营销机遇——海外华人渴望感受家…...

阿里文生图大模型本地运行:Z-Image-ComfyUI完整使用流程

阿里文生图大模型本地运行:Z-Image-ComfyUI完整使用流程 1. 引言:当文生图遇上极速推理 在2023年的AI图像生成领域,一个令人振奋的消息传来:阿里巴巴开源了其最新的文生图大模型Z-Image系列。这个拥有6B参数的模型家族&#xff…...

树莓派开发者的效率革命:如何用VSCode Remote-SSH实现无感远程调试(附排错手册)

树莓派开发者的效率革命:VSCode Remote-SSH全链路开发实战 当树莓派遇上VSCode Remote-SSH,开发者终于可以从SD卡插拔的物理限制中解放出来。想象一下:在主力机的舒适环境中编写代码,实时在树莓派上执行调试,同时享受完…...

AWS STS区域端点配置优化:以ap-east-1为例解析最佳实践

1. 为什么你的AWS STS临时令牌在香港区域失效了? 最近有个开发朋友跟我吐槽,他在香港区域(ap-east-1)使用STS临时凭证访问S3时,系统一直报错"The provided token is malformed or otherwise invalid"。但同样…...

Qwen3-0.6B-FP8作品分享:市场营销人员使用的文案生成工作流

Qwen3-0.6B-FP8作品分享:市场营销人员使用的文案生成工作流 1. 引言:当营销人遇上轻量级AI助手 如果你是一位市场营销人员,每天的工作是不是这样的循环:写产品介绍、编社交媒体文案、做活动策划、写邮件推广……创意枯竭、时间紧…...

深度学习项目训练环境镜像免配置教程:无需pip install,上传即训,开箱即用

深度学习项目训练环境镜像免配置教程:无需pip install,上传即训,开箱即用 你是不是也经历过这样的场景: 刚下载好一份开源的深度学习项目代码,满怀期待地准备跑通训练流程,结果卡在第一步——环境配置。 t…...

实测Youtu-VL-4B-Instruct八大能力:视觉问答、目标检测效果全解析

实测Youtu-VL-4B-Instruct八大能力:视觉问答、目标检测效果全解析 1. 引言:轻量级多模态模型的惊艳表现 在AI领域,模型参数量的增长似乎永无止境,动辄百亿、千亿参数的模型层出不穷。但今天我们要评测的主角——腾讯优图的Youtu…...