BPMN基础元素及任务类型

2023-05-16

01 BPMN定义

BPMN(Business Process Modeling Notation,即业务流程建模符号),是一种流程建模的通用和标准语言,用来绘制业务流程图,以便更好地让各部门之间理解业务流程和相互关系。

02 BPMN基础元素类别

BPMN 2.0 只要充分了解以下四类基础元素:

  1. 流对象
  2. 数据
  3. 连接对象
  4. 泳道

1、流对象(Flow Objects):是定义业务流程的主要图形元素,包括三种:事件、活动、网关

事件(Events):指的是在业务流程的运行过程中发生的事情,分为:

  • 开始:表示一个流程的开始
  • 中间:发生的开始和结束事件之间,影响处理的流程
  • 结束:表示该过程结束

活动(Activities):包括任务和子流程两类。子流程在图形的下方中间外加一个小加号(+)来区分。

网关(Gateways):用于表示流程的分支与合并。

  • 排他网关:只有一条路径会被选择
  • 并行网关:所有路径会被同时选择
  • 包容网关:可以同时执行多条线路,也可以在网关上设置条件
  • 事件网关:专门为中间捕获事件设置的,允许设置多个输出流指向多个不同的中间捕获事件。当流程执行到事件网关后,流程处于等待状态,需要等待抛出事件才能将等待状态转换为活动状态。

2、数据(Data):数据主要通过四种元素表示

  • 数据对象(Data Objects)
  • 数据输入(Data Inputs)
  • 数据输出(Data Outputs)
  • 数据存储(Data Stores)

3、连接对象(Connecting Objects):流对象彼此互相连接或者连接到其他信息的方法主要有三种

顺序流:用一个带实心箭头的实心线表示,用于指定活动执行的顺序

信息流:用一条带箭头的虚线表示,用于描述两个独立的业务参与者(业务实体/业务角色)之间发送和接受的消息流动

关联:用一根带有线箭头的点线表示,用于将相关的数据、文本和其他人工信息与流对象联系起来。用于展示活动的输入和输出

4、泳道(Swimlanes):通过泳道对主要的建模元素进行分组,将活动划分到不同的可视化类别中来描述由不同的参与者的责任与职责。

03 BPMN中的任务TASK

1.任务(Task)

任务是一个流程(Process)中的关键原子级的活动。Task,是用来指代一个由人或计算设备来完成的活动,这些活动通过流程组合在一起而发挥效用。 

 在BPMN中一个Task使用一个单实线圆角矩形来表示。在Task上可以设置一个Marker(记号),Marker的指代作用可以 在后面具体讲解中理解。Marker有三种类型:1)Loop Marker 2) Multiple Instance Marker 3) Compensation Marker.

1) Loop Marker

也被称为Standard Loop Marker,如果指定了该Marker,该任务就会通过使用一个布尔表达式来做出是否再次执行本任务的决定,布尔表达式的检测分为执行任务前和任务后检测,任务前检查相当于while循环,任务后检查相当于until循环。

2) Multiple Instance Marker

也被称为MultipleInstance Loop Marker,这个Marker对应着一种编程结构for each,但是多实例Marker使得一个Task将成为多实例任务,多实例任务是最复杂的。

首先一个多实例任务,会有一个表达式,表达式的返回值是一个整数,这个整数标识当前任务还可再生成的实例数目,每个实例都可以用来去完成一个任务。

一个多实例任务,分为两种类型,Sequential和Parallel。Sequential任务类似于Standard Loop类型的Task,所有的待执行实例,会一个接一个地去执行。

而Parallel则将所有的待执行实例,并排展开,同时执行,而通过判断条件来进行实例调用,而实例的调用结果和当前Task是否标记为完成还有着复杂的关系,关于多实例任务,还是应该有一个专门的文章来介绍。

3) Compensation Marker

compenstation marker标志一个compensation task,通常使用在发生异常的状况下,如下图这个例子,当向买者收费发生异常时,就需要调用一个补偿任务,将用户打来的款再支付给用户。

2. Service Task

顾名思义, Service Task是通过服务(可以是Web服务,也可以是自动化程序)来完成的任务。Service Task有三个重要的属性:

  1. InMessage - 只有一个输入消息,虽然可以有多个输入的消息流,但是对于Service Task的每一个实例,都只能有一个消息流(Message Flow)能够设置当前的输入消息,另外有一点要注意,就是一个Service Task要能够接收消息,必须先定义相应的InputSet。
  2. OutMessage  - 只有一个输出消息,当有多个输出流(Message Flow)时,在当前Task实例完成时,会向所有的输出流发送消息。
  3. Implementation - 表示实现当前这个服务的实现技术,默认为Web Service,即通常为使用Web Service来完成输入消息的接收,并负责返回输出消息。
  4. 总结:输入多选一,输出全包揽。

