首页> 中国专利> 一种形式化代码生成中的效率控制方法及装置

一种形式化代码生成中的效率控制方法及装置

摘要

本发明公开了一种形式化代码生成中的效率控制方法及装置,该方法包括:接收效率控制规则,效率控制规则包括输入过滤规则、输入过程控制规则以及输出预判规则;接收用户输入的形式化代码;对该代码进行解析,生成解析结果;判断代码是否符合输入过滤规则或输入过程控制规则;根据解析结果判断代码是否通过语法校验;如果代码符合输入过滤规则或输入过程控制规则,且通过语法校验,则保存代码;如果代码不符合输入过滤规则或输入过程控制规则,或没有通过语法校验,则提示错误;在保存后,当接收执行指令时,计算执行结果集,并判断执行结果集是否符合输出预判规则;如果符合输出预判规则,则继续执行;如果不符合输出预判规则,则提示错误。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-08-24

    授权

    授权

  • 2013-08-28

    实质审查的生效 IPC(主分类):G06F9/45 申请日:20130506

    实质审查的生效

  • 2013-07-31

    公开

    公开

说明书

技术领域

本发明涉及计算机技术领域,具体涉及一种形式化代码生成中的效率控 制方法及装置。

背景技术

在信息化高速发展的今天,形式化代码在数学、计算机科学、人工智能 等领域得到广泛运用。形式化代码是通过一定样式规则组合起的代码,可以 实现各种语义逻辑,并可以实现相关运算。各类编程语言、各类数据库语言、 可扩展标记语言以及特定领域的专用代码均是形式化代码。现有技术中,存 在着各类型的软件开发产品、数据库编程产品以及为解决某特定行业问题所 专门开发的商业软件系统,如微软的Visual Studio系列集成开发环境、数 据库规范语言类的形式代码生成工具Microsoft Office Access等。

但是,目前各种类型的形式化代码生成主要依赖工具的能力,存在以下 技术问题:

首先,目前各种编程语言、数据库语言开发工具,仅仅提供了代码编写 及基本的语法校验功能,只能保证用户产生的形式化代码可以在特定环境中 执行,而对其运算效率、运行结果、执行合理性并不进行任何控制,现代大 中型企业动辄上亿的数据记录,如果仅靠代码生产人员进行控制,容易出现 各种生产危险,降低系统安全性;

其次,如果需要进行代码的重用,如简单替换一定的结构的数值,一般 是通过对代码进行复制,然后修改相关参数实现,较为容易出现疏漏,部分 语言支持循环模式,但往往只能实现简单的参数替换,功能不够完善;

最后,代码生产人员需要较高的专业素质且代码产生方式比较单一,各 种典型的形式化代码,如C、JAVA、C++等编程语言,SQL数据库语言,面向 特定领域的自定义语言等,对于用户的要求较高,用户需要进行一段时间的 专业培训,才能使用工具进行各种代码的开发工作,对于工具有较高的依赖 性。

发明内容

有鉴于此,本发明的主要目的是提供一种形式化代码生成中的效率控制 方法及装置,以解决现有技术中形式化代码生成过程中缺少效率控制机制, 可能导致系统安全性降低的问题。

为解决上述问题,本发明提供的技术方案如下:

一种形式化代码生成中的效率控制方法,所述方法包括:

接收效率控制规则,所述效率控制规则包括输入过滤规则、输入过程控 制规则以及输出预判规则;

接收用户输入的形式化代码;

对所述用户输入的形式化代码进行解析,生成解析结果;

判断所述形式化代码是否符合所述输入过滤规则或所述输入过程控制规 则;

根据所述解析结果判断所述形式化代码是否通过语法校验;

如果所述形式化代码符合所述输入过滤规则或所述输入过程控制规则, 并且所述形式化代码通过语法校验,则保存所述形式化代码;

如果所述形式化代码不符合所述输入过滤规则或所述输入过程控制规 则,或者所述形式化代码没有通过语法校验,则提示错误;

在保存所述形式化代码后,当接收到执行指令时,计算所述形式化代码 的执行结果集,并判断所述执行结果集是否符合所述输出预判规则;

如果所述执行结果集符合所述输出预判规则,则继续执行所述形式化代 码;如果所述执行结果集不符合所述输出预判规则,则提示错误。

相应的,所述接收用户输入的形式化代码,包括:

接收形式化代码中需要使用的输入变量;

通过直接文本录入模式、选择模式、枚举模式、给定定义域输入模式、 对象重命名模式中的一种或多种接收用户输入的形式化代码。

相应的,所述输入过滤规则包括输入数据过滤规则以及特殊句型及其输 入数据过滤规则;所述输入过程控制规则包括关联规则以及特殊句型结构规 则;所述解析结果中还包括每项所述形式化代码的句型;

