资讯动态

Activiti 6.0工作流引擎入门:从设计器到第一个审批流程

发布时间:2026/10/29 17:03:12 来源:尧图企业网站定制
简介这份《Activiti6.0工作流使用说明文档v1.0.pdf》面向正在使用或准备上手 Activiti 6.0 工作流引擎的 Java 开发者、流程设计人员与系统架构师帮助读者系统理解该开源引擎在业务流程设计、执行与监控中的核心用法。文档以模型设计器为主线逐一讲解用户任务、服务任务、脚本任务、业务规则任务、接收任务、手动任务、邮件任务、Camel 任务、Mule 任务与决策任务等十类任务元素的适用场景并延伸至子流程、事件子流程、泳道列表以及排他、并行、包容、事件等分支构造目录层次清晰便于按模块查阅。资源包内仅含 1 个 PDF 文件大小约 1.72MB轻量便携适合作为日常开发中的案头速查手册。目前已有 1168 人学习下载可作为团队内部流程建模培训或新人熟悉 Activiti 6.0 元素体系的入门参考。1. 第一次听说工作流引擎它到底在帮你管什么你有没有遇到过这种场面公司要采购一台设备先填申请单主管批金额大了财务再批批完仓库入库最后邮件通知申请人。每一步都有人签字、有人等、有人催单子丢了还得从头再来。如果这套流程只跑一次手工盯一盯也就过去了可它一个月要跑几百次每次审批人还不一样你就需要一个“不会忘事、不会漏人、还能留下记录”的东西来管它。Activiti 6.0 就是干这个的。它是一个开源的工作流引擎用一套叫 BPMN 2.0 的标准符号把“谁在什么条件下做什么”画成流程图然后由引擎按图自动推进该谁审批就推给谁条件不满足就卡住超时就触发提醒。这份《Activiti6.0 工作流使用说明文档》讲的正是怎么用它的模型设计器把流程画出来、配好任务和分支、再让流程真正跑起来。适合完全没接触过工作流的开发新手也适合被派去接手审批系统的同学。2. 为什么值得学工作流能替你省掉哪些手工活2.1 把“口头约定”变成可执行的流程图很多团队的业务规则活在聊天记录和老员工脑子里报销超过五千要找总监、请假三天以上要人事备案。人一换规则就断档。工作流的第一层价值是把这些约定画成一张图图上有节点、有连线、有条件表达式。图本身就是文档新人打开设计器看一眼就知道单子会经过谁。这份文档里的模型设计器就是画图的地方。它提供可视化界面把任务、分支、事件拖到画布上连起来即可。文档特别提醒只有和 admin 相同租户的用户能用全功能其他租户登录后只能做流程设计、表单配置、决策表配置不能在设计器里直接执行流程。这一点新手最容易忽略画了半天发现跑不起来先检查自己是不是用错了账号。2.2 版本发布机制改完必须重新发布才生效工作流不是改完文件就自动生效的。文档写得很清楚需要更改的模型、表单、决策表要生效必须重新发布发布之后新启动的流程按最新版本走发布之前已经在跑的流程仍然按前一版本执行。这个设计其实很贴心——你改流程不会把正在审批中的单子搞乱。我第一次接触时踩过的坑是在设计器里改了一个审批人保存后直接去测发现还是老审批人。后来才明白“保存”和“发布”是两回事。入门阶段记住一句话设计器里改的是草稿发布出去的才是线上版本。2.3 任务类型多但入门只需要先认识三种文档第一章列了十种任务用户任务、服务任务、脚本任务、业务规则任务、接收任务、手动任务、邮件任务、Camel 任务、Mule 任务、决策任务。名字看着吓人其实按“谁来干活”分就清楚了。用户任务需要人来处理比如审批、审核是最常用的一种服务任务交给外部 Java 类去执行适合调接口、写库这类自动动作脚本任务在流程走到时自动跑一段脚本文档里说默认脚本类型是 JavaScript其他脚本类型要额外加引擎依赖。剩下那些 Camel、Mule、决策任务属于集成增强入门阶段先知道有这回事就行不用一上来全啃。提示脚本任务里设置流程变量时变量名要避开 out、out:print、lang:import、context、elcontext 这几个保留字文档专门点了名撞上会出问题。2.4 分支和事件流程“会拐弯”靠的就是它们流程不可能一条直线走到底。文档把分支叫网关分四种排他分支有且仅有一个后续连线被执行多个条件都为 true 时默认走第一条一个都不满足就抛找不到后续节点的异常并行分支会分叉再聚合每个任务执行完在聚合口等待全部完成才往下走包容分支是前两者的结合可以按条件并行执行多条事件分支后面只能接中间捕获事件而且必须接两个以上否则运行报错。事件部分新手先记住定时器事件和边界事件。定时器事件可以当开始事件、中间事件、边界事件用但前提是 jobExecutorActivate 或 asyncExecutorActivate 属性为 true否则定时器根本不执行。定时器配置有三种写法ISO-8601 日期时间、P 加间隔比如 P1Y3M5DT6H7M30S 表示 1 年 3 个月 5 天 6 小时 7 分 30 秒、循环周期。边界事件全是捕获事件常用来做超时提醒——比如审批三天没动静就发邮件催办同时流程还能正常往下走。3. 第一步怎么迈从打开设计器到跑通第一个审批流程3.1 先确认环境和账号别急着画图动手之前做两件事。第一确认你登录的是 admin 同租户账号密码默认是 test否则你只能设计不能执行。第二找到配置文件数据库和邮件服务器配置在qqdznyyglpt-workflow-designer\src\META-INF\activiti-app\activiti-app.properties。入门阶段如果只是本地试跑数据库用默认配置通常就能启动要发邮件任务才需要配邮件服务器。想看清引擎到底执行了哪些 SQL可以在 log4j.properties 里加一行开关# 打开 Activiti 引擎持久层的 SQL 日志排查流程卡在哪一步时很有用 log4j.logger.org.activiti.engine.impl.persistence.entityDEBUG这行的意思是把引擎底层实体操作的日志级别调到 DEBUG流程每推进一步、每次读写数据库都会打出来。新手排查“为什么流程没往下走”时这行日志比瞎猜管用得多。不想看了把它删掉或改回 INFO 即可。3.2 画第一个流程一个用户任务加一个结束事件打开模型设计器从左侧拖一个“开始事件”到画布再拖一个“用户任务”最后拖一个“结束事件”用序列流把它们连起来。点中用户任务在属性面板里配三样东西名称写“主管审批”分配里填处理人可以写具体用户也可以配处理组到期时间按需填。表单可以先不配入门先让流程能流转。这里的关键概念是“分配”。用户任务必须知道找谁干活不配分配流程启动后任务会悬空没人能在待办里看到它。文档在属性元素一节里把分配、到期时间、表单都归在一起讲入门先掌握分配就够了。画完点保存然后发布。记住 2.2 节说的不发布流程定义不会出现在运行时。3.3 用一段 Java 代码把流程启动起来设计器里能点着玩但真实项目里流程是由业务代码启动的。下面这段是入门级的最小示例展示启动一个已发布流程并查询待办任务// 假设引擎已初始化runtimeService 和 taskService 可直接注入或获取 // 1. 按流程定义的 key 启动一个流程实例 ProcessInstance instance runtimeService.startProcessInstanceByKey(leaveProcess); // 2. 查当前这个实例下有哪些待办任务 ListTask tasks taskService.createTaskQuery() .processInstanceId(instance.getId()) .list(); // 3. 打印任务名和处理人确认流程停在了“主管审批”节点 for (Task task : tasks) { System.out.println(待办任务 task.getName() 处理人 task.getAssignee()); }startProcessInstanceByKey里的 key 是流程定义发布时生成的标识不是流程显示名填错会抛找不到流程定义的异常。createTaskQuery按流程实例 ID 过滤拿到的是当前还没人办完的任务。跑通这段你会看到控制台打出“待办任务主管审批”说明流程真的停在了用户任务上等人处理。接着用taskService.complete(task.getId())就能把任务办完流程继续往结束事件走。3.4 服务任务怎么接外部 Java 类等第一个流程跑顺了再试服务任务。文档给了三种实现方式类方式指定一个实现 JavaDelegate 或 ActivityBehavior 接口的类写全包名类字段可以配额外参数但类里必须有对应字段声明表达式方式用值表达式或方法表达式方法表达式有返回值时可以指定结果变量名接收后续节点直接用委托表达式方式类要实现 JavaDelegate 且已在 ActivitiEngineConfiguration 里注册成 bean。入门建议先用“类”方式因为最直白写一个类实现 JavaDelegate在 execute 方法里写你的业务逻辑设计器里把类名填进去。跑不通时先看日志里有没有 ClassNotFoundException多半是包名写错或类没编译进 classpath。3.5 异步属性给流程留一条“后悔药”文档 1.6.1 节讲异步例子很接地气提交订单后给客户发短信但不想因为短信发送失败导致订单提交不了就把发短信的节点设为异步。默认情况下从一个完成节点到下一个等待状态之间的所有节点属于同一单元任务具有原子性第四步出错会回滚到第一步。把出错节点设为异步后前面的节点照常完成流程挂起在出错节点不会把已完成的活白干。这个属性新手容易忽略但它是控制回滚边界的关键开关。判断标准很简单这个步骤失败了前面已经做完的事该不该保留该保留就设异步。4. 避坑指南新手最容易翻车的五个地方4.1 现象流程发布成功启动却报找不到流程定义原因通常是启动代码里的 key 和发布后的定义 key 不一致或者发布时选的租户和启动时用的租户对不上。解决在设计器里查看流程定义的 key复制到代码里确认启动流程的账号租户与发布时一致。文档明确说不同租户权限不同租户这条线从发布到启动都要对齐。4.2 现象定时器配了但到点没反应原因jobExecutorActivate 或 asyncExecutorActivate 没设为 true定时器事件根本不会执行。解决检查引擎配置里这两个属性改成 true 后重启。另外定时器配置本身必须符合三种格式之一格式写错流程会发布不成功发布时就该报错别等到运行时才发现。4.3 现象排他分支走了一条不该走的路原因多个分支连线条件都为 true 时排他分支默认执行第一条顺序取决于你画线的先后。解决把条件写得更互斥别让两条线同时成立或者调整连线顺序并在条件里加兜底判断。文档还提醒一个条件都不满足时会抛找不到后续节点的异常所以最好留一条无条件或恒真的默认线。4.4 现象决策任务之后判断节点报“找不到属性”原因决策表里某个输出没有结果下一个节点引用该变量时它就是空的在判断节点引用会报无法识别属性。文档举的例子是决策表判断 loanAmount2 输出 rejectLoantrue后续却引用 riskCheck自然找不到。解决在决策表里给每个可能被引用的输出都配好缺省值或者在判断前加一个脚本任务兜底赋值。4.5 现象边界事件触发后原任务还在待办里原因中断任务没勾选。文档说使用边界事件时通常要配中断任务默认勾选表示边界事件触发时附属任务被主动终止、后续流程取消。解决检查边界事件属性里的中断配置需要终止原任务就保持勾选确实要两边并行才取消勾选但要想清楚业务上是否允许同一个单子被两个人同时处理。5. 下一步学什么把文档当字典按场景逐个啃入门跑通一个用户任务流程之后不建议从第一页读到最后一页。这份文档更像字典正确用法是遇到场景再翻对应章节。下面是我建议的推进顺序按“用得上”排序阶段先学什么对应文档位置判断标准第一周用户任务、排他分支、结束事件1.1.1、1.4.1、1.5.8能画出带条件审批的流程并跑通第二周服务任务、脚本任务、异步属性1.1.2、1.1.3、1.6.1能在流程里调一个 Java 类且失败不回滚前序节点第三周定时器事件、边界事件、中断任务1.5.1、1.5.5、1.6.4能做超时催办且原任务被正确终止第四周并行/包容分支、子流程、监听器1.4.2、1.4.3、1.2.1、1.7能处理会签和多步聚合场景监听器部分值得单独说一句。文档把监听器分成执行监听器、任务监听器、事件监听器和全局事件监听器四类入门先看任务监听器它能在任务创建、分配、完成时触发你的代码做“审批通过后自动写一条日志”这类需求最顺手。执行监听器管的是流程流转本身等你要在连线经过时做动作再看。workflow-service 那一章数据更新逻辑、方法表达式配置、自定义外置表单、事件监听器配置、方法调用说明建议放到最后。它是给已经能把流程跑起来、要对接业务系统的人看的零基础阶段翻过去只会增加挫败感。我自己的血泪经验是每学一个新元素就在设计器里单独建一个最小流程验证它别一上来就往主流程里塞。有一次我把定时器和并行分支一起加进审批流出问题时分不清是定时器没触发还是并行聚合没等到拆成两个小流程各测一遍十分钟就定位了。从那以后我每次加新元素都强制先跑一个只含该元素的最小例子确认行为符合预期再合并。希望这份文档也能帮你少走几步弯路先把第一个审批流程跑起来剩下的边用边学。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