news 2026/5/1 4:45:47

Activiti7工作流(四)流程符合及流程设计器

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Activiti7工作流(四)流程符合及流程设计器

文章目录

    • 1、流程符号
      • 1.1、事件 Event
      • 1.2、活动 Activity
      • 1.3、网关 GateWay
      • 1.4、流向 Flow
    • 2、流程设计器使用
      • 2.1、Activiti-Designer使用
      • 2.2、Activiti Modeler

1、流程符号

BPMN 2.0是业务流程建模符号2.0的缩写;它由Business Process Management Initiative这个非营利协会创建并不断发展。

作为一种标识,BPMN 2.0是使用一些符号来明确业务流程设计流程图的一整套符号规范,它能增进业务建模时的沟通效率。

目前BPMN2.0是最新的版本,它用于在BPM上下文中进行布局和可视化的沟通。

Activiti7遵循BPMN 2.0规范,其核心图形符号主要分为以下几类:

符号类别主要元素与说明
事件 (Event)表示流程中发生的事件,如开始、结束、中间捕获/抛出事件。
任务 (Task)代表具体工作项,如用户任务(人工审批)、服务任务(自动调用服务)、脚本任务等。
网关 (Gateway)控制流程分支与合并,包括排他网关(多选一)、并行网关(所有分支同时进行)、包容网关(可选分支)等。
流向 (Sequence Flow)带箭头的实线,连接各元素,表示执行顺序。
容器/子流程 (Sub-Process)将多个步骤折叠为一个可复用的单元,支持嵌入式和调用式。

1.1、事件 Event

  • 开始事件
  • 中间事件
  • 结束事件

1.2、活动 Activity

活动是工作或任务的一个通用术语。一个活动可以是一个任务,还可以是一个当前流程的子处理流程; 其次,你还可以为活动指定不同的类型。常见活动如下:

1.3、网关 GateWay

网关用来处理决策,有几种常用网关需要了解:

  • 排他网关 (x)

只有一条路径会被选择。流程执行到该网关时,按照输出流的顺序逐个计算,当条件的计算结果为true时,继续执行当前网关的输出流;

如果多条线路计算结果都是 true,则会执行第一个值为 true 的线路。如果所有网关计算结果没有true,则引擎会抛出异常。 排他网关需要和条件顺序流结合使用,default 属性指定默认顺序流,当所有的条件不满足时会执行默认顺序流。
  • 并行网关 (+)

所有路径会被同时选择

拆分 —— 并行执行所有输出顺序流,为每一条顺序流创建一个并行执行线路。 合并 —— 所有从并行网关拆分并执行完成的线路均在此等候,直到所有的线路都执行完成才继续向下执行。
  • 包容网关 (+)

可以同时执行多条线路,也可以在网关上设置条件

拆分 —— 计算每条线路上的表达式,当表达式计算结果为true时,创建一个并行线路并继续执行 合并 —— 所有从并行网关拆分并执行完成的线路均在此等候,直到所有的线路都执行完成才继续向下执行。
  • 事件网关 (+)

专门为中间捕获事件设置的,允许设置多个输出流指向多个不同的中间捕获事件。当流程执行到事件网关后,流程处于等待状态,需要等待抛出事件才能将等待状态转换为活动状态。

1.4、流向 Flow

流是连接两个流程节点的连线。常见的流向包含以下几种:

2、流程设计器使用

绘制BPMN流程图主要有以下两类设计器:

设计器类型核心用途与代表优点与适用场景
集成开发环境(IDE)插件在IDEA或Eclipse中直接绘制.bpmn文件。• IDEA插件:搜索安装 “Activiti7 BPMN” 插件。• Eclipse插件:即 “Activiti-Designer”。开发友好:与项目代码一体,方便部署调试。适用:开发阶段,由技术人员使用。
Web可视化设计器独立部署的Web应用,提供更丰富的图形化操作。• Activiti Modeler:官方/社区提供的开源设计器。业务友好:界面直观,无需开发工具。适用:让业务人员参与流程设计或作为独立服务。

2.1、Activiti-Designer使用

  • Palette(画板)

在idea中安装插件即可使用,画板中包括以下结点:

Connection—连接

Event—事件

Task—任务

Gateway—网关

Container—容器

Boundary event—边界事件

Intermediate event- -中间事件

流程图设计完毕保存生成.bpmn文件

  • 新建流程(IDEA工具)

首先选中存放图形的目录(选择resources下的bpmn目录),点击菜单:New -> BpmnFile,如图:


弹出如下图所示框,输入evection 表示 出差审批流程:

起完名字evection后(默认扩展名为bpmn),就可以看到流程设计页面,如图所示:

左侧区域是绘图区,右侧区域是palette画板区域

鼠标先点击画板的元素即可在左侧绘图

  • 绘制流程

使用滑板来绘制流程,通过从右侧把图标拖拽到左侧的画板,最终效果如下:

