一种基于BPMN的微服务工作流部署方法技术

技术编号:27615104 阅读:15 留言:0更新日期:2021-03-10 10:43
本发明专利技术公开了一种基于BPMN的微服务工作流部署方法,涉及工作流引擎领域,具体为:用户通过流程编辑界面串接各图元,以bpmn格式进行存储,然后筛选各个图元的每个元素,将其分为节点类元素和关系类元素;对每个节点类中各元素,去除变量名id和值,将剩余的变量名和值写入YAML中的数组对象template中;同时,对每个关系类中各元素,根据变量名start和end中的变量值,得到工作流的执行顺序,并写入YAML中的数组对象dependencies中;将添加完声明信息的YAML文件提交给工作流部署引擎,针对当前微服务,引擎读取对象类DAG,获得元素的先后执行顺序;并查找对象类Templates中对应的元素,按顺序将所有元素执行完毕后,对节点类的微服务执行完毕;本发明专利技术大大降低了微服务部署的门槛。本发明专利技术大大降低了微服务部署的门槛。本发明专利技术大大降低了微服务部署的门槛。

【技术实现步骤摘要】
一种基于BPMN的微服务工作流部署方法


[0001]本专利技术涉及微服务工作流引擎领域,尤其涉及一种基于BPMN的微服务工作流部署方法。

技术介绍

[0002]随着互联网业务的不断发展,随之而来的用户量增长、系统数量增多以及调用依赖关系更加复杂化,系统架构从单体时代迁移到了服务SOA时代。微服务即是SOA下的产物,这种架构提倡将应用程序划分成一组小的服务,每个服务独立地运行在自己的进程中,服务之间采用轻量级的通信机制互相沟通,每个服务都围绕着具体的业务进行构建。
[0003]随着微服务的流行与发展,容器技术也相应得被重视起来。容器包含了完整的运行时环境:除了应用程序本身之外,这个应用所需的全部依赖、类库、其他二进制文件和配置文件等,都统一被打入了一个称为容器镜像的包中。通过将应用程序本身和其依赖容器化,抽象化了操作系统发行版本和其他基础环境造成的差异。起初人们倾向于将微服务部署在虚拟机里,这能够实现微服务的隔离性,但是无法进行快速扩展,无法立即对瞬时突增的负载或者流量做出反应。
[0004]虚拟机是在物理服务器的上层,用软件来模拟特定的硬件系统。Hypervisor位于硬件和系统之间,是创建虚拟机必须的一个部分。虚拟机软件必须使用Hypervisor作为一个中间层,是虚拟机技术的核心,当宿主操作系统启动虚拟机时,会通过hypervisor给虚拟机分配内存,CPU,网络和磁盘等资源,并加载虚拟的操作系统,因而需要消耗宿主机大量的物理资源。而使用了容器技术,一台宿主机上运行的多个容器化应用共享这台宿主机操作系统的内核,因而不需要虚拟机技术的hypervisor中间层,同虚拟机技术相比,更加轻量化,启动速度更快。
[0005]从成本考虑,使用传统的虚拟机技术,为了实现隔离性,每个应用或者说微服务都必须运行在一个虚拟机里,这种重复和浪费的操作系统和资源的分配,可以通过容器技术来避免,从而大大减少了云服务提供商对硬件的投入,节省了云服务中心的成本。
[0006]现在已经有不少基于容器技术建立的微服务平台,如Kubernetes,但是用户在使用Kubernetes部署微服务的时候,需要学习如何编写部署的YAML文档,其中包括Kubernetes中对各种资源的定义与实现、部署文档的格式要求等等知识,用户上手使用需要付出一定的学习成本。虽然Kubernetes能够支持微服务的部署,但是其本身并没有带有调用运行和管理微服务的流程的功能。
[0007]BPMN是BPM及workflow的建模语言标准之一。BPMN定义了一个业务流程图(Business Process Diagram),该业务流程图基于一个流程图(flowcharting),该流程图被设计用于创建业务流程操作的图形化模型。业务流程图由一系列的图形化元素组成。这些元素简化了模型的开发,且业务人员看上去非常熟悉。这些元素每个都有各自的特性,且与大多数的建模器类似。比如,活动是矩形,条件是菱形。通过将BPMN转换为YAML来部署工作流程,业务人员操作更直观、更便捷。
[0008]BPMN是基于XML语言书写的,Kubernetes的资源定义则都是基于YAML语言的规范,想要将BPMN的可视化流程建模应用于Kubernetes上,就必须对两种语言进行转化。而现有的算法都是XML语言直接转换成YAML,XML中以标签形式体现的元素在YAML中转换为缩进的体现,没有专门针对BPMN规范的转换。并且现有的技术并没有对BPMN中的信息进行分析筛选统合,只是单纯的格式转换,这样得到的YAML文件不仅包含了不少多余的信息同时也无法满足部署系统的需求。

技术实现思路