所述判断所述形式化代码是否符合所述输入过滤规则或所述输入过程控 制规则包括:

判断接收的形式化代码中需要使用的输入变量是否符合输入数据过滤规 则;

逐项判断形式化代码的句型是否为输入过滤规则中的特殊句型,如果是, 则判断该项形式化代码的输入变量是否符合所述特殊句型及其输入数据过滤 规则;

判断所述形式化代码是否符合关联规则;

逐项判断形式化代码的句型是否为输入过程控制规则中的特殊句型,如 果是,则判断该项形式化代码是否符合所述特殊句型结构规则。

相应的,所述解析结果中还包括每项所述形式化代码的句型;所述方法 还包括:接收预先设定的分步式输入代码规则;

所述接收用户输入的形式化代码,包括:

接收形式化代码中需要使用的输入变量;

根据所述分步式输入代码规则以及每项所述形式化代码的句型分步通过 直接文本录入模式、选择模式、枚举模式、给定定义域输入模式、对象重命 名模式中的一种或多种接收用户输入的形式化代码。

相应的,在保存所述形式化代码之后,接收到执行指令之前,所述方法 还包括:

定义矢量变量及所述矢量变量的属性;

判断所述形式化代码中是否包括所述矢量变量;

根据所述矢量变量的属性,将包括所述矢量变量的一项形式化代码替换 为一组形式化代码并保存。

一种形式化代码生成中的效率控制装置,所述装置包括:

第一接收模块,用于接收效率控制规则,所述效率控制规则包括输入过 滤规则、输入过程控制规则以及输出预判规则;

第二接收模块,用于接收用户输入的形式化代码;

解析模块,用于对所述用户输入的形式化代码进行解析,生成解析结果;

第一判断模块,用于判断所述形式化代码是否符合所述输入过滤规则或 所述输入过程控制规则;

校验模块,用于根据所述解析结果判断所述形式化代码是否通过语法校 验;

代码生成模块,用于如果所述形式化代码符合所述输入过滤规则或所述 输入过程控制规则,并且所述形式化代码通过语法校验,则保存所述形式化 代码;

第二判断模块,用于在保存所述形式化代码后,当接收到执行指令时, 计算所述形式化代码的执行结果集,并判断所述执行结果集是否符合所述输 出预判规则;

执行模块,用于如果所述执行结果集符合所述输出预判规则,则继续执 行所述形式化代码;

提示错误模块,用于如果所述形式化代码不符合所述输入过滤规则或所 述输入过程控制规则,或者所述形式化代码没有通过语法校验,则提示错误; 如果所述执行结果集不符合所述输出预判规则,则提示错误。

相应的,所述第二接收模块包括:

变量接收子模块,用于接收形式化代码中需要使用的输入变量;

代码接收子模块,用于通过直接文本录入模式、选择模式、枚举模式、 给定定义域输入模式、对象重命名模式中的一种或多种接收用户输入的形式 化代码。

相应的,所述输入过滤规则包括输入数据过滤规则以及特殊句型及其输 入数据过滤规则;所述输入过程控制规则包括关联规则以及特殊句型结构规 则;所述解析结果中还包括每项所述形式化代码的句型;所述第一判断模块 包括:

第一判断子模块,用于判断接收的形式化代码中需要使用的输入变量是 否符合输入数据过滤规则;

第二判断子模块,用于逐项判断形式化代码的句型是否为输入过滤规则 中的特殊句型,如果是,则判断该项形式化代码的输入变量是否符合所述特 殊句型及其输入数据过滤规则;

第三判断子模块,用于判断所述形式化代码是否符合关联规则;

第四判断子模块,用于逐项判断形式化代码的句型是否为输入过程控制 规则中的特殊句型,如果是,则判断该项形式化代码是否符合所述特殊句型 结构规则。

相应的,所述解析结果中还包括每项所述形式化代码的句型;所述装置 还包括:

第三接收模块,用于接收预先设定的分步式输入代码规则;

所述第二接收模块包括:

变量接收子模块,用于接收形式化代码中需要使用的输入变量;

代码接收子模块,用于根据所述分步式输入代码规则以及每项所述形式 化代码的句型分步通过直接文本录入模式、选择模式、枚举模式、给定定义 域输入模式、对象重命名模式中的一种或多种接收用户输入的形式化代码。

相应的,所述装置还包括:

矢量定义模块,用于定义矢量变量及所述矢量变量的属性;

第三判断模块,用于判断所述形式化代码中是否包括所述矢量变量;