3. Receive Task

Receive Task是用来等待外部Participant消息的任务,一旦接收到外部消息该任务就标记为完成状态,很多时候,一个流程都会以一个Receive Task作为开始,通过接收一条外部消息来启动流程,它可以看做是一种特殊的Service Task,它只允许接收消息,而不允许发送消息,Receive Task有两条重要属性:

  1. InMessage - 在规范中为Message,用来指代输入消息,当有多个输入流时,只要有一流到达,当前实例任务即完成。
  2. Implementation - 同Service Task,指定接收的当前消息的实现体,如一个Web Service。

4. Send Task

Send Task是一个用来向外部Participant发送消息的任务,一旦消息发送出去,该任务就完成了。同Receive Task类似,该任务,只能发送消息,并有一个实现体,如Web Service来负责发送该消息。

5. 其他Task

除了上面三个重要的Task类型,在BPMN中还有:

  1. User Task - 需要人在计算机的帮助下完成的任务,但UserTask的属性都与Web Service相同,两者的区别在于此处的UserTask并不意图直接由Web Serivce等来执行,而是类似文档性地指出人是在什么的帮助下完成任务的,如果使用引擎执行这里,这里还有尚待解决的新问题。
  2. Script Task - 通过引擎可识别的脚本语言来进行自动化操作。
  3. Manual Task - 纯人工任务,没有计算机的参与。
  4. Reference Task - 相当于其他Task的引用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