evection.bpmn:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><definitionsxmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"xmlns:activiti="http://activiti.org/bpmn"xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC"xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI"xmlns:tns="http://www.activiti.org/test"xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"expressionLanguage="http://www.w3.org/1999/XPath"id="m1576151336547"name=""targetNamespace="http://www.activiti.org/test"typeLanguage="http://www.w3.org/2001/XMLSchema"><processid="myEvection"isClosed="false"isExecutable="true"name="出差申请"processType="None"><startEventid="_2"name="StartEvent"/><userTaskactiviti:assignee="zhangsan"activiti:exclusive="true"id="_3"name="创建出差申请"/><userTaskactiviti:assignee="jerry"activiti:exclusive="true"id="_4"name="经理审批"/><userTaskactiviti:assignee="jack"activiti:exclusive="true"id="_5"name="总经理审批"/><userTaskactiviti:assignee="rose"activiti:exclusive="true"id="_6"name="财务审批"/><endEventid="_7"name="EndEvent"/><sequenceFlowid="_8"sourceRef="_2"targetRef="_3"/><sequenceFlowid="_9"sourceRef="_3"targetRef="_4"/><sequenceFlowid="_10"sourceRef="_4"targetRef="_5"/><sequenceFlowid="_11"sourceRef="_5"targetRef="_6"/><sequenceFlowid="_12"sourceRef="_6"targetRef="_7"/></process><bpmndi:BPMNDiagramdocumentation="background=#FFFFFF;count=1;horizontalcount=1;orientation=0;width=842.4;height=1195.2;imageableWidth=832.4;imageableHeight=1185.2;imageableX=5.0;imageableY=5.0"id="Diagram-_1"name="New Diagram"><bpmndi:BPMNPlanebpmnElement="myEvection"><bpmndi:BPMNShapebpmnElement="_2"id="Shape-_2"><omgdc:Boundsheight="32.0"width="32.0"x="245.0"y="10.0"/><bpmndi:BPMNLabel><omgdc:Boundsheight="32.0"width="32.0"x="0.0"y="0.0"/></bpmndi:BPMNLabel></bpmndi:BPMNShape><bpmndi:BPMNShapebpmnElement="_3"id="Shape-_3"><omgdc:Boundsheight="55.0"width="85.0"x="220.0"y="65.0"/><bpmndi:BPMNLabel><omgdc:Boundsheight="55.0"width="85.0"x="0.0"y="0.0"/></bpmndi:BPMNLabel></bpmndi:BPMNShape><bpmndi:BPMNShapebpmnElement="_4"id="Shape-_4"><omgdc:Boundsheight="55.0"width="85.0"x="220.0"y="155.0"/><bpmndi:BPMNLabel><omgdc:Boundsheight="55.0"width="85.0"x="0.0"y="0.0"/></bpmndi:BPMNLabel></bpmndi:BPMNShape><bpmndi:BPMNShapebpmnElement="_5"id="Shape-_5"><omgdc:Boundsheight="55.0"width="85.0"x="225.0"y="240.0"/><bpmndi:BPMNLabel><omgdc:Boundsheight="55.0"width="85.0"x="0.0"y="0.0"/></bpmndi:BPMNLabel></bpmndi:BPMNShape><bpmndi:BPMNShapebpmnElement="_6"id="Shape-_6"><omgdc:Boundsheight="55.0"width="85.0"x="225.0"y="320.0"/><bpmndi:BPMNLabel><omgdc:Boundsheight="55.0"width="85.0"x="0.0"y="0.0"/></bpmndi:BPMNLabel></bpmndi:BPMNShape><bpmndi:BPMNShapebpmnElement="_7"id="Shape-_7"><omgdc:Boundsheight="32.0"width="32.0"x="250.0"y="400.0"/><bpmndi:BPMNLabel><omgdc:Boundsheight="32.0"width="32.0"x="0.0"y="0.0"/></bpmndi:BPMNLabel></bpmndi:BPMNShape><bpmndi:BPMNEdgebpmnElement="_12"id="BPMNEdge__12"sourceElement="_6"targetElement="_7"><omgdi:waypointx="266.0"y="375.0"/><omgdi:waypointx="266.0"y="400.0"/><bpmndi:BPMNLabel><omgdc:Boundsheight="0.0"width="0.0"x="0.0"y="0.0"/></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdgebpmnElement="_8"id="BPMNEdge__8"sourceElement="_2"targetElement="_3"><omgdi:waypointx="261.0"y="42.0"/><omgdi:waypointx="261.0"y="65.0"/><bpmndi:BPMNLabel><omgdc:Boundsheight="0.0"width="0.0"x="0.0"y="0.0"/></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdgebpmnElement="_9"id="BPMNEdge__9"sourceElement="_3"targetElement="_4"><omgdi:waypointx="262.5"y="120.0"/><omgdi:waypointx="262.5"y="155.0"/><bpmndi:BPMNLabel><omgdc:Boundsheight="0.0"width="0.0"x="0.0"y="0.0"/></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdgebpmnElement="_11"id="BPMNEdge__11"sourceElement="_5"targetElement="_6"><omgdi:waypointx="267.5"y="295.0"/><omgdi:waypointx="267.5"y="320.0"/><bpmndi:BPMNLabel><omgdc:Boundsheight="0.0"width="0.0"x="0.0"y="0.0"/></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdgebpmnElement="_10"id="BPMNEdge__10"sourceElement="_4"targetElement="_5"><omgdi:waypointx="265.0"y="210.0"/><omgdi:waypointx="265.0"y="240.0"/><bpmndi:BPMNLabel><omgdc:Boundsheight="0.0"width="0.0"x="0.0"y="0.0"/></bpmndi:BPMNLabel></bpmndi:BPMNEdge></bpmndi:BPMNPlane></bpmndi:BPMNDiagram></definitions>
  • 指定流程定义Key