矢量应用模块,用于根据所述矢量变量的属性,将包括所述矢量变量的 一项形式化代码替换为一组形式化代码并保存。

由此可见,本发明具有如下有益效果:

首先,本发明通过建立输入过滤规则、输入过程控制规则等效率控制规 则,对用户输入的形式化代码进行效率控制,通过输出预判规则对生成代码 的执行结果进行预判,避免不能容忍的执行操作发送,实现了从形式化代码 生成周期的各个阶段,控制代码的效率,保证系统运行环境稳定,提高安全 性,并且可以根据用户需要,接收相关效率控制规则,补充至效率控制规则 库中,增加了灵活性;其次,通过矢量变量定制,使得代码可以批量生成, 减少由于用户手工生成结构一致的句法时由于重复劳动造成疏漏的可能性, 提升生产效率;最后,本发明可以判断用户的所需产生代码句型,以分步式 的框架,通过列表选择、枚举、给定定义域输入、对象重命名等模式,逐步 接收用户输入的形式化代码,快速高效的生成形式化代码集合,降低了对用 户专业技术水平的要求,并减少了由于技术能力欠缺带来的生产安全相关的 隐患。

附图说明

图1为本发明形式化代码生成中的效率控制方法的流程图;

图2为本发明形式化代码生成中的效率控制方法使用矢量变量流程图;

图3为本发明形式化代码生成中的效率控制方法逻辑组件示意图;

图4为本发明形式化代码生成中的效率控制方法的一种具体实施例示意 图;

图5为本发明形式化代码生成中的效率控制装置的结构示意图。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图 和具体实施方式对本发明实施例作进一步详细的说明。

本发明形式化代码生成中的效率控制方法及装置,是针对现有技术中存 在的形式化代码生成过程中缺少效率控制机制的问题,提出不仅对用户输入 的形式化代码进行语法校验,而且接收效率控制规则建立效率控制规则数据 库,利用输入过滤规则、输入过程控制规则以及输出预判规则对用户输入的 形式化代码及其执行结果进行效率控制,以在同等计算能力下,控制代码的 执行响应时间,达到效率控制目的,保证系统运行环境稳定。

基于上述思想,参见图1所示,本发明形式化代码生成中的效率控制方法 包括以下步骤:

步骤101:接收效率控制规则,效率控制规则包括输入过滤规则、输入 过程控制规则以及输出预判规则。

接收效率控制规则可以建立效率控制规则库,效率控制规则可以理解为 一组控制代码执行的响应时间的规则,针对不同形式化代码效率控制规则可 能不同。效率控制规则可以包括输入过滤规则、输入过程控制规则以及输出 预判规则,其可以应用于例如SQL语言(Structured Query Language,结构 化查询语言)。

其中,输入过滤规则可以包括输入数据过滤规则以及特殊句型及其输入 数据过滤规则;输入过程控制规则可以包括关联规则以及特殊句型结构规则。

步骤102:接收用户输入的形式化代码。

具体的,可以接收形式化代码中需要使用的输入变量;通过直接文本录 入模式、选择模式、枚举模式、给定定义域输入模式、对象重命名模式中的 一种或多种接收用户输入的形式化代码。

直接录入模式在指定的文本域用键盘的方式,输入需要的代码内容,可 以直接输入各种函数或者代码支持的表达方式。

选择模式如SQL代码编写中,以列表的方式,列出可以进行分析的数据表 或者数据表包含的字段,这些数据表在实际应用中也可以作为选择的输入变 量加入到代码中。又如定义的矢量变量,可以直接选择进行输入。

枚举模式将代码支持的函数或者特殊表达式如求和(SUM)数据类型转化 (CONVERT)作为一个枚举的全集,用户在使用的过程中,根据实际需要,从 中选取合适的类型加入代码,但不可以超出枚举的范围。

给定定义域输入如给定函数f(X),要求X的值范围为0到正无穷,且X 必须为整数,则用户只能输入区间内的一个数值,作为形式化代码的组成部 分。

对象重命名模式就是给代码中的片段进行重命名,方便用户理解。如SQL 语句中的Select A.al as a from A,即表示将A表的a1字段重命名为a方 便处理,只有特定的句型才可以支持这种表达方式。

步骤103:对用户输入的形式化代码进行解析,生成解析结果。

可以利用LL(k)方法进行代码的解析,该方法是一种自顶向下的编译 方法,可以根据对关键字、变量、句型等要素的解析,解析结果中则可以包 括每项形式化代码的句型,利用该方法将输入的形式化代码进行语法分析, 生成解析结果可以判断代码是否语法规范。以常规查询语句为例,形如 select A.a1,A.a2from A表示从A表中查询其中a1,a2字段的内容。其对 应的句型需要包含select和from两个需要严格匹配的字符串,如果不包含 这两个字符串或者顺序不一致,则不符合语法要求。