BPMN基础元素及任务类型 的相关文章

  • Ubuntu 服务器操作笔记 之 安装SSH

    1 gt sudo apt get install openssh server 安装SSH 2 gt sudo ps e grep ssh 查询 SSH是否启动 3 gt sudo etc init d ssh start 如果没有 则启
  • 分析APP的安装流程 API29

    先总结一下安装流程 xff0c 以及比较重要的类 PackageInstallerActivity java xff1a 在文件管理器里点击apk后就会调用该类 xff0c 主要用于显示要安装的apk的一些权限信息 InstallAppPr
  • Linux下安装KDE桌面环境

    Linux中有许多桌面应用环境 xff0c 在这其中除了deepin的dde桌面之外 xff0c 界面和功能都很强大好用的就是kde了 下面我来分享一下我的kde安装经过 我的Linux发行版是deepin的v15 11版本 xff0c 尝
  • json去掉指定字段

    lt dependency gt lt groupId gt org json lt groupId gt lt artifactId gt json lt artifactId gt lt version gt 20160810 lt v
  • mac 安装 man中文文档

    配置环境 brew install autotoolsbrew install python3brew install openccbrew install automake 下载源码 https github com man pages
  • 【NLP最佳实践】Huggingface Transformers实战教程

    内容简介 x1f917 手把手带你学 xff1a 快速入门Huggingface Transformers 和鲸链接 xff1a https www heywhale com home activity detail 61dd2a3dc23
  • visual studio配置clang开发环境

    一 安装环境 1 下载visual studio 2 选择工作负载 xff0c 使用c 43 43 的桌面开发 3 选择单个组件 xff0c 搜索clang xff0c 勾选两个组件 4 点击安装 等待安装完成 二 测试环境 xff1a 在
  • DeepSpeed-Chat:最强ChatGPT训练框架,一键完成RLHF训练!

    https github com microsoft DeepSpeedExamples tree master applications DeepSpeed Chat 一个快速 负担得起 可扩展和开放的系统框架 xff0c 用于实现端到端
  • BigCode开放性能超越Copilot的代码生成模型Starcoder

    BigCode释出高效能程式码生成模型StarCoderBase xff0c 与为Python调校的StarCoder xff0c 效能超越GitHub Copilot初期版本所用的OpenAI code cushman 001模型 xff
  • 【LLM系列之FLAN-T5/PaLM】Scaling Instruction-Finetuned Language Models

    论文题目 xff1a Scaling Instruction Finetuned Language Models 论文链接 xff1a https arxiv org pdf 2210 11416 pdf github链接 xff1a ht
  • LlamaIndex :面向QA 系统的全新文档摘要索引

    在这篇博文中 xff0c 我们介绍了一种全新的 LlamaIndex 数据结构 xff1a 文档摘要索引 我们描述了与传统语义搜索相比 xff0c 它如何帮助提供更好的检索性能 xff0c 并通过一个示例进行了介绍 背景 大型语言模型 LL
  • html中各种hr样式

    第一种 lt hr style 61 34 height 2px border none border top 2px dotted 185598 34 gt height 2px 是hr的高度 border none 是没有边框 bord
  • Python爬虫系列(五)360图库美女图片下载

    这几天终于忙完毕设和学校的事情 xff0c 终于有时间来写Python了 xff08 xffe3 xffe3 xff09 前些天在群里看到有人讨论这个360美女图库 的爬取 自己今天也尝试下 xff08 蛮简单 xff09 因为这个网站是下
  • Python 过滤字母和数字

    实例1 crazystring 61 39 dade142 0142f ad 39 只保留数字 new crazy 61 filter str isdigit crazystring print 39 39 join list new cr
  • Python人工智能之图片识别,Python3一行代码实现图片文字识别

    自学Python3第5天 xff0c 今天突发奇想 xff0c 想用Python识别图片里的文字 没想到Python实现图片文字识别这么简单 xff0c 只需要一行代码就能搞定 作者微信 xff1a 2501902696 from PIL
  • Contrastive Loss(对比损失)

    Contrastive Loss 在传统的siamese network中一般使用Contrastive Loss作为损失函数 xff0c 这种损失函数可以有效的处理孪生神经网络中的paired data的关系 siamese networ
  • maven详细配置

    Maven 本质 xff1a 项目管理工具 可以做到整体编译 测试 xff0c 快速打包部署 作用 xff1a 项目构建 xff0c 提供标准的构建方式依赖管理 xff0c 避免版本冲突 生命周期 xff1a mvn clean 清理编译项
  • clang ast基本命令的使用

    1 生成二进制文件 clang emit ast input cpp 需要二进制文件相应的查看器才可以读 xff0c txt打开乱码了 2 直接在控制台打印输出 clang Xclang ast dump fsyntax only inpu
  • unreferenced local variable

    有时候编译程序的时候会发现下面的错误 warning C4101 39 n 39 unreferenced local variable 其实就是程序里面定义了变量但是没有使用 xff0c 才会有这样的警告 解决方法就是像下面这样定义 in
  • 来自一位女程序员8年的总结。

    8年了 xff0c 从来没有像今天说总结这一下 我认为这是我的一个进步吧 8年 xff0c 包括上北大青鸟培训的2年 xff0c 然后6年的工作 xff0c 换了很多家公司 有个人原因也有公司原因 先说一下培训的那2年 xff0c 我们学习

