1+1=10

记记笔记,放松一下...

BPM 小记

随便记录一下

BPM

BPM(Business Process Management,业务流程管理)是一种系统化的方法,用于设计、分析、执行、监控和优化企业的业务流程。

BPM 的实施通常依赖于 BPM 软件平台。

Process

在 BPM 中,Process(流程) 是指一系列有序的活动(Tasks)或步骤(Steps),这些活动协同工作以实现特定的业务目标。

Product, Project 与 Process 管理对比

贴个表格,内容由 ChatGPT (GPT-4) 生成。

特点 产品管理(Product Management) 项目管理(Project Management) 流程管理(Process Management)
核心关注点 产品的用户价值、市场定位和商业成功。 项目的目标、进度、预算和资源的管理。 企业内部流程的效率和标准化。
目标 创建满足用户需求并实现商业价值的产品。 完成特定的任务或交付成果(如发布新功能、完成建筑施工等)。 持续优化和改进日常业务流程,确保运营效率。
时间框架 持续性:贯穿整个产品生命周期(从概念到退市)。 临时性:项目有明确的开始和结束时间。 持续性:流程是长期存在的,并定期优化。
重复性 产品的开发和优化可能重复,但每次迭代有所不同。 项目通常是一次性的,针对特定目标。 流程是高度重复的,按照既定规则反复执行。
管理对象 产品的功能、体验、市场表现和用户满意度。 项目的时间、资源、范围和预算。 流程的步骤、规则、效率和跨部门协作。
参与角色 产品经理、设计师、开发人员、市场营销团队、用户等。 项目经理、开发团队、相关干系人。 流程分析师、运营团队、技术支持团队等。
结果 成功的产品(如应用、服务、硬件等),用户愿意为之买单。 项目目标的完成(如新产品发布、活动成功举办)。 流程效率提升、标准化和一致性。
工具/方法 产品路线图、用户故事地图、市场调研工具、原型设计工具等。 甘特图、敏捷开发工具(如 Jira、Trello)、Scrum 框架等。 流程建模工具(如 BPMN)、工作流管理系统等。

另外,可能还有 Program(项目集)管理。

BPMN

BPMN(Business Process Model and Notation) 是一种建模语言,由 OMG(Object Management Group) 组织制定,目的是提供一种直观、易读、可执行的方式来描述业务流程。

BPMN 是 BPM 中的重要工具,它通过标准化的符号和规则帮助业务人员和技术人员协作,共同理解并优化流程。

历史

  • BPMN 1.0(2004年)
  • 由 BPMI.org 发布,首次引入业务流程建模符号(如任务、网关、事件)。
  • 提供了一种标准化的业务流程图(BPD)表示方法。
  • BPMN 1.1(2008年)
  • 由 OMG(Object Management Group)维护,改进了 1.0 的技术细节。
  • BPMN 2.0(2011年)
  • 重大更新版本,由 OMG 发布。
  • 新增 XML 表达支持,实现业务流程的建模与自动化。
  • 引入泳道池(Pools and Lanes)、协作建模和更多事件类型。
  • BPMN 2.0.2(2014年)
  • 修正了 2.0 的部分技术细节,无重大符号变更。

一个例子

demo

对应的xml文件还是很复杂的

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
             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"
             xmlns:camunda="http://camunda.org/schema/1.0/bpmn"
             id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn">

  <process id="leave_approval" name="请假审批流程" isExecutable="true">

    <!-- 开始事件 -->
    <startEvent id="startEvent" name="提交请假申请">
      <outgoing>flow1</outgoing>
    </startEvent>

    <!-- 任务:经理审批 -->
    <userTask id="managerApproval" name="经理审批" camunda:assignee="manager">
      <incoming>flow1</incoming>
      <outgoing>flow2</outgoing>
    </userTask>

    <!-- 网关:审批是否通过 -->
    <exclusiveGateway id="gateway1" name="审批通过?">
      <incoming>flow2</incoming>
      <outgoing>flow3</outgoing>
      <outgoing>flow4</outgoing>
    </exclusiveGateway>

    <!-- 任务:通知 HR -->
    <userTask id="notifyHR" name="通知 HR" camunda:assignee="hr">
      <incoming>flow3</incoming>
      <outgoing>flow5</outgoing>
    </userTask>

    <!-- 任务:通知员工(审批被拒绝) -->
    <userTask id="notifyEmployee" name="通知员工" camunda:assignee="employee">
      <incoming>flow4</incoming>
      <outgoing>flow6</outgoing>
    </userTask>

    <!-- 结束事件 -->
    <endEvent id="endEvent">
      <incoming>flow5</incoming>
      <incoming>flow6</incoming>
    </endEvent>

    <!-- 流程连线 -->
    <sequenceFlow id="flow1" sourceRef="startEvent" targetRef="managerApproval"/>
    <sequenceFlow id="flow2" sourceRef="managerApproval" targetRef="gateway1"/>
    <sequenceFlow id="flow3" sourceRef="gateway1" targetRef="notifyHR" name="通过"/>
    <sequenceFlow id="flow4" sourceRef="gateway1" targetRef="notifyEmployee" name="拒绝"/>
    <sequenceFlow id="flow5" sourceRef="notifyHR" targetRef="endEvent"/>
    <sequenceFlow id="flow6" sourceRef="notifyEmployee" targetRef="endEvent"/>
  </process>

  <!-- 添加 BPMN 图形 -->
  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="leave_approval">
      <bpmndi:BPMNShape id="StartEvent_1_di" bpmnElement="startEvent">
        <dc:Bounds x="100" y="150" width="36" height="36"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="UserTask_1_di" bpmnElement="managerApproval">
        <dc:Bounds x="200" y="150" width="100" height="80"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="Gateway_1_di" bpmnElement="gateway1">
        <dc:Bounds x="350" y="165" width="50" height="50"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="UserTask_2_di" bpmnElement="notifyHR">
        <dc:Bounds x="450" y="100" width="100" height="80"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="UserTask_3_di" bpmnElement="notifyEmployee">
        <dc:Bounds x="450" y="250" width="100" height="80"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="EndEvent_1_di" bpmnElement="endEvent">
        <dc:Bounds x="600" y="180" width="36" height="36"/>
      </bpmndi:BPMNShape>

      <!-- 连接线 -->
      <bpmndi:BPMNEdge id="flow1_di" bpmnElement="flow1">
        <di:waypoint x="136" y="168"/>
        <di:waypoint x="200" y="168"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="flow2_di" bpmnElement="flow2">
        <di:waypoint x="300" y="168"/>
        <di:waypoint x="350" y="168"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="flow3_di" bpmnElement="flow3">
        <di:waypoint x="400" y="168"/>
        <di:waypoint x="450" y="140"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="flow4_di" bpmnElement="flow4">
        <di:waypoint x="400" y="168"/>
        <di:waypoint x="450" y="290"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="flow5_di" bpmnElement="flow5">
        <di:waypoint x="550" y="140"/>
        <di:waypoint x="600" y="180"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="flow6_di" bpmnElement="flow6">
        <di:waypoint x="550" y="290"/>
        <di:waypoint x="600" y="180"/>
      </bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>