步骤104:判断形式化代码是否符合输入过滤规则或输入过程控制规则。

具体的,可以判断接收的形式化代码中需要使用的输入变量是否符合输 入数据过滤规则;

逐项判断形式化代码的句型是否为输入过滤规则中的特殊句型,如果是, 则判断该项形式化代码的输入变量是否符合特殊句型及其输入数据过滤规 则;

判断形式化代码是否符合关联规则;

逐项判断形式化代码的句型是否为输入过程控制规则中的特殊句型,如 果是,则判断该项形式化代码是否符合特殊句型结构规则。

步骤105:根据解析结果判断形式化代码是否通过语法校验。

步骤106:如果形式化代码符合输入过滤规则或输入过程控制规则,并 且形式化代码通过语法校验,则保存形式化代码。

步骤107:如果形式化代码不符合输入过滤规则或输入过程控制规则, 或者形式化代码没有通过语法校验,则提示错误。

步骤108:在保存形式化代码后,当接收到执行指令时,计算形式化代 码的执行结果集,并判断执行结果集是否符合输出预判规则。

步骤109:如果执行结果集符合输出预判规则,则继续执行形式化代码; 如果执行结果集不符合输出预判规则,则提示错误。

进一步的,在提示错误时,根据解析结果还可以同时提示错误出现的位 置,以方便用户进行修改。

在上述实施例中,输入数据过滤规则可以对形式化代码中需要使用的输 入变量进行过滤,使形式化代码仅处理必要的数据,从而降低运算压力。如 仅处理中国山东省的某数据,则对输入变量中包括的全国数据进行过滤,仅 得到包含山东省的子数据,即代码在执行阶段控制了分析数据的规模。在具 体实现中,可以通过机构代码、数据时间范围字段等方式实现对输入数据过 滤。

特殊句型及其输入数据过滤规则可以针对某特殊句型,对该特殊句型的 输入数据进行限制,特殊句型及其输入数据过滤规则可以理解为句型及其输 入数据记录的对应规则。例如,某个代码运算功能是对代码处理的数据的上 下两条记录做关联运算,结果通过增加字段的方式保存,这种处理功能比较 复杂,经过实践验证,原始数据在20000以内可以获得较好的运算响应时间, 则可以接收特殊句型及其输入数据过滤控制规则:“关联运算功能-20000”, 在处理关联运算类句型时,(句型的界定可以通过后续的形式化代码进行解析 获得),则需要对原始输入数据20000条以内这个输入过滤条件的控制。

输入过程控制规则可以对输入的形式化代码本身进行控制,关联规则例 如SQL语句处理两个表关联时,需要加入关联条件。特殊句型结构规则例如 SQL语句使用数据库支持的数据类型转换函数时,需要指定转换后字段的长 度。具体的,如SQL代码的convert函数,其语法上支持CONV ERT(data_type, expression[,style]),如convert(char,A字段),这种语法上来说是正确 的,但是应用在海量分析型系统时,会导致字段过长,不仅会使运算时间过 长,同时产生的运算结果过大,严重消耗系统资源,针对这种情况,利用输 入过程控制规则,使得形如convert(char,XXX),这类型的转换,char后均 需要加入长度,如convert(char(100),A字段),这种模式才可以通过规则验 证,否则,效率控制规则会认为该代码不合法,需要继续修改。

输出预判规则是在执行时,判断语句句型及其使用的处理逻辑,由于有 些处理复杂度高,如果结果集过大,会导致运算效率极低,故而在实际执行 代码前,系统会通过count的方式预判代码执行的结果集大小,超出设定结 果集大小的则不予以正式执行。如“关联运算功能——10000”规则,表示如 果语句使用的是关联运算功能,则其结果集不能超过10000条。不同的语句 或处理方式,结果集大小限制不同。效率控制规则可以通过实验及相关经验 进行增补和完善。

当形式化代码符合语法规则以及各种效率控制规则时,则可以顺利保存 并执行,否则,提示错误,需要对代码进行修改,可以重新进入接收用户输 入的形式化代码步骤。

本发明通过建立输入过滤规则、输入过程控制规则等效率控制规则,对 用户输入的形式化代码进行效率控制,通过输出预判规则对生成代码的执行 结果进行预判,避免不能容忍的执行操作发送,实现了从形式化代码生成周 期的各个阶段,控制代码的效率,保证系统运行环境稳定,提高安全性,并 且可以根据用户需要,接收相关效率控制规则,补充至效率控制规则库中, 增加了灵活性。

