如何通过Flowable开发BPMN工作流?
摘要:[[Activiti]] [[Flowable]] [[Activiti with spring boot]] BPM、BPMN、BPMN2.0 BPM (Business Process Modeling) BPM 业务流程管理,从管理业
[[Activiti]]
[[Flowable]]
[[Activiti with spring boot]]
BPM、BPMN、BPMN2.0
BPM (Business Process Modeling)
BPM 业务流程管理,从管理业务流程的角度来说,我们现有的IT系统大多数都属于这一类,比如供应链领域的InStock(WMS),物流管理/提货送货预约(TMS),订单管理OMS、SRM、CRM等。都可以称之为BPM系统。系统存在的意义就是用来管理企业/政府等经营/行政主体管理自身纷繁复杂的业务关系以及业务流程。
正如我们处理现实中的问题的解决思路一样,我们通常对已经存在复杂问题进行模型化的抽象,通过模型来推导解决问题的方案。也就是所谓的建模(这一过程也被称之为 Business Process Modeling 业务流程建模)。BPM有很多种建模语言,BPMN(Business Process Modeling Notation)就是其中的一种建模语言。
BPMN (Business Process Modeling Notation)
而在BPMN发展的过程中,基于BPMN的一些特性与业务流程管理中常见的一些情况,总结提炼出了一套标准。这套标准或者也可称之为规范,在2004年5月由BPMI Notation Working Group对外发布,这就是BPMN 1.0 规范。后BPMI并入到OMG组织,并在2011年推出BPMN2.0标准,对BPMN进行了重新定义(Business Process Model and Notation) 该标准已经成为了ISO标准之一(标准下载)这就是我们常说的BPMN2.0
BPMN标准是听得比较多的工作流标准,但工作流的规范其实不止一种,还有XPDL,BPML等。甚至他们的出现时间比BPMN更早,只是因为一些技术和非技术原因,BPMN2.0被普遍使用了,而非BMPN2.0规范的厂商也逐渐转移了。
对象管理组织(英文Object Management Group,缩写为OMG)是一个国际协会,开始的目的是为分布式面向对象系统建立标准,现在致力于建立对程序、系统 和 业务流程建模的标准,以及基于模型的标准。
BPMN 2.0 关键要素
维基百科 - 业务流程模型和标记法
在BMPN2.0中,组件主要分为四类:活动、网关、事件、辅助
活动Activities
在BPMN 2.0中,活动是一个广义的概念,它包括了所有在业务流程中执行的工作。活动可以是一个简单的任务,也可以是一个更复杂的子流程,或者是一个调用其他流程或外部服务的操作。可以说流程图的实体模型定义主要就是由活动组成的。
任务(Task)
任务:任务是业务流程中的一个基本单元,它代表了一个工作步骤或要完成的实际工作。任务通常是执行者(人或系统)需要完成的具体行动。
用户任务(User Task):需要人工干预的任务。
服务任务(Service Task):自动执行的任务,通常与外部系统或服务交互。
接收任务(Receive Task):等待接收消息或数据的任务。
发送任务(Send Task):发送消息或数据的任务。
手工任务(Manual Task):需要人工手动完成的任务。
脚本任务(Script Task):通过脚本自动化完成的任务。
业务规则任务(Business Rule Task):应用业务规则的任务。
子流程(Sub-Process)
子流程(Sub-Process) 表示流程中的一个部分,它自身包含一个或多个活动。子流程可以看作是流程中的“迷你流程”,(流程过于复杂,对流程图进行抽象。这样可以将细枝末节并相对独立的部分抽取到一个单独的流程里,在总体流程中再进行引入)。它可以被重复使用,也可以嵌套在其他流程中。
调用活动 (Call Activity)
https://tkjohn.github.io/flowable-userguide/#bpmnCallActivity
调用活动(Call Activity):和子流程尽管看起来很相像,但在BPMN 2.0中,调用活动(call activity)有别于一般的_子流程——通常也称作_嵌入式子流程。从概念上说,两者都在流程执行到达该活动时,调用一个子流程。
定义和重用:
子流程:是一个内嵌的流程,它定义在主流程内部。子流程可以包含其他活动,并且可以有多个入口和出口。子流程在定义时就在主流程图中展开,或者作为参考流程(通过 BPMN 文件的外部引用)。
调用活动:是一个指向外部定义的流程的引用。它不包含活动的具体定义,而是调用一个已经定义好的流程。调用活动可以传递参数给被调用的流程,并接收返回值。