</definitions>

可以通过一些网站,比如 demo.bpmn.io 等将其可视化。

EPC

EPC(Event-driven Process Chain) 是一种图形化的流程建模方法,专注于描述业务流程中事件和功能之间的关系。它广泛用于企业流程建模,特别是在 ERP 系统(如 SAP)的实施过程中。

1992 年,由德国萨尔布吕肯大学(University of Saarland)的 August-Wilhelm Scheer 教授 及其团队在 ARIS 框架中首次提出。

EPC vs BPMN

比较维度 BPMN EPC
全称 Business Process Model and Notation(业务流程建模与标注) Event-driven Process Chain(事件驱动流程链)
组织制定 OMG(Object Management Group) SAP 与 IDS Scheer
主要用途 业务流程建模、流程 自动化执行 、BPM 执行 业务流程分析、优化,不直接支持自动化执行
建模方式 以任务(Task)为核心,结合事件(Event)、网关(Gateway)等元素 以事件(Event)驱动流程,连接功能(Function)
表达能力 强,支持复杂流程、子流程、异常处理、消息流等 适用于高层次流程分析,但对复杂逻辑表达有限
核心元素 事件(Event)、任务(Task)、网关(Gateway)、流程(Flow)等 事件(Event)、功能(Function)、连接器(Connector)、组织单元(Organization Unit)
流程控制 使用 网关(Gateways) 进行分支与合并 依赖 连接符(如 AND、OR、XOR) 实现分支控制
优缺点 优点:标准化强,支持自动化执行,表达能力强
缺点:复杂流程可能较难理解
优点:适用于企业级 ERP 业务流程,适合高层分析
缺点:不适用于复杂流程自动化,缺少标准化执行支持

如何理解 BPMN 自动化执行

头大,如何理解?

BPMN 2.0 规范使用 XML 格式存储流程模型,并且可以被 BPM 引擎(如 Camunda、jBPM、Bonita)解析和自动执行。

BPMN EPC
是否有标准 XML 存储格式 ✅ 是,BPMN 2.0 XML ❌ 不是,EPC 没有标准 XML
是否可被 BPM 引擎解析和执行 ✅ 可以自动执行 ❌ 不能自动执行
是否有任务分配机制 userTask 可自动分配 ❌ 任务只是描述,没有执行机制
是否支持流程控制(网关) exclusiveGatewayparallelGateway 控制流程 ⚠️ 有控制流但无标准执行
是否支持事件驱动 startEventendEventmessageEvent ❌ 事件只是状态,不会主动触发

Aris

Aris 是支持流程建模和企业架构管理的工具(之一)。

Aris: Architecture of Integrated Information Systems

Software AG

Aris 是德国 Software AG 公司的产品。Software AG 成立于1969年,在2023被Silver Lake收购后,已经已经股份公司(Aktiengesellschaft,AG) 转变为 有限责任公司(GmbH),但继续使用原有商标 Software AG。

五视图架构

ARIS 主要依赖于自己的五视图架构(ARIS house)。这五个视图基于流程的功能、组织、数据、产品或服务视图,以及集成其他视图的流程视图本身。进行分类是为了将模型的复杂性分解为五个方面,从而使业务流程建模更简单。

aris house

每一个 Process 【流程视图】 - 需要有 Actor 执行 【组织视图】 - 依赖或生成 Data 【数据视图】 - 由 Action 构成 【功能视图】 - 有产出 Output 【产品或服务视图】

换句话,回答如下问题:

  • What(做什么)?【功能视图】
  • Who(谁来做)?【组织视图】
  • Why(为什么)?【产品或服务视图】
  • Which(哪些信息)?【数据视图】
  • How(如何做)?【流程视图】

参考

  • https://en.wikipedia.org/wiki/Business_Process_Model_and_Notation
  • https://en.wikipedia.org/wiki/Business_process_management
  • https://en.wikipedia.org/wiki/Architecture_of_Integrated_Information_Systems
  • https://ariscommunity.com/university/bpm-tutorials-aris
  • https://s3-eu-west-1.amazonaws.com/arisexpress/community2/documents/urelation/BPM-ARIS_Part2.pdf

Tools