基于上述实施例,本发明形式化代码生成中的效率控制方法还可以接收 预先设定的分步式输入代码规则;

则接收用户输入的形式化代码,可以包括:接收形式化代码中需要使用 的输入变量;根据分步式输入代码规则以及每项形式化代码的句型分步通过 直接文本录入模式、选择模式、枚举模式、给定定义域输入模式、对象重命 名模式中的一种或多种接收用户输入的形式化代码。

将分步式输入代码规则可以将形式化代码中的句型进行分类,对于不同 的句型,可以按照不同的步骤进行输入,直观的帮助用户以简洁的方式,按 照必要的步骤逐步完成满足特定句型的形式化代码输入。具体可以通过直接 文本录入模式、选择模式、枚举模式、给定定义域输入模式、对象重命名模 式等分步骤按照句型特点组成形式化代码。根据分步式输入形式化代码时, 还可以在每一子步骤输入完成后,对该步骤输入的形式化代码进行语法校验, 帮助用户及早发现问题。

通过分步式的方法,判断用户的所需产生代码句型,通过列表选择、枚 举、给定定义域输入、对象重命名等模式,逐步接收用户输入的形式化代码, 可以快速高效的生成形式化代码集合,降低了对用户专业技术水平的要求, 进一步减少了由于技术能力欠缺带来的生产安全相关的隐患。

在保存形式化代码之后,接收到执行指令之前,本发明形式化代码生成 中的效率控制方法还可以包括:

定义矢量变量及矢量变量的属性;判断形式化代码中是否包括矢量变量;

根据矢量变量的属性,将包括矢量变量的一项形式化代码替换为一组形 式化代码并保存。

通过矢量变量定制,使得代码可以批量生成,减少由于用户手工生成结 构一致的句法时由于重复劳动造成疏漏的可能性,提升生产效率。

参见图2所示,在应用矢量变量时,首先定义一个矢量变量,之后定义 其相关属性,如起始值、步长、变量类型等,矢量变量创建完成。在形式化 代码保存后,通过解析代码判断形式化代码中是否包括矢量变量,即将代码 中的特定片段替换成为矢量变量,矢量变量在代码运行前解析可以将一条代 码按照定义变为一组代码,并可以指定这组结构相似的语句执行的结果是否 合并。在执行完成后,可以调整矢量变量的值,再次执行后,会获得新的参 数值下的结果集,减轻代码编写者重复劳动,降低出错率。

矢量变量具体如下:

矢量变量举例说明如下:

定义一个矢量变量M,起始值为A,终止值为E,步长为1,变量类型为 字符型。先有一段代码应用了此矢量变量,代码形如“查询数据表A条件数 据表A.符号字段=M”,在运算过程中,会对句型中是否是用了矢量变量进 行解析,如果有则按照矢量变量的定义,将原代码转化为一组代码,即如下 几条代码语句:

“查询数据表A条件数据表A.符号字段=A

查询数据表A条件数据表A.符号字段=B

查询数据表A条件数据表A.符号字段=C

查询数据表A条件数据表A.符号字段=D

查询数据表A条件数据表A.符号字段=E”。

如果不希望得到这种结果,可以仅仅调整矢量变量的定义,如将起始值 调为B,终止值调为F,步长调为2,则该代码会在运算时转化为以下一组代 码:

“查询数据表A条件数据表A.符号字段=B

查询数据表A条件数据表A.符号字段=D

查询数据表A条件数据表A.符号字段=F”。

在形式化代码生成后,可以对代码进行封装、共享。可以通过授权的方 式将代码的安全分级别进行划分,划分的依据是代码编写者对代码权限的开 放力度。通过这种方式一方面可以将代码分不同程度的开放给使用者,从而 保证了代码编写者对代码的所有权,同时对保证代码的安全性和代码运算性 能方面也有一定的提高。另一方面对于代码的使用者来说只需要关心特定的 语段,从而降低了代码使用的难度,便于代码的推广和应用。将用户编写的 封装后的代码集合提交后,再从代码集的正确性、内部逻辑合理性、安全性 方面进行检查,并将合格的代码集添加到代码共享库中并为其设置相应的应 用场景及使用的条件和参数。通过代码集共享,极大提高代码的效用。

基于上述实施例,参见图3所示,从逻辑组件的角度,再对本发明形式 化代码生成中的效率控制方法进行简单介绍。本方法可以由语法解析逻辑、 代码生成逻辑、效率控制逻辑组成。

语法解析逻辑可以分为以下组件:

(1)文法解析组件

文法解析组件可以通过LL(k)方式对代码进行解析,解析用户输入的 代码是否符合代码语法规范。对于不同的代码领域,如JAVA语言、C语言、 SQL语言等需要不同的代码语法规则配置。一个定义完全的文法解析组件可 以实现一个特定代码集的文法校验。

