一种高性能高可靠业务流程引擎实现方法和系统技术方案

技术编号:34972351 阅读:22 留言:0更新日期:2022-09-21 14:12
本发明专利技术涉及一种高性能高可靠业务流程引擎实现方法和系统。本发明专利技术实现了业务流程引擎的集群化部署、容器化部署,能够更充分的利用硬件资源,实现高效的扩容;通过缓存服务避免过多的数据库操作引发的性能瓶颈,达到提升系统性能的目标;通过将运行库和历史库分离,保障生产环境的运行时流程数据,随着时间的推移能够保证运行库的数据始终控制在恒定的小数量级,实现流程流转过程中的高性能数据库查询;通过在流程的数据表中进行冗余设计,在流程流转过程中通过单表查询就可以获取到需要的流程信息,避免了表与表之间的关联查询,从而降低了CPU消耗。本发明专利技术可以实现高性能高可用的业务流程引擎。用的业务流程引擎。用的业务流程引擎。

【技术实现步骤摘要】
一种高性能高可靠业务流程引擎实现方法和系统


[0001]本专利技术属于计算机领域,涉及一种高性能高可靠的业务流程引擎实现方法和系统,是基于业务流程引擎特点的实现方案。

技术介绍

[0002]业务流程管理系统是一种在流程形式化表示的驱动下,通过软件的执行而完成流程定义、管理和执行的系统,其主要目标是对业务过程中各活动发生的顺序以及活动相关的资源的调用,进行管理而实现业务流程的自动化的系统。
[0003]传统的业务流程以硬编码的方式固化在应用系统中,在业务流程和组织机构发生变化的情况下,需要对系统进行重大修改,甚至重新设计。业务流程管理系统解决了上述问题,应用开发人员通过可视化的流程建模工具设计流程,通过业务流程引擎解析流程的流转和任务的产生,将流程的参与者信息做成可配置的方式。当流程变化时,可以通过很少的修改甚至是不用修改应用,能敏捷适应流程的变化。其中业务流程引擎是业务流程管理系统的核心,主要负责流程解析,流程和任务的流转、调度。
[0004]目前越来越多的企业都在构建统一的应用支撑平台,包括统一用户管理、统一资源管理,统一业务流程管理系统等,由业务流程管理系统对外提供统一的流程服务。另外目前很多企业也在构建企业的中台战略,将业务流程管理系统做成技术中台,提供企业级的流程能力复用平台。随着接入的系统增多,使用系统的用户数增多,需要业务流程引擎能够提供高性能和高可用的流程服务,因此构建高性能和高可用的业务流程引擎势在必行。

技术实现思路