[0009]本专利技术针对上述问题,提供了一种基于BPMN的微服务工作流部署方法,将实际业务工作流使用微服务的架构部署到容器中,不需要用户学习如何编写部署文档,即可实现设计工作流到实际部署完成工作流程的全过程,大大降低了微服务部署的门槛。
[0010]所述的微服务工作流部署方法,分以下步骤:
[0011]步骤一、用户通过流程编辑界面设计一个仅包括图元和自然语言描述的工作流程,以bpmn格式进行存储;
[0012]流程编辑界面支持用户使用拖拽方式绘制各类图元,其中图元指的是一组图形元素;
[0013]用户根据需求有序地将各图元进行串接,同时用自然语言描述编辑后保存,得到bpmn后缀的文件;
[0014]图形元素分为四种:流对象、连接对象、甬道和描述对象。
[0015]步骤二、将读取的bpmn信息分为两类,并筛选出各个图元及其属性的信息;
[0016]两类包括:bpmn各个图元及其属性,以及bpmn中各个图元在画布上的形状与位置信息。
[0017]然后,筛选出bpmn中各个图元及其属性的信息,并将bpmn中各个图元在画布上的形状与位置信息舍去。
[0018]步骤三,针对筛选出的各图元,根据属性信息对图元中的每个元素进行分类;
[0019]将各图元中属性信息为活动的元素归为一类,简称流程的节点类;将各图元中属性的信息为箭头或条件的元素划为一类,简称流程的关系类;
[0020]步骤四、针对每个节点类中各元素,将当前元素的属性内容中按变量名和变量值进行遍历,去除变量名id以及对应的变量值,将剩余的变量名写入YAML中的数组对象template中。
[0021]每个节点类对应一个微服务,所有的微服务均存储在仓库中;
[0022]具体为:针对当前节点类A中选取元素B,对元素B中的各变量名进行遍历,去除变量名id以及对应的变量值,将剩余的变量名和变量值作为数组对象,映射写入YAML中的数组对象template中。同时,在仓库中查询每个微服务,将微服务对应的name信息作为前缀名字,存入数组对象template中dag->tasks的name字段中。
[0023]每个元素分别对应一个数组template和一个task块;
[0024]元素B中信息存入数组template后,按bpmn中的顺序依次选择下一个元素C,将元素C中信息遍历完毕,写入YAML中对应的数组对象template中。
[0025]当前节点类A中所有元素的变量值以缩进方式作为属性存入,当前节点类的元素
都遍历完毕后,选择下一个节点类作为当前节点类,继续以同样的方式遍历,最终所有节点类的存储形成对象类Templates;
[0026]步骤五、针对每个关系类中各元素,根据各元素的变量名start和end中的变量值,得到工作流的执行顺序,并写入YAML中的数组对象dependencies中,所有关系类元素的数组对象dependencies组成对象类DAG。
[0027]具体为:
[0028]每个关系类的元素中,变量名start和end中存储的值分别为元素,针对关系类元素r的变量名start的变量值为元素“A”,变量名end的变量值为元素“B”,则元素r的描述关系为先执行元素A后执行元素B,则将变本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于BPMN的微服务工作流部署方法,其特征在于,所述步骤如下:步骤一、用户通过流程编辑界面设计一个仅包括图元和自然语言描述的工作流程,以bpmn格式进行存储;用户根据需求有序地将各图元进行串接,同时用自然语言描述编辑后保存,得到bpmn后缀的文件;步骤二、将读取的bpmn信息分为两类,并筛选出各个图元及其属性的信息;两类包括:bpmn各个图元及其属性,以及bpmn中各个图元在画布上的形状与位置信息;步骤三,针对筛选出的各图元,根据属性信息对图元中的每个元素进行分类;将各图元中属性信息为活动的元素归为一类,简称流程的节点类;将各图元中属性的信息为箭头或条件的元素划为一类,简称流程的关系类;步骤四、针对每个节点类中各元素,将当前元素的属性内容中按变量名和变量值进行遍历,去除变量名id以及对应的变量值,将剩余的变量名写入YAML中的数组对象template中;每个节点类对应一个微服务,所有的微服务均存储在仓库中;具体为:针对当前节点类A中选取元素B,对元素B中的各变量名进行遍历,去除变量名id以及对应的变量值,将剩余的变量名和变量值作为数组对象,映射写入YAML中的数组对象template中;同时,在仓库中查询每个微服务,将微服务对应的name信息作为前缀名字,存入数组对象template中dag->tasks的name字段中;元素B中信息存入数组template后,按bpmn中的顺序依次选择下一个元素C,将元素C中信息遍历完毕,写入YAML中对应的数组对象template中;当前节点类A中所有元素的变量值以缩进方式作为属性存入,当前节点类的元素都遍历完毕后,选择下一个节点类作为当前节点类,继续以同样的方式遍历,最终所有节点类的存储形成对象类Templates;步骤五、针对每个关系类中各元素,根据各元素的变量名start和end中的变量值,得到工作流的执行顺序,并写入YAML中的数组对象dependencies中,所有关系类元素的数组对象dependencies组成对象类DAG;具体为:每个关系类的元素中,变量名start和end中存储的值分别为元素,针对关系类元素r的变量名start的变量值为元素“A”,变量名end的变量值为元素“B”,则元素r的描述关系为先执行元素A后执行元素B,则将变量值“A”存入元素B的数组对象dependencies中;所有的关系类元素变量名的数组对象dependencies,共同组成对象类DAG;步骤六、对当前bpmn文件读取完...

【专利技术属性】
技术研发人员:吴文峻于笑明王洋洲
申请(专利权)人:北京航空航天大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1