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

第四章 activiti流程 “BPMN2.0规范解密室”

一、BPMN2.0是什么?——流程界的“世界语”

1. 定义与使命
  • 官方定义:BPMN(Business Process Model and Notation)2.0是业务流程建模的国际标准,用图形化符号描述业务流程。
  • 核心目标:让业务人员与开发者用同一套语言沟通,告别“你说流程,我写代码”的跨服聊天!
2. BPMN与Activiti的关系
  • Activiti是BPMN2.0规范的执行引擎,能将流程图转化为可运行的代码逻辑。
  • 类比:BPMN是乐谱🎼,Activiti是钢琴家🎹——乐谱规定音符,钢琴家弹出旋律!

二、BPMN2.0核心元素——流程的“乐高积木”

1. 事件(Events)——流程的“触发器”
事件类型图标作用示例场景
开始事件流程起点用户点击“提交请假”
结束事件流程终点审批完成
中间事件⚪➕🌠流程执行中触发超时自动提醒审批
2. 任务(Tasks)——流程的“工作单元”
任务类型图标作用代码对应
用户任务🟦需要人工处理UserTask
服务任务🟦➕⚙️自动调用Java服务ServiceTask
脚本任务🟦➕📜执行Groovy/Python脚本ScriptTask

代码示例

<serviceTask id="sendEmailTask" activiti:class="com.example.SendEmailDelegate" />  
3. 网关(Gateways)——流程的“交通警察”
网关类型图标作用条件设置
排他网关🔲单选分支(if-else)${days > 3}
并行网关🔲➕⏩多选分支(同时执行)无需条件
包容网关🔲➕🌐混合分支(部分并行)可结合条件

避坑指南

  • 并行网关必须成对出现,否则流程会“卡死”在虚空!

三、流程与子流程——模块化设计的“俄罗斯套娃”

1. 调用活动(Call Activity)
  • 作用:复用其他流程(如“通用审批”子流程)。
  • 配置
    <callActivity id="callCommonApprove" calledElement="commonApprove" />  
    
2. 事件子流程
  • 作用:处理异常或特定事件(如“订单取消”补偿逻辑)。
  • 示例
    <subProcess id="compensationSubProcess" triggeredByEvent="true">  
      <startEvent id="compensationStart" isInterrupting="false"/>  
      <!-- 补偿逻辑 -->  
    </subProcess>  
    

四、连线(Sequence Flow)与条件表达式——流程的“导航路线”

1. 默认连线
  • 无条件执行,用绿色实线表示。
  • 代码
    <sequenceFlow id="flow1" sourceRef="startEvent" targetRef="task1" />  
    
2. 条件连线
  • 需设置表达式,用绿色虚线表示。
  • 代码
    <sequenceFlow id="flow2" sourceRef="gateway" targetRef="task2">  
      <conditionExpression xsi:type="tFormalExpression">${days > 3}</conditionExpression>  
    </sequenceFlow>  
    

趣味测试

如果连线条件写成`${days > 3 || days < 0}`,会发生什么?  
A. 流程正常执行  
B. 抛出异常  
C. 永远不满足条件  

五、BPMN与Activiti的“联姻”——XML与引擎的映射

1. BPMN文件结构解剖
<definitions>  
  <process id="leaveProcess" name="请假流程">  
    <startEvent id="start"/>  
    <userTask id="applyTask" name="提交申请"/>  
    <exclusiveGateway id="decideGateway"/>  
    <endEvent id="end"/>  
    <!-- 连线 -->  
  </process>  
</definitions>  
2. Activiti扩展属性
  • activiti:命名空间增强功能,如指定Java类:
    <serviceTask id="task1" activiti:class="com.example.MyDelegate" />  
    

六、课后挑战——成为“BPMN语言大师”

  1. 选择题:并行网关的作用是什么?
    A. 根据条件选择分支
    B. 同时执行所有分支
    C. 终止流程

  2. 实战题:设计一个订单流程,包含“下单→并行检查库存和信用→汇聚→发货”,导出BPMN文件并部署测试。


A. 根据条件选择分支
B. 同时执行所有分支
C. 终止流程

  1. 实战题:设计一个订单流程,包含“下单→并行检查库存和信用→汇聚→发货”,导出BPMN文件并部署测试。

相关文章:

  • Transformer 代码剖析10 - TransformerEmbedding (pytorch实现)
  • 大白话css第五章CSS新特性与前沿技术、跨平台与跨设备适配
  • FakeApp 技术浅析(二):生成对抗网络
  • 传承式的传统企业新零售数字化转型的逆袭之路!
  • 在已安装二进制movit2的情况下使用自编译moveit2
  • Redis分布式锁的实现(Redission)
  • 弱监督语义分割学习计划(2)-使用CoT进行Open Vocabulary Label简单实现类激活图
  • 【AD】3-10 原理图PDF导出
  • 【多模态大模型论文精读】MOSHI:双工实时语音对话大模型
  • java之运算符
  • 大白话TypeScript 第九章:TypeScript 项目的优化、测试与发布
  • 计算机网络概述
  • Apache IoTDB 树表双模型直播回顾(下)
  • 专线物流公共服务平台:全面提升专线物流效率
  • 【linux】详谈 环境变量
  • 基于Transformers的文本相似度
  • 小红书自动评论
  • 大模型—如何从huggingface上下载并调用模型
  • 每天一个Flutter开发小项目 (8) : 掌握Flutter网络请求 - 构建每日名言应用
  • RuoYi框架介绍,以及如何基于Python使用RuoYi框架
  • 免费网站建设哪个好/提高网站搜索排名
  • 如何用eclipse做网站/网站建设苏州
  • 手机新闻网站源码/seo外包公司哪家专业
  • 网站开发案例详解下载/中国新闻社
  • 上海专业做网站的/中国国家培训网官网查询
  • 利于seo的网站设计/新手做销售怎么开发客户