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
- 流对象:流对象用于表示业务流程中的各种活动和事件,流对象包括任务、子流程、事件、网关等。
- 任务是业务流程中的基本单元,表示业务流程中的具体活动。
- 子流程是一组任务的集合,可以作为单个任务来处理。
- 事件表示业务流程中的某个特定事件,如开始事件、中间事件和结束事件。
- 网关用于控制业务流程中的分支和合并。
- 数据:数据用于表示业务流程中的数据或信息。
- 数据包括数据对象、数据存储和数据输入/输出。
- 数据对象表示业务流程中的数据或信息,数据存储用于存储数据,数据输入/输出用于表示业务流程中的数据输入和输出。
- 连接对象:连接对象用于表示业务流程中不同流对象之间的连接关系。
- 连接对象包括顺序流、消息流、关联、数据关联和数据关联引用。
- 顺序流用于表示业务流程中不同任务之间的顺序关系。
- 消息流用于表示业务流程中不同任务之间的消息传递关系
- 关联用于表示业务流程中不同任务之间的关联关系
- 数据关联用于表示业务流程中数据对象之间的关联关系,数据关联引用用于表示业务流程中数据对象之间的引用关系。
- 泳道:泳道用于表示业务流程中不同参与者或角色之间的关系。
- 泳道包括池和泳道。池用于表示不同组织或系统之间的关系,泳道用于表示不同角色或岗位之间的关系。
- 流对象:事件元素
- 开始:表示一个流程的开始
- 中间:发生的开始和结束事件之间,影响处理的流程
- 结束:表示该过程结束
- 活动(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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!