(2)文法中变量录入组件

通过文法中变量录入组件可以录入代码中的各种变量,在某些代码中, 变量就是简单的字符串,有的则是由层次化的结构体作为变量。

代码生成逻辑可以分为以下组件:

(1)句型分步组件

通过句型分步组件可以将代码中的句型进行分类,对于不同的句型,可 以提供不同的步骤进行输入,直观的帮助用户,以最简洁的方式,按照必要 的步骤逐步完成满足特定句型的形式化代码生成。

(2)句型选择组件

通过句型选择组件可以帮助用户快速选择希望录入的句型,句型选定后, 可以按照特定句型的步骤提示性的帮助用户快速完成代码生成。

(3)分步式代码生成的组件

分步式的代码生成组件是用户可以通过前台可视化的界面进行操作,根 据变量录入组件录入的变量以及关键字、句型等,生成形式化代码的核心组 件。具体是通过直接文本录入模式、选择模式、枚举模式、给定定义域输入 模式、对象重命名等模式分步骤的按照句型的特点组成形式化代码。

(4)语法校验组件

语法校验组件,实现了对用户输入的形式化代码的合法性校验,若以分 步的方式接收输入的代码,在每一个步骤完成后都可以进行对输入内容的语 法校验,进一步可以在每一步后提示用户输入是否有错误,如何进行修正; 完成最后一步后会对整个语句进行完整的语法校验,保证整个句法的完整。

(5)矢量参数化组件

矢量参数化组件是在编写形式化代码的时候设定句型中的某些变量为全 局变量或矢量变量,并按照参数命名规则进行参数化。通过在形式化脚本中 引入参数,使得编写的句子得以复用,通过改变矢量参数值实现同一形式化 代码在多次执行后获得不同条件查询结果,提高代码的使用效用,从而极大 的提高了代码分析效率。

(6)代码封装组件

代码封装组件是将代码作者编写的代码通过授权的方式将代码的安全分 级别进行划分,划分的依据是代码编写者对代码权限的开放力度。通过这种 方式一方面可以将代码分不同程度的开放给使用者,从而保证了代码编写者 对代码的所有权,同时对保证代码的安全性和代码运算性能方面也有一定的 提高。另一方面对于代码的使用者来说只需要关心特定的语段,从而降低了 代码使用的难度,便于代码的推广和应用。

(7)代码共享组件

代码共享组件是将用户编写的封装后的代码集合提交给审核员,审核员 从代码集的正确性、内部逻辑合理性、安全性方面进行检查,并将合格的代 码集添加到代码共享库中并为其设置相应的应用场景及使用的条件和参数。 通过代码集共享组件,极大提高代码的效用。

效率控制逻辑可以分为以下组件:

(1)输入过滤组件

部分形式化代码,如SQL语言或者某些文件处理代码,需要处理特定的 对象如数据表或文件,通过配置输入过滤组件参数,控制输入数据的规模, 使形式化代码只处理必要的内容,保证了处理内容的安全,从一定程度提升 了运算的效率。

(2)输入过程控制组件

根据形式化代码的特点,以规则库的模式进行配置,接收相关的输入过 程控制规则,在代码的输入过程中对代码进行约束,以控制一些虽然符合代 码的语法语义规范但确会对运算分析带来重大效率影响的不良代码产生。输 入过程控制组件可以分为几种如匹配关联类规则,限制类规则等。

(3)输出预判组件

部分形式化代码是进行运算分析的,由于语法较为灵活,用户可以自定 义相关的运算关系,很多时候由于用户水平问题,可能会出现运算结果集过 大的情况,通过加入输出预判规则,限制用户的输出规模,可以保障运算环 境的整体性能。

参见图4所示,本发明提供一种应用了形式化代码生成中的效率控制方 法的具体实施例。该系统以数据库规范语言SQL形式化代码为基础,可以实 现形式化代码编写、代码校验与封装、代码成果共享的全过程,可以极大提 升了人员的工作效率。

数据输入单元,其中业务数据作为SQL代码中变量录入组件中的变量, 以树形的方式保存各个业务账表,账表树可以分为6个层级,账表类型、账 表来源系统、账表来源子系统、账表所属年份、账表保存方式、账表实例。 用户通过这种结构化的变量(包含账表信息及其字段信息)进行形式化代码 生成,输入业务账表作为形式化代码中需要使用的输入变量,即进行变量表 录入。