流程定义key即流程定义的标识,通过properties视图查看流程的key

  • 指定任务负责人

在properties视图指定每个任务结点的负责人,如:填写出差申请的负责人为 zhangsan


经理审批负责人为 jerry
总经理审批负责人为 jack
财务审批负责人为 rose

2.2、Activiti Modeler

  • 方式一:部署官方Demo
    这是最直接的方式,从Activiti官网下载发布包,将解压得到的 activiti-explorer.war 文件放入Tomcat的 webapps 目录并启动。
    启动后访问 http://localhost:8080/activiti-explorer,使用默认账号(如kermit/kermit)登录,在 “Processes” -> “Model workspace” 中即可使用Modeler。

  • 方式二:整合到自有项目
    如果你希望将Modeler嵌入自己的系统,可以参考以下关键步骤:

    获取前端资源:从Activiti源码的 /modules/activiti-webapp-explorer2/src/main/webapp/ 目录下,复制 editor-app/ 文件夹和 modeler.html 文件到你项目的Web资源目录(如Spring Boot的 static 目录)。

    获取后端配置:复制同源码目录下的 stencilset.json 文件到你的项目资源目录。

    添加Maven依赖:在 pom.xml 中添加 activiti-modeler 依赖。

    配置Spring MVC:单独配置一个Spring MVC上下文来扫描并激活Modeler自带的Controller。

    注:整合时需注意,Activiti Modeler 使用 LGPL 2.1 协议,这与其核心引擎的 Apache V2 协议不同,在商业集成时要留意协议合规要求。


“人的一生会经历很多痛苦,但回头想想,都是传奇”。


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/29 18:23:13

Python编程语言面试问题一

Python是一种跨平台、开源、免费的高级动态编程语言&#xff0c;由荷兰的吉多范罗苏姆于1990年代初设计。Python具有简单、易学、速度快、免费、开源、可移植性、可扩展性、丰富的库等优点。 这些Python编程语言面试问题专门设计&#xff0c;旨在帮助你了解在Python编程语言面…

作者头像 李华
网站建设 2026/4/30 9:58:55

STM32F103ZET6 + W5500编程遇到的问题与解决过程

W5500是韩国公司WIZNET出品的爆款网络芯片&#xff0c;它集成了TCP/IP协议栈和以太网PHY接口&#xff0c;能让不具备网络功能的单片机通过 SPI 接口便捷地实现上网功能&#xff0c;目前国内兼容的芯片有沁恒公司的CH394。我最近开发的一款数据采集卡产品就是使用STM32F103ZET6W…

作者头像 李华
网站建设 2026/4/22 9:48:07

毕业季必看!9款免费AI论文神器实测,真实参考文献+AIGC率低至10%

如果你是正在熬夜赶Deadline的毕业生&#xff0c;面对堆积如山的文献资料和空白的文档一筹莫展&#xff1b;如果你是面临延毕压力的研究生&#xff0c;导师催稿的消息不断弹出&#xff0c;而自己的论文却始终难以达到要求&#xff1b;如果你是囊中羞涩的大学生&#xff0c;知网…

作者头像 李华
网站建设 2026/4/17 21:04:33

研究生必备:7款AI论文神器,真实文献查重率低,原创度高!

如果你是正在面临延毕危机的研究生&#xff0c;整日被导师催着交稿&#xff0c;在浩如烟海的文献里苦苦搜寻资料&#xff0c;为论文的初稿、修改和查重等问题愁得焦头烂额&#xff1b;又或者你是经济不宽裕的大学生&#xff0c;面对知网查重的高昂费用只能望而却步&#xff0c;…

作者头像 李华
网站建设 2026/4/29 19:38:23

计算机视觉测试框架与典型场景实践

一、计算机视觉测试概述 随着深度学习技术在图像识别、目标检测、场景理解等领域的广泛应用&#xff0c;计算机视觉系统已渗透到自动驾驶、医疗影像、工业质检、安防监控等多个关键领域。与传统软件测试相比&#xff0c;视觉系统测试面临数据依赖性、算法不确定性、环境敏感度…

作者头像 李华