[0005]本专利技术针对上述问题,结合业务流程的应用特点,提供一种高性能高可靠业务流程引擎实现方法和系统。
[0006]一种高性能高可靠业务流程引擎实现方法,包括以下步骤:
[0007]将业务流程引擎部署于服务器集群中,将服务器中的应用程序部署于容器中;
[0008]将业务流程数据中定义类的数据存储到缓存服务器中;
[0009]将运行库和历史库分离,将关闭状态的流程数据迁移到历史库中;
[0010]对业务流程建立冗余的数据表,在业务流程流转过程中通过单表查询获取相应的数据。
[0011]进一步地,所述将业务流程引擎部署于服务器集群中,是通过将业务流程引擎做成无状态的流程服务来支持集群化部署,原则是流程服务不存储数据状态,所有的状态都存放到独立的外部存储中;所述无状态体现在:
[0012]将session信息存储到redis分布式缓存服务器中;
[0013]业务流程引擎不允许对同一个流程实例既进行提交操作,又进行回退操作,通过redis或者zookeeper实现全局分布式锁,避免流程服务保存锁状态信息;
[0014]将应用程序的文件放到独立的文件存储服务器中。
[0015]进一步地,所述服务器集群中,在应用服务器前部署反向代理,通过Nginx实现反向代理和负载均衡;客户端的请求先发送到反向代理,反向代理将请求转发到应用服务器中,实现业务流程引擎的横向扩展能力;通过负载均衡消除单点故障,提供故障容错和无缝切换能力。
[0016]进一步地,所述缓存服务器将需要缓存的流程定义和流程配置信息放入分布式缓存redis或者memcached中,达到提升系统性能的目标。
[0017]进一步地,所述流程定义类的数据在读取时先从缓存服务器中获取,如果缓存服务器中存在,则直接返回,如果不存在,则从数据库中获取;如果数据库中存在,则将数据放入缓存服务器中;流程定义类的数据修改和删除时,在修改数据库数据的同时,也从缓存服务器中清空相应的信息,保证缓存和数据库的数据一致性。
[0018]进一步地,在操作数据库后,再删除缓存;如果是非主键的缓存,则先查询出原来的非主键缓存key,再进行缓存清除操作。
[0019]进一步地,所述将运行库和历史库分离,将关闭状态的流程数据迁移到历史库中,包括:在流程正常提交到结束、流程作废或者流程强制办结时,将流程数据从运行库迁移到历史库;在流程复活时,将流程数据从历史库迁移到运行库。
[0020]进一步地,所述对业务流程建立冗余的数据表,包括:将流程数据划分为流程定义、流程实例、活动实例、工作项实例,从左到右流程数据逐渐的更加详细,在右边数据库表中冗余左边数据库表的字段,通过单表查询即可获取到需要的流程信息,避免表与表之间的关联查询。
[0021]一种采用上述方法的高性能高可靠业务流程引擎实现系统,其包括服务器集群,业务流程引擎部署于服务器集群中,服务器中的应用程序部署于容器中;所述服务器集群中部署缓存模块、迁移模块、冗余模块,其中:
[0022]缓存模块将业务流程数据中定义类的数据存储到缓存服务器中;
[0023]迁移模块将应用程序的运行库和历史库分离,将关闭状态的业务流程数据迁移到历史库中;
[0024]冗余模块对业务流程建立冗余的数据表,在业务流程流转过程中通过单表查询获取相应的数据。
[0025]本专利技术的有益效果是:
[0026]1)本专利技术的容器化部署相比传统的虚拟机部署更轻量,单台物理机可以承载更多的容器,能够更充分的利用硬件资源,实现高效的扩容。
[0027]2)本专利技术的应用服务器前部署反向代理,实现反向代理和负载均衡,客户端的请求先发送到反向代理,反向代理将请求转发到应用服务器中,实现业务流程引擎的横向扩展能力;通过负载均衡消除单点故障,提供故障容错和无缝切换能力,将硬件和软件的错误造成的影响最小化,提供高可用能力;保证整个系统所有的模块均不存在单点故障,实现整个业务流程引擎的高可用。
[0028]3)本专利技术的缓存服务能够避免过多的数据库操作,从而避免再请求过程中频繁造成的io请求,引发性能瓶颈,将需要缓存的流程定义和流程配置信息放入分布式缓存redis或者memcached中,达到提升系统高性能的目标。
[0029]4)本专利技术将运行库和历史库分离,能够保障生产环境的运行时流程数据,随着时
间的推移,能够保证运行库的数据始终控制在恒定的小数量级,实现流程流转过程中的高性能数据库查询,达到整体业务应用的高性能。
[0030]5)本专利技术在流程的数据表中进行冗余设计,通过空间换时间,能够提升业务流程引擎的性能;在流程流转过程中可以实现单表查询,通过单表查询就可以获取到需要的流程信息,避免了表与表之间的关联查询,从而降低了CPU消耗,实现业务流程引擎的高性能。
附图说明
[0031]图1为缓存获取的流程图。
[0032]图2为缓存修改和删除的流程图。
[0033]图3为运行库和历史库分离的示意图。
[0034]图4为冗余的示意图。
具体实施方式
[0035]为了便于本领域普通技术人员理解和实施本专利技术,下面对该方法的具体实施方式作详细描述。
[0036]本专利技术结合业务流程的应用特点,从如下几个方面解决业务流程的高性能和高可用问题。
[0037]一、集群化部署、容器化部署。
[0038]集群化部署是指集群本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种高性能高可靠业务流程引擎实现方法,其特征在于,包括以下步骤:将业务流程引擎部署于服务器集群中,将服务器中的应用程序部署于容器中;将业务流程数据中定义类的数据存储到缓存服务器中;将运行库和历史库分离,将关闭状态的流程数据迁移到历史库中;对业务流程建立冗余的数据表,在业务流程流转过程中通过单表查询获取相应的数据。2.根据权利要求1所述的方法,其特征在于,所述将业务流程引擎部署于服务器集群中,是通过将业务流程引擎做成无状态的流程服务来支持集群化部署,原则是流程服务不存储数据状态,所有的状态都存放到独立的外部存储中;所述无状态体现在:将session信息存储到redis分布式缓存服务器中;业务流程引擎不允许对同一个流程实例既进行提交操作,又进行回退操作,通过redis或者zookeeper实现全局分布式锁,避免流程服务保存锁状态信息;将应用程序的文件放到独立的文件存储服务器中。3.根据权利要求1所述的方法,其特征在于,所述服务器集群中,在应用服务器前部署反向代理,通过Nginx实现反向代理和负载均衡;客户端的请求先发送到反向代理,反向代理将请求转发到应用服务器中,实现业务流程引擎的横向扩展能力;通过负载均衡消除单点故障,提供故障容错和无缝切换能力。4.根据权利要求1所述的方法,其特征在于,所述缓存服务器将需要缓存的流程定义和流程配置信息放入分布式缓存redis或者memcached中,达到提升系统性能的目标。5.根据权利要求1所述的方法,其特征在于,所述流程定义类的数据在读取时先从缓存服务器中获取,如果缓存服务器中存在...

【专利技术属性】
技术研发人员:韩光冯文化宋乃丰
申请(专利权)人:中国软件与技术服务股份有限公司
类型:发明
国别省市:

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

1