数据过滤单元,实现效率控制逻辑中的输入过滤。可以实现两个层级的 数据过滤。首先是进行人员过滤,对于普通类数据,只要数据被加入到项目 中,项目中的人员均可以查看;对于保密类数据,需要逐个分配项目中的人 员与保密数据的对应关系,以保证数据安全。其次,对于项目中的数据,需 要按照时间维度和机构维度等多维度进行输入过滤,这样可以将原数据的范 围进行缩小,不但可以控制数据安全,更可以减少代码运算数据量,提升运 算速度,保证系统安全。

分布式代码编写单元,实现文法解析、句型分步、句型选择、分步式代 码生成等组件内容。辅助用户以类自然语言的方式编写形式化代码组成的语 句集,后面的语句可以利用之前的语句产生的结果集。用户通过在可视互动 界面通过直接文本录入模式、选择模式、枚举模式、给定定义域输入模式、 对象重命名等模式录入形式化代码以完成语句,系统通过SQL文法解析组件 完成代码识别及校验,最终以XML的格式固化在数据库中。

代码校验单元,在SQL文法解析组件的支持下支持用户将方法编写单元 中编写的审计代码语句进行校验,符合语法规则的句子可以实现类自然语言 到形式化代码的转化。同时辅以输入过程控制组件控制代码效率,如匹配关 联规则中多表关联笛卡尔积校验、限制类规则中特殊函数使用限定校验等, 保证了用户编写的代码的完整,并避免出现明显的执行低效语句,如果出现 语法错误,在编写的每个步骤都会有相应提示,保证用户直观的进行错误分 析及修改。

代码参数化单元,本单元实现了形式化代码矢量参数化组件。在编写好 了审计方法的代码语句后,可以通过全局变量或者矢量变量进行参数化,实 现自动替换功能,用户只需修改变量的值,即可按照新的参数获得代码执行 结果。全局变量可以在每次执行前进行设定,执行同一方法获得不同结果; 矢量变量应用在循环语句中,通过设置表变量或条件变量,可以实现一个代 码语句变成多个结构一致、关键变量进行循环替换的一组代码语句,可以帮 助用户分析如12个月、4个季度或某变量自增得到的一组数据情况。用户可 以便捷的更改矢量值,达到批量替换访问数据的功能,同时降低差错率。

代码封装单元,可以保护代码编写人的权益,同时也可以避免水平较低 的用户修改形式化代码中的关键环节导致方法执行过程中出现逻辑错误、低 效查询等等,代码的原作者对代码中的一些特定位置进行封装,系统实现4 个级别的封装,查询字段整体可修改、查询条件整体可修改、查询条件中关 系式关系符号后的值可修改、查询访问的账表可修改,通过4个级别的封装, 可以使应用代码的用户不需要知道代码的细节,只需要了解相应接口,修改 相关的条件值即可已完成代码运算,降低了代码执行的门槛,同时提升了系 统的稳定性,约束了结果集大小,最大程度防止由于低效代码带来的数据库 资源过量占用。

代码共享单元,在用户编写完成方法并设置好封装级别后,可以选择通 过此单元将方法代码提交给管理员审核,管理员对方法的代码进行分析,合 格的方法加入到方法共享库,并给该方法设定一个使用场景,方便各类型用 户使用合适的方法。开展审计项目时,用户需要从共享方法代码库中选取所 需要的方法,将代码复制到本地,按照封装条件,修改相应的参数或者条件 设置,即可进行执行。

方法代码执行单元,根据形式化代码,语法校验与效率控制规则均通过 后保存生成可执行的形式化SQL代码,并会匹配授权到项目的业务数据进行 执行,保证执行的数据安全性与准确性。在代码执行完成后,可以通过界面 直接查看保留的结果表结构及数据,进行结果下载等操作。

语法解析相关组件、效率控制相关组件贯穿于形式化代码生成的过程中, 实现形式化代码生成中的效率控制。这样,可以通过效率控制相关组件利用 输入过滤规则、输入过程控制规则,对用户输入的形式化代码进行效率控制, 通过输出预判规则对生成代码的执行结果进行预判,避免不能容忍的执行操 作发送,实现了从形式化代码生成周期的各个阶段,控制代码的效率,保证 系统运行环境稳定,提高安全性,并且可以根据用户需要,接收相关效率控 制规则,补充至效率控制规则库中,增加了灵活性;其次,通过矢量变量定 制,使得代码可以批量生成,减少由于用户手工生成结构一致的句法时由于 重复劳动造成疏漏的可能性,提升生产效率;最后,本发明可以判断用户的 所需产生代码句型,以分步式的框架,通过列表选择、枚举、给定定义域输 入、对象重命名等模式,逐步接收用户输入的形式化代码,快速高效的生成 形式化代码集合,降低了对用户专业技术水平的要求,并减少了由于技术能 力欠缺带来的生产安全相关的隐患。

