锦州市网站建设_网站建设公司_页面权重_seo优化
2025/12/17 21:54:25 网站建设 项目流程

文章目录

    • 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 协议不同,在商业集成时要留意协议合规要求。


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


需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询