掌桥专利:专业的专利平台
掌桥专利
首页

开源流程引擎适配神通数据库的方法及装置

文献发布时间:2023-06-19 18:37:28


开源流程引擎适配神通数据库的方法及装置

技术领域

本发明涉及开源流程引擎适配调整,具体而言,涉及一种开源流程引擎适配神通数据库的方法及装置。

背景技术

开源流程引擎Camunda是一种基于java语言的轻量级开源的工作流引擎框架。神通数据库一款关系型计算机数据库管理系统。Camunda是基于数据库表进行流程编排。Camunda支持的数据库有:MySQL、MariaDB、Oracle、DB2、PostgreSQL、SQL Server、H2。目前Camunda无法支持神通数据库,想要使Camunda支持神通数据库,则需要做些适配。目前的方案为通过扩展Camunda源码的,以适配神通数据库。

扩展Camunda源码的过程具体包括:

1、修改流程引擎配置实现类ProcessEngineConfigurationImpl,增加神通数据库类型。

2、修改Sql会话工厂类DbSqlSessionFactory,增加对神通数据库Sql语法的解析。

3、增加支持神通数据库的初始化Sql脚本。

目前这种扩展Camunda源码的方案,改造成本过高,现有技术缺少一种实现简单、实施成本低、能够快速适配神通数据库的方法。

发明内容

本发明为了解决上述背景技术中的至少一个技术问题,提出了一种开源流程引擎适配神通数据库的方法及装置。

为了实现上述目的,根据本发明的一个方面,提供了一种开源流程引擎适配神通数据库的方法,该方法包括:

获取开源流程引擎Camunda提供的Oracle数据库的初始化Sql脚本语句;

对所述初始化Sql脚本语句进行适配神通数据库的修改,得到修改后的初始化脚本语句;

使开源流程引擎Camunda连接神通数据库,然后按照所述初始化Sql脚本语句的执行顺序执行修改后的初始化脚本语句。

可选的,本发明的开源流程引擎适配神通数据库的方法,还包括:

在项目配置文件中设置开源流程引擎Camunda的数据源为Oracle数据库。

可选的,所述对所述初始化Sql脚本语句进行适配神通数据库的修改,得到修改后的初始化脚本语句,具体包括:

将所述初始化Sql脚本语句中的为单个字段创建索引的语句修改为适配神通数据库的语句。

可选的,所述对所述初始化Sql脚本语句进行适配神通数据库的修改,得到修改后的初始化脚本语句,具体包括:

将所述初始化Sql脚本语句中NCLOB类型的字段的字段类型修改为CLOB类型。

可选的,所述对所述初始化Sql脚本语句进行适配神通数据库的修改,得到修改后的初始化脚本语句,具体包括:

将所述初始化Sql脚本语句中的多个字段创建联合唯一索引的语句修改为适配神通数据库的语句。

可选的,所述按照所述初始化Sql脚本语句的执行顺序执行修改后的初始化脚本语句,具体包括:

分析开源流程引擎Camunda的初始化脚本中表与表之间的主外键依赖关系,并结合开源流程引擎Camunda项目启动时输出的日志,确定所述按照所述初始化Sql脚本语句的执行顺序;

按照所述执行顺序执行修改后的初始化脚本语句。

为了实现上述目的,根据本发明的另一方面,提供了一种开源流程引擎适配神通数据库的装置,该装置包括:

脚本语句获取单元,用于获取开源流程引擎Camunda提供的Oracle数据库的初始化Sql脚本语句;

脚本语句修改单元,用于对所述初始化Sql脚本语句进行适配神通数据库的修改,得到修改后的初始化脚本语句;

脚本语句执行单元,用于使开源流程引擎Camunda连接神通数据库,然后按照所述初始化Sql脚本语句的执行顺序执行修改后的初始化脚本语句。

为了实现上述目的,根据本发明的另一方面,还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述开源流程引擎适配神通数据库的方法的步骤。

为了实现上述目的,根据本发明的另一方面,还提供了一种计算机可读存储介质,其上存储有计算机程序/指令,该计算机程序/指令被处理器执行时实现上述开源流程引擎适配神通数据库的方法的步骤。

