国内最全的Spring Boot系列之三
2020上半年发文汇总「值得收藏」
RocketMQ安装Linux/Mac/Window – 第318篇
程序CPU占用率飙升,如何定位线程的堆栈信息超详细,值得收藏」看不懂还有配套视频 – 第319篇
「工作流Activiti」介绍-新手上路,注意安全 – 第320篇
「Activiti精品 悟纤出品」activiti介绍-十万个为什么 – 第321篇
「Activiti精品 悟纤出品」Activiti6 Getting Started- 稳扎稳打 – 第322篇
「Activiti精品 悟纤出品」Activiti7 Getting Started-摸石头过河 – 第323篇
师傅:环境准备好了,那我们这一节来讲讲怎么构建一个流程模型吧,这一节有点烧脑,请带上耳朵认真的进行听讲。
悟纤:师傅,我已经时刻准备着,奋战到天亮了。
师傅:好样的,学习就应该有这份决心,废话不多说,让我们开始进入正题吧。
前言
基本环境搭建好了,我们可以简单搭建一个模型来体验下。我们在前面开始的章节说过Activiti是基于BPMN,所以要构建一个流程模型,对于BPMN的一些建模元素还是要所有了解的。所以本节的主要内容就是:
(1)BPMN的简单介绍;
(2)使用Activiti进行构建一个流程模型;
一、BPMN
1.1 BPMN是一种流程建模的通用和标准语言
BPMN是一门符 语言。就像任何语言的目的一样,BPMN是为了方便沟通。旨在促进业务流程的沟通和理解。使用BPMN建模的目的是运用BPMN来绘制流程图,以便更好地让各部门之间理解业务流程和相互关系。BPMN 2.0的最大优势之一是消除了业务人员和IT技术人员之间沟通沟壑。
记住这句话就足够笑傲江湖了:BPMN是一种流程建模的通用和标准语言。
1.2 BPMN = 图形表达 + XML
BPMN2.0通过引入XML,使BPMN不仅仅是一个漂亮的图形表达,更能够描述业务流程间很多含糊不清的问题。通过XML来定义每个BPMN对象,使BPMN规范地保证每个图形,无论是流程模型还是所有在流程模型中的对象,都能清晰地进行表述。不过大家不用担心,BPMN流程设计器能够自动生成XML。
1.3 流程模型与BPM软件
由于采用了通用的语法,许多工作流建模工具和流程引擎支持BPMN。因此,许多不同的软件套件可以共享和处理BPMN的流程文件。BPMN 2.0为建模工具、流程引擎、业务活动监控(BAM)工具和其他业务工具,提供了交流沟通的渠道。通过BPMN 2.0,流程模型可以无缝地传输在不同厂商的 BPM软件中。
1.4 三个基本建模元素
大多数流程并不需要建模者了解整个规范。只要了解以下 三个基本建模元素,就能掌握BPMN2.0的核心。
(1)事件符 ;(2)活动符 ;(3) 关符
1.4.1 事件(Event)
让我们来看看在三种主要类型的事件:
(1)开始 – 表示一个流程的开始。
(2)中间 – 发生的开始和结束事件之间,影响处理的流程。
(3)结束 – 表示该过程结束。
这些是很简单的,但要有一点重要的要记住。如果您添加一个信封的图标给上述任何某个事件,那你将触发一个消息事件(Message Event)。即可以是由一个消息的到达而启动一个进程,也可以是在中间的某个位置与中间事件中发送一个消息(或捕获消息),或者可以在一个过程结束时发送的消息。
1.4.2 活动(Activity)
一个活动是工作或任务的一个通用术语。首先,一个活动可以是原子或非原子(组合活动)。换句话说,一个活动可以是一个任务,或者它可以是一个当前流程的子处理流程;其次,你还可以指定不同类型的活动。例如,任务可以是需要人工完成的任务,也可以自动完成的任务,比如由脚本完成的任务,或服务任务(交由web服务器处理的指令)。
1.4.3 关(Gateway)
关用来处理决策,有两种常用 关需要了解:
(1)排他型(X) ——这种决策分支通常根据一定的条件,通过顺序流来决定流程走向。通常,只有一条路径会被选择。
(2)并行型 (+) ——这种决策分支指代一个路径或多个路径合并后被分割成两个或多个平行的路径。所有路径会被同时选择。
1.5 描述性建模符
描述性建模子类则让BPMN更丰满。
(1)泳道(Pool):代表流程中的参与者,用来对活动进行组织和分类)
(2)泳池 (Lane):泳道里的一个子划分
(3)信息流(message flow) – 虚线表示
(4)数据对象和仓库
(5)文本注释
1.6 Activit建模器
从这个建模器也可以看出这个BPMN的一些核心的建模元素。
1.7 BPMN常用建模工具
介绍几个可供选择的建模工具:
(1)bpmn-js
bpmn官放提供的开源建模工具bpmn-js,支持基本的模型设计,但缺少属性配置,不过可能是故意这样设计的,这个工具主要是给activiti开发者进行二次开发。
https://demo.bpmn.io/
(2)YaoqiangBPMN Editor
yaoqiang用java开发的bpmn设计器,由于是java开发,所以支持跨平台。
http://www.yaoqiang.org/
(3)actiBPM
actiBPM,idea插件。
(4)activitidesigner
activiti designer 是一个eclipse插件。它跟随activiti一起发布。
1.8 more…
(1)2019最详细Activiti6.0之BPMN2.0规范
http://www.uml.org.cn/modeler/201907312.asprtid=22245
(2)bpmn2.0文档
https://gitee.com/Flowable_BPMN/docs
2.1 说明
这里我们创建一个请假流程模型:部门的任何一个人发起都需要领导进行审批。
(1)有三个用户:张三、李四、悟纤(领导);
(2)张三和李四都是IT部门的,他们的领导是悟纤;
所以一个流程包括如下几个方面:
(1)用户和用户组;
(2)流程模型以及流程的发起者和处理者;
(3)流程表单;
2.2 创建用户
我们的流程里需要有用户进行参与,所以需要进行创建用户:
点击“Identitymanagement”进行用户和组的管理。
在“Users”进行创建用户:
依次创建张三、李四、悟纤三个用户,那么创建完之后的结果是:
其中admin是系统默认的用户。
2.3 创建用户组
在“Users”旁边就是“Groups”,点击进行创建:
创建完成之后,把张三和李四添加到技术部中:
2.4 创建一个新的流程模型
2.4.1 创建模型
进入activiti-app,进入Kickstar App->Create Process创建新的流程模型,需要输入模型名称和模型主键,这个主键必须唯一,代码中发起流程需要用到:
另外这里也支持直接导入已经创建好的流程模型。
2.4.2 搭建请假流程
使用左边的元素进行创建出来一个如下的模型:
(1)开始 : Start Events –Start event;
(2)提交审批、部门审批:Activities– User task;
(3)结束:End Events – Endevent;
另外在每个元素进行设置Id和name属性,就可以看到上面截图的效果了:
2.4.3 分配模型处理人
单击Assignments时,显示如下图所示:
对于提交审批截图下:
对于部门审批如下:
2.4.4 流程表单设计
请假是需要提交个请假表单的,请假时间和请假事由。
点击“Processes”旁边的Forms进行创建表单。
我们先创建一个请假表单:
创建好一个表单之后,需要进行构建这个表单里的元素,比如:
最后应该是这样子:
另外我们还需要一个领导审批表单:
2.4.5 流程绑定表单
将流程和表单进行绑定,回到Processes中,进行绑定:
点击“Referenced form”:
将提交审批的流程节点绑定员工请假表单;将部门审批绑定到领导审批单。
2.5 流程发布
到上面我们的流程模型已经创建了,我们可以创建一个App跑一下我们的这个流程。
2.5.1 创建模型
在“Processes”的最右边有一个“Apps”,进入,点击“Create App”进行创建App:
2.5.2 将应用和流程绑定
将我们的应用和流程进行绑定。
记得记得保存。绑定之后的效果:
2.5.3 发布流程
绑定之后就可以点击“Publish”:
2.5.3 发布结果
发布完成后回到首页可以看到发布结果:
2.6 流程测试
2.6.1 流程说明
这里我们需要使用张三或者李四进行登录,然后提交审批单,这个审批单就会到上一节悟纤进行审批。
2.6.2 发起请假任务
(1)登录“zhangsan”账 ,进入请假App:
(2)在“Processess”, 点击“Startprocess”开始一个流程:
Show diagram查看流程当前流转状态(当前的状态被标绿了):
Cancel process就是取消流程了。
点击 complete, 任务流转到下一个流程节点。这个任务就流转到到了部门经理了。
2.6.3 审批流程
使用“wuqian”账 进行登录,点击“请假”App,然后”Tasks”可以看到提交上来的任务:
点击“Claim”进行审批操作:
至此流程流程。
2.7 流程管理activiti-admin
activity-admin应用提供一些基本的流程运行时管理功能,可以查看当前运行的所有实例和任务,也可以上传流程文件。
2.7.1 登录
访问地址为http://localhost:8080/activiti-admin,默认账 为 admin/admin,登录。
2.7.2 配置应用服务节点
进入“Configuration”,然后点击“EditActiviti REST endpoint”进行配置应用服务节点:
然后点击“CheckActiviti REST endpoint”,查看状态是否是:
Endpoint valid,Engine at endpoint: default – 6.0.0.4。
2.7.3查看历史流程记录
点击“Tasks”可以查看历史流程记录:
2.8 流程模型的XML
最后我们要知道我们的这个流程模型是由一堆的XML构成的,可以下载到本地进行查看(可以导出也可以导入):
对于这个XML这里就不展开了,此文章篇幅已经超负载了。
悟纤小结
师傅:这一篇介绍的有点多了,通过两天的时间,才把这些知识点梳理出来的。
悟纤:师傅,你辛苦了,你坐着休息下,我来总结下内容。
(1)BMPN:BPMN是一种流程建模的通用和标准语言。
(2)使用Activit6构建一个流程模型并且运行起来。
② 创建流程模型:就是使用BPMN进行构建出来一个流程,主要是配置id和name属性;然后流程需要分配发起人和操作人,也就是上面的创建的用户和用户组;最后就是创建表单,将表单和流程进行绑定。
③ 流程发布:创建App将我们的流程和app绑定。
④ 使用我们的用户进行登录,然后测试流程。
⑤ 对于activiti-admin进行配置,可以看到我们的历史流程记录。
这一节介绍的有点难,大家自己进行操作然后消化下。
学院中有Spring Boot相关的课程:
à悟空学院:https://t.cn/Rg3fKJD
SpringBoot视频:http://t.cn/A6ZagYTi
Spring Cloud视频:http://t.cn/A6ZagxSR
SpringBoot Shiro视频:http://t.cn/A6Zag7IV
SpringBoot交流平台:https://t.cn/R3QDhU0
SpringData和JPA视频:http://t.cn/A6Zad1OH
SpringSecurity5.0视频:http://t.cn/A6ZadMBe
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!