BPMN初识

2023-12-15 16:51:49

BPMN简介

  • BPMN业务流程建模与标记语言(Business Process Model and Notation),是一种用于图形化表示和描述业务流程的标准化标记语言
  • 目前主流的版本是BPMN2.0,由 Object Management Group(OMG)制定,并于2011年发布,发展至今,已被主流的流程引擎支持,并作为默认。
  • BPMN的主要优点是它可以提供一种标准化的方法来描述和分析业务流程,使得不同人员之间可以更好地沟通和协作。此外,BPMN还可以帮助组织更好地了解其业务流程,以便更好地进行优化和改进。
  • BPMN和HTML类似都是标记语言,都是通过XML的格式来组织数据,供后端解析,也可转成图形化方式直观展示给用户看。

BPMN元素

  • BPMN包括一系列符号,用于表示业务流程中的各种元素,如任务、事件、网关、流程、数据等。这些符号可以组合在一起,形成一个完整的业务流程图,以便更好地理解和分析业务流程。

  • 该部分内容参考: BPMN(业务流程建模符号)入门到掌握

  • BPMN 2.0定义了四类基础元素,分别是流对象、数据、连接对象和泳道。 有关BPMN元素更为详细的内容参考官网Quick Guide
    在这里插入图片描述

  1. 流对象:流对象用于表示业务流程中的各种活动和事件,流对象包括任务、子流程、事件、网关等。
    • 任务是业务流程中的基本单元,表示业务流程中的具体活动。
    • 子流程是一组任务的集合,可以作为单个任务来处理。
    • 事件表示业务流程中的某个特定事件,如开始事件、中间事件和结束事件。
    • 网关用于控制业务流程中的分支和合并。
  2. 数据:数据用于表示业务流程中的数据或信息。
    • 数据包括数据对象、数据存储和数据输入/输出。
    • 数据对象表示业务流程中的数据或信息,数据存储用于存储数据,数据输入/输出用于表示业务流程中的数据输入和输出。
  3. 连接对象:连接对象用于表示业务流程中不同流对象之间的连接关系。
    • 连接对象包括顺序流、消息流、关联、数据关联和数据关联引用。
    • 顺序流用于表示业务流程中不同任务之间的顺序关系。
    • 消息流用于表示业务流程中不同任务之间的消息传递关系
    • 关联用于表示业务流程中不同任务之间的关联关系
    • 数据关联用于表示业务流程中数据对象之间的关联关系,数据关联引用用于表示业务流程中数据对象之间的引用关系。
  4. 泳道:泳道用于表示业务流程中不同参与者或角色之间的关系
    • 泳道包括池和泳道。池用于表示不同组织或系统之间的关系,泳道用于表示不同角色或岗位之间的关系。

  • 流对象:事件元素
    • 开始:表示一个流程的开始
    • 中间:发生的开始和结束事件之间,影响处理的流程
    • 结束:表示该过程结束
      在这里插入图片描述
  • 活动(Activities):包括任务和子流程两类。子流程在图形的下方中间外加一个小加号(+)来区分。
    在这里插入图片描述
  • 网关(Gateways):用于表示流程的分支与合并。
    • 排他网关:只有一条路径会被选择
    • 并行网关:所有路径会被同时选择
    • 包容网关:可以同时执行多条线路,也可以在网关上设置条件
    • 事件网关:专门为中间捕获事件设置的,允许设置多个输出流指向多个不同的中间捕获事件。当流程执行到事件网关后,流程处于等待状态,需要等待抛出事件才能将等待状态转换为活动状态。
      在这里插入图片描述
  • 拍卖服务BPMN案例图
    在这里插入图片描述

BPMN设计器

  • 虽然BPMN是一个标记语言,但是在实际中,我们很少直接去用它语法进行开发,而是直接使用流程设计器来画,而画用前端技术即可实现。
  • 在前端开源项目中有一个叫bpmn-js的开源项目,市面上的流程设计器基本都是基于它改造的。比如Activiti7官网提供的设计器,就是基于bpmn-js实现的。

示例

  • 定义一个名为“Process_1”的流程,它包含了四个任务:提交采购申请、审批采购申请、购买物品和结束。我们使用BPMN中的符号来表示这些任务和它们之间的流程。
<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL"
                  xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"
                  xmlns:dc="http://www.omg.org/spec/DD/20100524/DC"
                  xmlns:di="http://www.omg.org/spec/DD/20100524/DI"
                  id="Definitions_1"
                  targetNamespace="http://bpmn.io/schema/bpmn"
                  exporter="Camunda Modeler"
                  exporterVersion="4.4.0">
  <bpmn:process id="Process_1" isExecutable="true">
    <bpmn:startEvent id="StartEvent_1"/>
    <bpmn:task id="Task_1" name="提交采购申请"/>
    <bpmn:task id="Task_2" name="审批采购申请"/>
    <bpmn:task id="Task_3" name="购买物品"/>
    <bpmn:endEvent id="EndEvent_1"/>
    <bpmn:sequenceFlow id="SequenceFlow_1" sourceRef="StartEvent_1" targetRef="Task_1"/>
    <bpmn:sequenceFlow id="SequenceFlow_2" sourceRef="Task_1" targetRef="Task_2"/>
    <bpmn:sequenceFlow id="SequenceFlow_3" sourceRef="Task_2" targetRef="Task_3"/>
    <bpmn:sequenceFlow id="SequenceFlow_4" sourceRef="Task_3" targetRef="EndEvent_1"/>
  </bpmn:process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Process_1">
      <bpmndi:BPMNShape id="StartEvent_1_di" bpmnElement="StartEvent_1">
        <dc:Bounds x="173" y="102" width="36" height="36"/>
        <bpmndi:BPMNLabel>
          <dc:Bounds x="181" y="145" width="22" height="14"/>
        </bpmndi:BPMNLabel>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="Task_1_di" bpmnElement="Task_1">
        <dc:Bounds x="253" y="80" width="100" height="80"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="Task_2_di" bpmnElement="Task_2">
        <dc:Bounds x="413" y="80" width="100" height="80"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="Task_3_di" bpmnElement="Task_3">
        <dc:Bounds x="573" y="80" width="100" height="80"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="EndEvent_1_di" bpmnElement="EndEvent_1">
        <dc:Bounds x="753" y="102" width="36" height="36"/>
        <bpmndi:BPMNLabel>
          <dc:Bounds x="761" y="145" width="22" height="14"/>
        </bpmndi:BPMNLabel>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="SequenceFlow_1_di" bpmnElement="SequenceFlow_1">
        <di:waypoint x="191" y="120"/>
        <di:waypoint x="253" y="120"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="SequenceFlow_2_di" bpmnElement="SequenceFlow_2">
        <di:waypoint x="353" y="120"/>
        <di:waypoint x="413" y="120"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="SequenceFlow_3_di" bpmnElement="SequenceFlow_3">
        <di:waypoint x="513" y="120"/>
        <di:waypoint x="573" y="120"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="SequenceFlow_4_di" bpmnElement="SequenceFlow_4">
        <di:waypoint x="673" y="120"/>
        <di:waypoint x="753" y="120"/>
      </bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</bpmn:definitions>
  • bpmn:process标签存放流程节点信息

  • bpmndi:BPMNDiagram标签存放流程图形信息

  • 在线BPMN设计工具,下面展示,案例代码,运行的动态过程
    在这里插入图片描述

文章来源:https://blog.csdn.net/yang2330648064/article/details/135017827
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。