为了实现上述目的,根据本发明的另一方面,还提供了一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现上述开源流程引擎适配神通数据库的方法的步骤。

本发明的有益效果为:

本发明考虑到神通数据库Sql语法和Oracle数据库Sql语法相近,分析Camunda引擎源码发现其运行时支持的Oracle数据库的Sql语法适用于神通数据库,仅有初始化Sql脚本语句,需要调整为神通数据库库支持的语法,本发明参考Camunda提供的Oracle数据库的初始化Sql脚本语句,通过调整初始化Sql脚本语句,这一简单、易实施的方法,来实现Camunda流程引擎适配神通数据库的,本发明具体实现简单、实施成本低、能够快速适配神通数据库等优点。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:

图1是本发明实施例开源流程引擎适配神通数据库的方法的第一流程图;

图2是本发明实施例开源流程引擎适配神通数据库的方法的第二流程图;

图3是本发明实施例开源流程引擎适配神通数据库的方法的第三流程图;

图4是本发明实施例开源流程引擎适配神通数据库的装置的结构框图;

图5是本发明实施例计算机设备示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。

需要说明的是,本申请技术方案中对数据的获取、存储、使用、处理等均符合国家法律法规的相关规定。

需要说明的是,本发明开源流程引擎适配神通数据库的方法和装置可用于金融领域,也可用于除金融领域之外的任意领域,本发明开源流程引擎适配神通数据库的方法和装置的应用领域不做限定。

本发明考虑到神通数据库Sql语法和Oracle数据库Sql语法相近,分析Camunda引擎源码发现其运行时支持的Oracle数据库的Sql语法适用于神通数据库,仅有初始化Sql脚本语句,需要调整为神通数据库库支持的语法,本发明参考Camunda提供的Oracle数据库的初始化Sql脚本语句,通过调整初始化Sql脚本语句,这一简单、易实施的方法,来实现Camunda流程引擎适配神通数据库的。本发明简化了现有适配方案的复杂度,提供了一种实现简单、实施成本低,能够快速适配神通数据库的方法。

图1是本发明实施例开源流程引擎适配神通数据库的方法的第一流程图,如图1所示,在本发明一个实施例中,本发明的开源流程引擎适配神通数据库的方法包括步骤S101至步骤S103。

步骤S101,获取开源流程引擎Camunda提供的Oracle数据库的初始化Sql脚本语句。

本发明通过下载Camunda源码包,在其camunda-engine模块下,进入org/camunda/bpm/engine/db/create/路径,复制出Oracle数据库的初始化Sql脚本语句。如下:

activiti.oracle.create.case.engine.sql

activiti.oracle.create.case.history.sql

activiti.oracle.create.decision.engine.sql

activiti.oracle.create.decision.history.sql

activiti.oracle.create.engine.sql

activiti.oracle.create.history.sql

activiti.oracle.create.identity.sql

本发明以这些初始化脚本语句为基础,进行调整修改,以适配神通数据库。

步骤S102,对所述初始化Sql脚本语句进行适配神通数据库的修改,得到修改后的初始化脚本语句。

本发明修改初始化Sql脚本语句神通数据库不支持的Sql语法语句为神通数据库支持的语法语句。

在本发明一个实施例中,本步骤修改的部分有:为字段TENANT_ID_创建索引语句的修改、NCLOB类型字段的修改、多个字段创建联合唯一索引语句的修改。

步骤S103,使开源流程引擎Camunda连接神通数据库,然后按照所述初始化Sql脚本语句的执行顺序执行修改后的初始化脚本语句。

在本发明一个实施例中,本发明的开源流程引擎适配神通数据库的方法,还包括:

在项目配置文件中设置开源流程引擎Camunda的数据源为Oracle数据库。

本发明在项目配置文件处指定数据源,配置如下:

Camunda.bpm.database.type:oracle

Camunda引擎运行时支持的Oracle数据库Sql语法适用于神通数据库,故在项目代码中指定Camunda数据源类型为Oracle,即可完成Camunda适配神通数据库。