随机推荐

  • Nginx配置重定向和反向代理(转发)

    重定向 地址重定向 xff1a 是指当使用者浏览某个网址时 xff0c 将他导向到另一个网址的技术 常用在把一串很长的网址 xff0c 转成较短的网址 因为当要传播某网站时 xff0c 常常因为网址太长 xff0c 不好记忆 xff1b 又
  • intelliJ idea创建分层的项目结构

    原文地址 xff1a http www yanwushu com post 35 html 本文使用intelliJidea 14 在idea中创建一个分层 xff08 视图层 业务逻辑层 数据访问层 xff09 的项目步骤如下 xff1a
  • 新电脑将软件安装到D盘的操作说明

    新电脑将软件安装到D盘的操作说明 每次安装软件 xff0c 都会默认安装到C盘 xff0c C盘满了 xff0c 电脑就会变卡 xff0c 我们应该避免这种情况 一 下载软件前要做的事 我们应该避免使用软件管家等工具 xff0c 因为它们的
  • 敏捷开发快速入门(四):Scrum开发流程

    文章目录 Scrum概述Scrum中三个角色Product Owner xff08 产品负责人 xff09 职责Scrum Master xff08 教练 xff09 职责Scrum Team xff08 开发团队 xff09 职责 Scr
  • Java命名规范【全】

    前言 本文根据本人日常的学习等 xff0c 总结出来的Java中的命名规范 基本上概括所有 喜欢的话记得点个赞 xff0c 收藏哟 包 xff08 Package xff09 命名规范 1 使用小写英文字母进行命名 2 多层包之间用点进行分
  • iOS包重签名工具,ipa文件重签名,快速签名,SignTool签名工具,好用的签名工具,App重签名

    重要 xff01 重要 xff01 重要 xff01 xff01 xff01 由于之前使用免费的服务器 xff0c 大概8月20号左右 xff0c 服务器已无法访问 xff0c 造成App无法使用 xff1b 现已把服务器移到阿里云 xff
  • windows server2008环境下mpirun运行报错:应用程序无法正常启动(0xc000007b)的解决方案

    原因是缺少运行库 xff0c 或者运行库32 64版本问题 xff0c 安装 微软常用运行库合集 Microsoft Runtimes AIO x86 43 x64 即可解决 https www flighty cn html soft 2
  • system.img解包打包

    在做copy machine的img中 xff0c 遇到不能重新build的情况 xff08 会改变信息 xff09 xff0c 这个时候可以将原来生 成的这些 img xff08 system img persist img cache
  • jmeter多用户并发测试

    0 总体结构 1 测试计划 gt 添加 gt 线程 xff08 用户 xff09 gt 线程组 2 线程组 gt 添加 gt 取样器 gt HTTP请求 注意本项目登录请求为GET 其他项目可能为POST 3 HTTP请求 gt 添加 gt
  • 练习java文档java.util.logging.ConsoleHandler

    ConsoleHandler 方法 close 相当于flush publish span class token keyword import span span class token namespace java span class
  • 轻量级JavaEE第1章课后习题1

    1 为什么说经典javaee开发和运行成本会比轻量级javaee更高 xff1f 答 可能是因为专业的JavaEE服务器要钱 xff0c 而简单的Web服务器不需要钱 2 EAO和DAO的区别是什么 xff1f 什么叫实体 Entity x
  • 请教:如何知道当前所用的gcc调用的是哪个版本的glibc库?及这个glibc库的位置?谢谢!

    http topic csdn net u 20090608 15 36bf4a6c cdf5 4e05 90f3 c0ac0d3f6743 html 6533 请教 xff1a 如何知道当前所用的gcc调用的是哪个版本的glibc库 xf
  • 深入C语言之字节对齐 - [C 数据结构 算法]

    在C程序设计中我们经常需要用到一种数据类型的长度 占内存的字节数 例如 int p 61 NULL p 61 int malloc 10 sizeof int 用sizeof int 来的到int类型的长度 用sizeof可得到C语言中数据
  • 组合导航(GNSS+惯性导航)

    一 GNSS 至少需要四颗星 怎么判断GNSS数据是否准确 xff1f 数据中是否携带星数 xff1f 二 惯性导航 关于磁力计的使用 xff1a 1 xff09 类似重力 xff0c 磁力也是一个矢量 地球任意位置的磁力在东北天地理系下的
  • VR/AR技术杂选

    相机频率 xff1a 一般来说 xff0c 相机频率60Hz是指相机的帧率为60fps xff0c 即frame per second 每秒钟60帧 红外探测器 xff1a 分为两种 xff0c 一种是基于光电特性 xff0c 一种是基于热
  • 百度2014校园招聘-研发工程师笔试题(济南站)

    一 xff0c 简答题 30分 1 xff0c 当前计算机系统一般会采用层次结构存储数据 xff0c 请介绍下典型计算机存储系统一般分为哪几个层次 xff0c 为什么采用分层存储数据能有效提高程序的执行效率 xff1f xff08 10分
  • 生产者消费者模式代码实现

    生产者消费者模式 xff1a 不同种类的线程间针对同一个资源的操作 问题 xff1a A xff1a 如果消费者先抢到cpu的执行权 xff0c 就会去消费数据 xff0c 但是现在的数据是默认值 xff0c 没有意义 xff0c 应该等着
  • 转载 本机运行x程序出现:Can't open display 原因及其解决方法

    在Linux Unix类操作系统上 DISPLAY用来设置将图形显示到何处 直接登陆图形界面或者登陆命令行界面后使用startx启动图形 DISPLAY环境变量将自动设置为 0 0 此时可以打开终端 输出图形程序的名称 比如xclock 来
  • 另一种root方法,Android boot.img破解

    一 破解原理 nbsp nbsp nbsp Android手机获得Root权限 其实就是让 system和 data分区获得读写的权限 这两个分区的权限配置 一般在根分区的init rc文件中 修改这个文件可永久获得root权限 众所周知
  • BPMN基础元素及任务类型

    01 BPMN定义 BPMN xff08 Business Process Modeling Notation xff0c 即业务流程建模符号 xff09 xff0c 是一种流程建模的通用和标准语言 xff0c 用来绘制业务流程图 xff0