多数据类型参数化定义及程序引用处理方法和系统
技术领域
本发明涉及软件开发
技术领域
,特别是涉及数据获取、表示、参数化的程序实现方法。背景技术
程序从功能上讲,核心实质上是对数据进行加工处理,因为程序中的数据比较复杂,有不同来源,有不同类型,传统上软件开发对这些数据没有统一的数据描述,需要用到什么数据都写代码来实现获取,然后进行加工处理,这种方式数据获取的基本功能重复代码很多,程序代码量多,造成程序复杂。
在软件设计中,将一些常用数值,在程序外通过配置文件进行参数化定义,这种方式能提高软件设计和使用灵活性。传统的的参数定义方法,只涉及一些简单固定值参数。非参数化程序在需求变化时,灵活性差,要修改程序,需经过测试,停止原程序,替换原程序,重新运行才能完成修改流程,花费较多人力和时间。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种多数据类型参数化定义及程序引用处理方法,实现一种程序中简单易用的数据表示和取值方法,简少了数据获取的程序代码;传统参数文件只能针对一些简单固定值进行参数设计,本发明使得参数文件中可以使用所需要的各种数据,扩大数据参数化范围,通过参数文件中数据修改,完成程序所需的功能变化修改,解决了非参数化程序在需求变化时,灵活性差,要修改程序,需经过测试,停止原程序,替换原程序,重新运行才能完成修改流程,花费较多人力和时间的问题,为了达到上述目的,本发明所采用的具体技术方案如下:
一种多数据类型参数化定义及程序引用处理方法,具体包括以下步骤:
S1,对程序中的各种数据按一种数据类型+名称的统一格式来定义,统一格式数据的表示方式为数据标签和/或格式字段;
S2,按需要对统一格式定义的各类数据进行参数化定义,得到包含数据标签的文本参数和/或包含格式字段的结构化参数的参数文件;或者在程序中将统一格式定义的各类数据赋值给字符串变量;
S3,运行程序,读取参数文件中的参数并对其进行数据处理,或者对字符串变量进行数据处理,获取所需要实际数据,然后按需要进行后续处理。
优选的,步骤S1中数据标签用于在文本中对统一格式数据的表示,格式字段用于在数据库、Json、XML或者其他格式化数据中对统一格式数据的表示,根据需要采用其中的一种或多种,按字段数量分为单字段、双字段、三字段,根据要求采用其中的一种或多种,双字段分别为数据类别和名称,三字段分别为数据类型,数据类别和名称,单字段中使用数据标签对统一格式数据的表示;
所述数据标签采用一维标签、二维标签、三维标签中的一种或多种,一维标签用于表示程序中常用的数值,包含起始符、标志符、名称、结束符;二维标签按数据类别+名称来表示数据,包含起始符、数据类别、名称、结束符;三维标签按数据类型+数据类别+名称来表示数据,包含起始符、数据类型、数据类别、名称、结束符。
优选的,步骤S3具体包括以下步骤:
运行程序,利用第一函数或过程将字符串变量里面的数据标签与该数据标签对应的实际数值进行替换,得到所需要数值,按需求进行后续处理;
第一函数或过程,其功能是对传入字符串参数中的的数据标签进行扫描,获取实际的数据,将实际数据替换数据标签,最后返回结果数据。
优选的,步骤S3具体包括以下步骤:
运行程序,从参数文件中读取文本参数,利用第一函数或过程将文本参数里面的数据标签进行数值替换,得到所需数据,按需求进行后续处理。
优选的,步骤S3具体包括以下步骤:
运行程序,从参数文件中读取结构化参数,根据结构化参数类型,对于单字段参数调用第一函数或过程将单字段里面的数据标签进行数值替换;对于双字段调用第二函数获取进行实际数据;对于三字段调用第二函数获取进行实际数据,然后将实际数据从字符串到指定数据类型的转换;按需求进行后续处理;
第二函数功能是根据数据类别和名称,相应的获取实际数据值,返回该数据值。
优选的,步骤S3具体包括以下步骤:
运行程序,从参数文件中读取SQL语句,利用第一函数或过程将SQL语句中的数据标签进行数值替换,执行实际数值的SQL语句。
优选的,数据类别为软件中各种数据来源,根据各个开发语言不同包含且不限于常量、自定义变量、界面录入的数据、程序调用参数、文本文件、SQL数据、Json、XML。
一种多数据类型参数化定义及程序引用处理系统,包括:
数据定义单元,对程序中的各种数据及其表现形式进行统一格式定义,将各类数据的表现方式统一定义为数据标签和/或格式字段;
参数化或赋值单元,按需要对统一格式定义的各类数据进行参数化定义,得到包含数据标签的文本参数和/或包含格式字段的结构化参数的参数文件;或者将统一格式定义的各类数据赋值给字符串变量;
数据处理单元,读取参数文件中的参数并对其进行数据处理,或者对字符串变量进行数据处理,获取所需要实际数据,然后按需要进行后续处理。
优选的,数据标签用于在文本中对统一格式数据的表示,格式字段用于在数据库、Json、XML或者其他格式化数据中对统一格式数据的表示,根据需要采用其中的一种或多种,按字段数量分为单字段、双字段、三字段,根据要求采用其中的一种或多种,双字段分别为数据类别和名称,三字段分别为数据类型,数据类别和名称,单字段中使用数据标签对统一格式数据的表示;
所述数据标签采用一维标签、二维标签、三维标签中的一种或多种,一维标签用于表示程序中常用的数值,包含起始符、标志符、名称、结束符;二维标签按数据类别+名称来表示数据,包含起始符、数据类别、名称、结束符;三维标签用于按数据类型+数据类别+名称来表示数据,包含起始符、数据类型、数据类别、名称、结束符。
本发明的有益效果在于:实现一种程序中简单易用的数据表示和取值方法,简少了数据获取的程序代码;传统参数文件只能针对一些简单固定值进行参数设计,本发明使得参数中可以使用所需要的各种数据,解决了非参数化程序在需求变化时,灵活性差,要修改程序,需经过测试,停止原程序,替换原程序,重新运行才能完成修改流程,花费较多人力和时间的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一种多数据类型参数化定义及程序引用处理方法的流程图;
图2是统一格式数据的软件数据总线的原理框图;
图3是第一函数的流程图;
图4是第二函数的流程图;
图5是第三函数的流程图;
图6是现有技术与本发明程序修改流程图对比。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的其他实施例,都属于本发明保护的范围。
如图1所示,本发明提出了一种多数据类型参数化定义及程序引用处理方法,具体包括以下步骤:
S1,对程序中的各种数据按一种数据类型+名称的统一格式来定义,统一格式数据的表示方式为数据标签和/或格式字段;
如图2和图4所示,本发明提出一种软件数据总线概念,类似于硬件中通过数据总线获取不同设备间数据,把组成软件中的各种数据按数据类别+名称的统一格式进行描述,可以通过软件数据总线来获取程序中的各种实际数据。
数据类别:为软件中的各种不同数据源,根据各个开发语言不同包含且不限于常量、自定义变量、界面录入的数据、程序调用参数、文本文件、SQL数据、Json、XML。
名称:是该数据类别中的具体对象名称。
步骤S1中数据标签用于在文本中对统一格式数据的表示,格式字段用于在数据库、Json、XML或者其他格式化数据中对统一格式数据的表示,根据需要采用其中的一种或多种,按字段数量分为单字段、双字段、三字段,根据要求采用其中的一种或多种,双字段分别为数据类别和名称,三字段分别为数据类型,数据类别和名称,单字段中使用数据标签对统一格式数据的表示;
所述数据标签采用一维标签、二维标签、三维标签中的一种或多种,二维标签按数据类别+名称来表示数据,包含起始符、数据类别、名称、结束符;三维标签按数据类型+数据类别+名称来表示数据,包含起始符、数据类型、数据类别、名称、结束符;一维标签是二维标签的简化方式,用于表示程序中常用的数据,包含起始符、名称、结束符;所述起始符包括一个或多个字符。
一维标签和二维标签得到的是字符串,在软件中,字符串是可以和其它类型数据进行互相转换;三维标签是用于具体指明数据类型的场合。
以下对数据标签进行举例说明:
一维标签:
程序中,有一些常用的数值,对此提供一种简单标签方式来表示。
格式:起始符+名称+结束符
在程序内部,针对每个名称,由程序在内部预先确定。相应返回对应的值。
例:[#用户名][#用户ID][#当前日期][#当前时间]
这其中起始符是:[#
二维标签:
核心:数据类别+名称,返回字符串。
二维标签是采用数据总线的标准格式。
一种格式:起始符+数据类别+分隔字符+名称+结束符。
其中,数据类别可以是字符,或者是字符串,如果是字符串,那分隔字符必须存在。如果是特殊字符,分隔字符可以为空。
例:[$录入.MyName]表示界面录入控件MyName的输入值,起始符是:[$
在名称部份,对于一些特别的数据类型,例如Json数据,其中包含多个字段数据,可以采用扩展形式,采用”名称.字段”,在扩展形式,程序内部相对字段进行处理,获取此字段值。
三维标签:是在二维标签基础上,加上了数据类型,用于需要指定数据类型的场合。
核心:数据类型+数据类别+名称
一种样式:起始符+数据类型+数据类别+分隔字符+名称+结束符。
例:[$(int)录入.score]表示界面录入控件score的输入值,按整型。
在二维标签的基础上,加上数据类型和类型分隔符。类型分隔符与二维标签中的分隔符不同。
其它的样式一个举例:[$数据类型/数据类别+名称]
程序对三维标签,按二维标签取得字符串类型的数值后,再将数值按数据类型进行类型转换处理。
S2,按需要对统一格式定义的各类数据进行参数化定义,得到包含数据标签的文本参数和/或包含格式字段的结构化参数的参数文件;或者在程序中将统一格式定义的各类数据赋值给字符串变量;
S3,运行程序,读取参数文件中的参数并对其进行数据处理,或者对字符串变量进行数据处理,获取所需要实际数据,然后按需要进行后续处理。
优选的,步骤S3具体包括以下步骤:
运行程序,利用第一函数或过程将字符串变量里面的数据标签与该数据标签对应的实际数值进行替换,得到所需要数值,按需求进行后续处理。
第一函数或过程,其功能是对传入字符串参数中的的数据标签进行扫描,获取实际的数据,将实际数据替换数据标签,最后返回结果数据。
优选的,步骤S3具体包括以下步骤:
运行程序,从参数文件中读取文本参数,利用第一函数或过程将文本参数里面的数据标签进行数值替换,得到所需数据,按需求进行后续处理。
优选的,步骤S3具体包括以下步骤:
运行程序,从参数文件中读取结构化参数,根据结构化参数类型,对于单字段参数调用第一函数或过程将单字段里面的数据标签进行数值替换;对于双字段调用第二函数获取进行实际数据;对于三字段调用第二函数获取进行实际数据,然后将实际数据从字符串到指定数据类型的转换;按需求进行后续处理;
第二函数功能是根据数据类别和名称,相应的获取实际数据值,返回该数据值。
优选的,步骤S3具体包括以下步骤:
运行程序,从参数文件中读取SQL语句,利用第一函数或过程将SQL语句中的数据标签进行数值替换,执行实际数值的SQL语句。
如图3所示,第一函数或过程的程序流程如下:
(1)对输入参数A,扫描数据标签起始符’[$’
(2)扫描数据标签结束符’]’,结束位置为B
(3)根据此起始符和结束符位置,获取此数据标签C和去掉起始符和结束符的中间字符串
(4)从中间字符串,以分隔字符,分别获取到数据类别D和名称E
(5)调用第二函数(D,E)获得数值F
(6)将A中此数据标签C替抱成F
(7)计算下数值F长度减去数据标签C的长度,其值为G
(8)从位置B+G开始执行步1到6,直到字符串结束。
//
(9)下面开始处理一维标签,扫描位置为1.
(10)开始扫描A中数据标签起始符[#
(11)扫描数据标签结束符’]’。结束位置为B2
(12)获取此数据标签C2和数据标签中的名称E2
(13)调用第三函数(E2)获得值F2.
(14)将此数据标签C2替换成F2
(15.)分别计算下F2长度减去数据标签C2的长度,差值为G2
(16)从位置B2+G2开始继续扫描,执行10-14,直到字符串结束。
第二函数的程序流程如下(图4):
根据类别和名称获取数值:第二函数(类别,名称)
(1)获取类别,名称Name
(2)根据类别和名称,分别从相应的数据源中获取数值。
如果类别是输入,则从名称为Name的控件中获取数值。
如果类别是URL,则从URL中获取名称为Name的URL参数值。
如果类别是自定义变量,则获取名称为Name的自定义变量数值。
如果类别是文本文件,则读取文件名为Name的文本文件内容。
.....
(3)返回结果,类型为字符串。
建立第三函数,获取一维标签数值函数:第三函数(名称)
流程如下(图5):
采用switch(名称){
Case“用户名”:结果=当前用户名变量值。
break;
Case“当前日期”:结果=系统日期;
break;
Case“当前时间”:结果=当前时间;
Break;
.....
}
以下对本发明的实际应用案例进行举例说明:
web网页,由用户登录后输入真实姓名,然后显示受理页面。
项目页面由2个页面组成,页面A包含一个名称为MyName的输入控件和一个提交按钮。页面B显示受理信息。每个页面是一个程序(页面A程序是a.aspx,页面B程序是b.aspx)。
程序A:查询按钮,执行的指令是:Response.Redrict(查询页面参数);查询页面参数定义如下:
参数文件1定义:b.aspx?name=[$输入.MyName]
程序A按钮动作,读入参数文件1中的定义,到查询页面参数,执行此查询按钮动作,以后这个调用程序B的方式有变化,只需要修改参数文件1就可以,不需要对程序A进行修改。
程序B,显示受理信息,受理信息显示内容参数文件中定义如下:
参数文件2定义:
[$URL.name],欢迎您。
你的申请已受理。
帐号:[#用户名]申请时间:[#当前时间]
程序B对于显示内容,只需要从参数文件中将参数文件2定义读入变量S,采用第一函数将S中的数据标签替换成实际数值,然后将S显示即完成所需功能。其中数据标签内容,不需要用程序对其中每一个变量内容进行赋值。里面要增加显示内容,都只要修改参数定义,不需要修改程序。
图5是第三函数流程图,图6a为现有技术中程序修改的流程图,图6b为本发明的程序修改的流程。本发明解决了非参数化程序在需求变化时,灵活性差,要修改程序,需经过测试,停止原程序,替换原程序,重新运行才能完成修改流程,花费较多人力和时间的问题。
本发明还提出了一种多数据类型参数化定义及程序引用处理系统,包括:
数据定义单元,对程序中的各种数据及其表现形式进行统一格式定义,将各类数据的表现方式统一定义为数据标签和/或格式字段;
参数化或赋值单元,按需要对统一格式定义的各类数据进行参数化定义,得到包含数据标签的文本参数和/或包含格式字段的结构化参数的参数文件;或者将统一格式定义的各类数据赋值给字符串变量;
数据处理单元,读取参数文件中的参数并对其进行数据处理,或者对字符串变量进行数据处理,获取所需要实际数据,然后按需要进行后续处理。
优选的,数据标签用于在文本中对统一格式数据的表示,格式字段用于在数据库、Json、XML或者其他格式化数据中对统一格式数据的表示,根据需要采用其中的一种或多种,按字段数量分为单字段、双字段、三字段,根据要求采用其中的一种或多种,双字段分别为数据类别和名称,三字段分别为数据类型,数据类别和名称,单字段中使用数据标签对统一格式数据的表示;所述数据标签采用一维标签、二维标签、三维标签中的一种或多种,二维标签按数据类别+名称来表示数据,包含起始符、数据类别、名称、结束符;三维标签按数据类型+数据类别+名称来表示数据,包含起始符、数据类型、数据类别、名称、结束符;一维标签是二维标签的简化方式,用于表示程序中常用的数据,包含起始符、名称、结束符;所述起始符包括一个或多个字符。
本发明的优点在于:
1、通过程序数据总线概念,建立一种数据类型+名称的对数据简洁明确的数据统一格式及相应的表示和取值方法,简少了数据获取的程序代码。
2、数据标签和格式字段的数据表达方式,实现程序外的数据参数化,大大扩大了参数化数据范围,扩大了程序设计的灵活性。
3、参数化设计,程序功能更新,通过参数调整可以实现的,不再需要进行程序修改、编译。
以上述依据本发明的理想实施例为启示,通过上述的说明内容,本领域技术人员完全可以在不偏离本发明技术思想的范围内,进行多样的变更以及修改。本发明的技术性范围并不局限于说明书上的内容,必须要根据权利要求书范围来确定其技术性范围。