在本发明一个实施例中,上述步骤S102的对所述初始化Sql脚本语句进行适配神通数据库的修改,得到修改后的初始化脚本语句,具体包括:

将所述初始化Sql脚本语句中的为单个字段创建索引的语句修改为适配神通数据库的语句。

在本发明一个具体实施例中,本步骤修改为字段TENANT_ID_创建索引的语句。在activiti.oracle.create.case.engine.sql,activiti.oracle.create.case.history.sql,activiti.oracle.create.decision.engine.sql,activiti.oracle.create.decision.history.sql,activiti.oracle.create.engine.sql,activiti.oracle.create.history.sql这些脚本语句中,存在create index index_name on table_name(TENANT_ID_,0)这样为TENANT_ID字段创建索引的语句。本步骤把这样的语句全部修改为create indexindex_name on table_name(TENANT_ID_)。

在本发明一个实施例中,上述步骤S102的对所述初始化Sql脚本语句进行适配神通数据库的修改,得到修改后的初始化脚本语句,具体还包括:

将所述初始化Sql脚本语句中NCLOB类型的字段的字段类型修改为CLOB类型。

在activiti.oracle.create.engine.sql脚本中,创建表ACT_RU_FILTER表时存在两处创建NCLOB类型的字段,本发明为了适配神通数据库把此两处NCLOB类型修改为CLOB类型。

在本发明一个实施例中,上述步骤S102的对所述初始化Sql脚本语句进行适配神通数据库的修改,得到修改后的初始化脚本语句,具体还包括:

将所述初始化Sql脚本语句中的多个字段创建联合唯一索引的语句修改为适配神通数据库的语句。

在activiti.oracle.create.engine.sql,activiti.oracle.create.identity.sql脚本语句中,存在为多个字段创建联合唯一索引的语句,例如如下:

create unique index index_name on table_name

(case when column_name1 is null then null else column_name2 end,

case when column_name1 is null then null else column_name3 end,

case when column_name1 is null then null else column_name4 end,

case when column_name1 is null then null else column_name1 end);

本发明把此类语句修改为:create unique index index_name on table_name(column_name1,column_name2,column_name3,column_name4),以适配神通数据库,该修改无先后顺序的要求。

如图2所示,在本发明一个实施例中,上述步骤S103的按照所述初始化Sql脚本语句的执行顺序执行修改后的初始化脚本语句,具体包括步骤S201和步骤S202。

步骤S201,分析开源流程引擎Camunda的初始化脚本中表与表之间的主外键依赖关系,并结合开源流程引擎Camunda项目启动时输出的日志,确定所述按照所述初始化Sql脚本语句的执行顺序。

步骤S202,按照所述执行顺序执行修改后的初始化脚本语句。

本发明分析Camunda流程引擎初始化脚本中表与表之间的主外键依赖关系,结合流程引擎项目启动时输出的日志,梳理出初始化脚本执行的先后顺序,如下所示:

activiti.oscar.create.engine.sql

activiti.oscar.create.history.sql

activiti.oscar.create.identity.sql

activiti.oscar.create.case.engine.sql

activiti.oscar.create.case.history.sql

activiti.oscar.create.decision.engine.sql

activiti.oscar.create.decision.history.sql

连接神通数据库后,按此顺序执行,初始化数据表即可。

图3是本发明开源流程引擎适配神通数据库的方法的具体流程图,如图3所示,本发明开源流程引擎适配神通数据库的方法具体包括以下步骤:

1、初始化脚本语法调整适配神通数据库语法;

2、顺序执行调整后的初始化脚本;

3、引擎指定数据库类型为Oracle。

在步骤1中,具体包括:对单个字段建立索引语法进行调整;对不支持的字段类型进行调整;对多个字段联合唯一索引进行调整。

由以上实施例可见,本发明简化了现有适配方案的复杂度,提供了一种实现简单、实施成本低,能够快速适配神通数据库的方法。

下面将对本发明中出现的一些术语进行解释说明:

Camunda:一种基于java语言的轻量级开源的工作流引擎框架。本发明所述版本号为7.14.0。

神通数据库:一款关系型计算机数据库管理系统。本发明所述版本号为ShenTong7.0.8。