相应的,本发明还提供一种形式化代码生成中的效率控制装置,参见 图5所示,该装置包括:

第一接收模块201,用于接收效率控制规则,效率控制规则包括输入过 滤规则、输入过程控制规则以及输出预判规则;

第二接收模块202,用于接收用户输入的形式化代码;

解析模块203,用于对用户输入的形式化代码进行解析,生成解析结果;

第一判断模块204,用于判断形式化代码是否符合输入过滤规则或输入 过程控制规则;

校验模块205,用于根据解析结果判断形式化代码是否通过语法校验;

代码生成模块206,用于如果形式化代码符合输入过滤规则或输入过程 控制规则,并且形式化代码通过语法校验,则保存形式化代码;

第二判断模块207,用于在保存形式化代码后,当接收到执行指令时, 计算形式化代码的执行结果集,并判断执行结果集是否符合输出预判规则;

执行模块208,用于如果执行结果集符合输出预判规则,则继续执行形 式化代码;

提示错误模块209,用于如果形式化代码不符合输入过滤规则或输入过 程控制规则,或者形式化代码没有通过语法校验,则提示错误;如果执行结 果集不符合输出预判规则,则提示错误。

其中,第二接收模块可以包括:

变量接收子模块,用于接收形式化代码中需要使用的输入变量;

代码接收子模块,用于通过直接文本录入模式、选择模式、枚举模式、 给定定义域输入模式、对象重命名模式中的一种或多种接收用户输入的形式 化代码。

具体的,输入过滤规则可以包括输入数据过滤规则以及特殊句型及其输 入数据过滤规则;输入过程控制规则可以包括关联规则以及特殊句型结构规 则;解析结果中还包括每项形式化代码的句型。则第一判断模块可以包括:

第一判断子模块,用于判断接收的形式化代码中需要使用的输入变量是 否符合输入数据过滤规则;

第二判断子模块,用于逐项判断形式化代码的句型是否为输入过滤规则 中的特殊句型,如果是,则判断该项形式化代码的输入变量是否符合特殊句 型及其输入数据过滤规则;

第三判断子模块,用于判断形式化代码是否符合关联规则;

第四判断子模块,用于逐项判断形式化代码的句型是否为输入过程控制 规则中的特殊句型,如果是,则判断该项形式化代码是否符合特殊句型结构 规则。

另外,解析结果中还可以包括每项形式化代码的句型,则形式化代码生 成中的效率控制装置还可以包括:

第三接收模块,用于接收预先设定的分步式输入代码规则;

第二接收模块则可以包括:

变量接收子模块,用于接收形式化代码中需要使用的输入变量;

代码接收子模块,用于根据分步式输入代码规则以及每项形式化代码的 句型分步通过直接文本录入模式、选择模式、枚举模式、给定定义域输入模 式、对象重命名模式中的一种或多种接收用户输入的形式化代码。

另外,形式化代码生成中的效率控制装置还包括:

矢量定义模块,用于定义矢量变量及矢量变量的属性;

第三判断模块,用于判断形式化代码中是否包括矢量变量;

矢量应用模块,用于根据矢量变量的属性,将包括矢量变量的一项形式 化代码替换为一组形式化代码并保存。

这样,本发明通过建立输入过滤规则、输入过程控制规则等效率控制规 则,对用户输入的形式化代码进行效率控制,通过输出预判规则对生成代码 的执行结果进行预判,避免不能容忍的执行操作发送,实现了从形式化代码 生成周期的各个阶段,控制代码的效率,保证系统运行环境稳定,提高安全 性,并且可以根据用户需要,接收相关效率控制规则,补充至效率控制规则 库中,增加了灵活性;其次,通过矢量变量定制,使得代码可以批量生成, 减少由于用户手工生成结构一致的句法时由于重复劳动造成疏漏的可能性, 提升生产效率;最后,本发明可以判断用户的所需产生代码句型,以分步式 的框架,通过列表选择、枚举、给定定义域输入、对象重命名等模式,逐步 接收用户输入的形式化代码,快速高效的生成形式化代码集合,降低了对用 户专业技术水平的要求,并减少了由于技术能力欠缺带来的生产安全相关的 隐患。

需要说明的是,本说明书中各个实施例采用递进的方式描述,每个实施 例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分 互相参见即可。对于实施例公开的系统或装置而言,由于其与实施例公开的 方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用 来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗 示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包 括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括 一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没 有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所 固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要 素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的 相同要素。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、 处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存 储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编 程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意 其它形式的存储介质中。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用 本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易 见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下, 在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例, 而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号