工作流引擎技术介绍-BPMN2.0
将BPMN2.0放一章单独讲,是因为不管是个人接触到的流程开发人员或者技术交流群里讨论交流,大部分人都没了解BPMN2.0标准,学习过程仅仅是通过百度,了解到几个基础元素作用,文档也不会看。不了解,自然遇到新问题,也不会有新的思路,自然想不到好的解决方案,甚至连基础的流程图都不一定能画好,画出来的流程图也会奇奇怪怪,会走很多弯路。
所谓标准,正如千年前始皇帝的车同文,车同轨,达成了统一的共识,这样,只要你用符合标准的做法作出流程图,任何一个熟悉标准的人都能立马读懂。当然,很可惜,这些标准大都是国外技术人员组织的。其中制定了BPMN标准的组织叫对象管理组织。(开发人员至少熟悉UML图,标准也是这个组织)
英文Object Management Group,缩写为OMG)是一个国际协会,开始的目的是为分布式面向对象系统建立标准,现在致力于建立对程序、系统 和 业务流程建模的标准,以及基于模型的标准。
OMG是一个国际性的非盈利协会。任何组织都可以加入,在缴纳会费后可以参与OMG标准的制定和投票讨论。
OMG只提供标准的详细说明书,并不提供对于标准的实现软件。但是在一个标准的草案被接纳成为正式标准之前,提交这个草案并被接受的成员必须保证,他们在一年之内将会开发一个服从这个标准的产品。这样就阻止了没有参照实现的标准。
OMG鼓励其他的企业或开源组织开发服从OMG标准的产品,并且设法开发强制机制,让不同的软件具有通用性。
OMG的广泛使用的标准包括UML,MOF,XMI 业务流程建模标记法(BPMN)等。
标准类型:
商业动机元模型™(BMM™)-专为实施EA而设计,其中记录了目标、战略和业务计划,并将这些目标和计划与相关的规则和流程相关联。
业务流程建模表示法(BPMN™)-通过标准的图形表示法来捕获端到端业务流程,从业务分析人员到系统开发人员,所有业务涉众都可以轻松理解该图形表示法。
企业分布式对象计算(EDOC™)–由四个独立于技术的UML模型组成,用于对协作、可组合组件、事件和业务流程进行建模。它们使概念的建模成为可能,这些概念在没有EDOC的情况下必须以编程方式根据事件/通知,对关系的支持和持久性等服务的使用来指定。
统一建模语言(UML)–由13种图形建模符号组成的集成系列,旨在表示开发过程中软件/系统设计的不同方面,包括:系统结构(类、对象、组件、部署…)、行为(用例,活动,和状态机图)以及交互(顺序、通信、时序和交互概述)。
统一架构框架(UAF®)-美国国防部架构框架(DoDAF)和英国国防部架构框架(MoDAF)的架构框架的统一组合是目前最强大的企业架构框架。它提供了从初始概念到组织、运营和实施细节的全面集成支持。它得到了数十种复杂工具的广泛支持。UML分析机制允许创建专门的基于UML的语言,以表示更广泛的企业关注点。
用于建模实时和嵌入式系统(MARTE)的UML概要文件 – 扩展了UML以对(主要是实时的)计算机系统的时间和时间方面进行建模和操作。它涵盖了硬件和软件系统方面,涵盖从规范到设计、验证、代码生成等开发活动。
业务词汇和业务规则™(SBVR™)语义 – 提供了一种优雅的方式来表示业务词汇,业务事实和业务规则,以从组织的角度而非IT角度以正式的自然语言表示的精确逻辑。业务流程管理规范,例如业务流程建模符号(BPMN)。通过SBVR标准化词汇表可以在业务和IT学科之间建立桥梁。
通用仓库元模型(CWM™)-为企业提供正式的数据模型。它支持在数据仓库工具,平台和存储库之间交换商业智能元数据。使用CWM,开发人员可以生成特定的数据模型,包括关系表、记录或结构、OLAP、XML和多维数据库设计。OMG还致力于信息管理元模型(IMM™),这是对CWM的广泛修订。
回到BPMN,BPMN(Business Process Modeling Notation)是一种流程建模的通用和标准语言,用来绘制业务流程图,以便更好地让各部门之间理解业务流程和相互关系,旨在促进业务流程的沟通和理解。
BPMN2.0为所有业务元素定义了标准的符号,不同的符号代表不同的含义,事件、活动、网关、子流程、描述性建模符号。(部分实现不在标准内定义
活动:邮件任务、Http任务、Shell任务、Camel任务、服务任务、接收任务、业务规则任务、手工任务、脚本任务
事件:启动、边界、捕获、抛出、结束
网关:排他网关 、并行网关、包容网关、事件网关
子流程和调用活动:
描述性建模符号:泳道、泳池、信息流、数据对象和仓库、文本注释
这里不对所有元素作解释。感兴趣的可以查询网站https://www.omg.org/或者手册(下载附件:BPMN2.0 标准和BPMN2.0示例说明)。
快速开始:
线上预览:
https://www.bpmnquickguide.com/view-bpmn-quick-guide/
部署到自己网站:
<iframe src='http://www.bpmnquickguide.com/quickguide/'
scrolling='auto' frameborder='0' width='100%' height='700px'></iframe>
从这里我们能读取到元素符号的标准语义。当然Flowable文档对实现的元素也有说明。
以网关为例子,许多流程开发人员都问过网关一定要成对出现吗?包容网关又是什么?这些解释都能在Flowable文档或者BPMN标准元素说明中找到答案。