Oracle数据库:一款关系型计算机数据库管理系统。

Sql:具有数据操纵和数据定义等多种功能的数据库语言。

数据库表索引:对数据库表中一列或多列的值进行排序的一种数据结构,使用索引可快速访问数据库表中的特定信息。

需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

基于同一发明构思,本发明实施例还提供了一种开源流程引擎适配神通数据库的装置,可以用于实现上述实施例所描述的开源流程引擎适配神通数据库的方法,如下面的实施例所述。由于开源流程引擎适配神通数据库的装置解决问题的原理与开源流程引擎适配神通数据库的方法相似,因此开源流程引擎适配神通数据库的装置的实施例可以参见开源流程引擎适配神通数据库的方法的实施例,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

图4是本发明实施例开源流程引擎适配神通数据库的装置的结构框图,如图4所示,在本发明一个实施例中,本发明的开源流程引擎适配神通数据库的装置包括:

脚本语句获取单元1,用于获取开源流程引擎Camunda提供的Oracle数据库的初始化Sql脚本语句;

脚本语句修改单元2,用于对所述初始化Sql脚本语句进行适配神通数据库的修改,得到修改后的初始化脚本语句;

脚本语句执行单元3,用于使开源流程引擎Camunda连接神通数据库,然后按照所述初始化Sql脚本语句的执行顺序执行修改后的初始化脚本语句。

在本发明一个实施例中,本发明的开源流程引擎适配神通数据库的装置,还包括:

项目配置文件修改单元,用于在项目配置文件中设置开源流程引擎Camunda的数据源为Oracle数据库。

在本发明一个实施例中,所述脚本语句修改单元2,具体包括:

单个字段创建索引语句修改模块,用于将所述初始化Sql脚本语句中的为单个字段创建索引的语句修改为适配神通数据库的语句。

在本发明一个实施例中,所述脚本语句修改单元2,具体还包括:

字段类型修改模块,用于将所述初始化Sql脚本语句中NCLOB类型的字段的字段类型修改为CLOB类型。

在本发明一个实施例中,所述脚本语句修改单元2,具体还包括:

多字段创建联合唯一索引语句修改模块,用于将所述初始化Sql脚本语句中的多个字段创建联合唯一索引的语句修改为适配神通数据库的语句。

在本发明一个实施例中,所述脚本语句执行单元3,具体包括:

执行顺序确定模块,用于分析开源流程引擎Camunda的初始化脚本中表与表之间的主外键依赖关系,并结合开源流程引擎Camunda项目启动时输出的日志,确定所述按照所述初始化Sql脚本语句的执行顺序;

执行模块,用于按照所述执行顺序执行修改后的初始化脚本语句。

为了实现上述目的,根据本申请的另一方面,还提供了一种计算机设备。如图5所示,该计算机设备包括存储器、处理器、通信接口以及通信总线,在存储器上存储有可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述实施例方法中的步骤。

处理器可以为中央处理器(Central Processing Unit,CPU)。处理器还可以为其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。

存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及单元,如本发明上述方法实施例中对应的程序单元。处理器通过运行存储在存储器中的非暂态软件程序、指令以及模块,从而执行处理器的各种功能应用以及作品数据处理,即实现上述方法实施例中的方法。

存储器可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

所述一个或者多个单元存储在所述存储器中,当被所述处理器执行时,执行上述实施例中的方法。

上述计算机设备具体细节可以对应参阅上述实施例中对应的相关描述和效果进行理解,此处不再赘述。

为了实现上述目的,根据本申请的另一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序在计算机处理器中执行时实现上述开源流程引擎适配神通数据库的方法中的步骤。本领域技术人员可以理解,实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)、随机存储记忆体(RandomAccessMemory,RAM)、快闪存储器(Flash Memory)、硬盘(Hard Disk Drive,缩写:HDD)或固态硬盘(Solid-State Drive,SSD)等;所述存储介质还可以包括上述种类的存储器的组合。

为了实现上述目的,根据本申请的另一方面,还提供了一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现上述开源流程引擎适配神通数据库的方法的步骤。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

技术分类

06120115638387