本发明涉及数据处理技术领域,特别是涉及一种生成配置文件的方法和装置。
背景技术:
在一些计算机系统中,常常需要采用配置文件来配置某些数据表的表项。例如,在使用开放交易控制平台(英文:Open Transaction Control Platform,简称:OTCP)的应用系统中,需要使用COPYBOOK文件来配置共同交易格式表(英文:Common Transaction Format,简称:CTF)。具体地,CTF用于记录交易信息,而每个交易会涉及一个或多个输入数据项的信息,因此,在生成COPYBOOK文件时,需要将CTF表项定义成输入数据项,以使得COPYBOOK文件中记录有每个CTF表项所表示的输入数据项。这样,所生成的COPYBOOK文件就可以用于配置CTF。
需要说明的是,在应用系统中,每一个CTF表项都会占用一定的内存区域。为了减少内存的占用情况,对于同一数据类型的多个输入数据项,若这些数据输入项分别属于各不相同的交易,则这些数据输入项可以共享同一个CTF表项,也即,同一个CTF表项可以针对多个不同的交易被重定义成多个输入数据项,这样多个输入数据项可以共享同一内存区域,内存的占用得以减少。
在现有技术中,为了尽量减少CTF表项对内存的占用,需要人工查找出哪些输入数据项可以被重定义成同一个CTF表项并手动编写到COPYBOOK文件中。但是,通常CTF需要记录大量交易的信息,大量交易会涉及大量的输入数据项。因此,通过人工查找和手动编写的方式生成具有重定义CTF表项的COPYBOOK文件,不仅人工的工作量规模巨大,而且重定义CTF表项的准确性也难以保证。
技术实现要素:
本申请实施例所要解决的技术问题是,提供一种生成配置文件的方法和装置,以使得可被重定义到同一个CTF表项的输入数据项能够被自动识别出来,从而既简化了人工手动的工作也提高了重定义CTF表项的准确性。
第一方面,为解决上述技术问题,本发明提供了一种生成配置文件的方法,包括:
响应于COPYBOOK文件的生成指令,获取CTF涉及的所有交易的输入数据项,作为待定义输入数据项;所述COPYBOOK用于配置所述CTF;
从所述待定义输入数据项中选取一个未定义过的输入数据项,作为当前输入数据项;
若所述当前输入数据项满足第一预定条件,对当前CTF表项进行重定义,以使得所述当前CTF表项的定义中包含所述当前输入数据项,返回所述从所述待定义输入数据项中选取一个未定义过的输入数据项;
若所述当前输入数据项满足第二预定条件,在所述COPYBOOK文件中创建一个CTF表项重新作为当前CTF表项,对所述当前CTF表项进行定义以使得所述当前CTF表项的定义中包含所述当前输入数据项,返回所述从所述待定义输入数据项中选取一个未定义过的输入数据项;
响应于所述待定义输入数据项已全部定义成已创建的CTF表项,基于已创建的CTF表项的定义生成所述COPYBOOK文件;
其中,所述第一预定条件为:所述当前输入数据项的数据类型与当前重定义输入数据项的数据类型相同,所述当前输入数据项的标识(名称)与任意一个所述当前重定义输入数据项的标识都不相同,且,所述当前输入数据项与任意一个所述当前重定义输入数据项都不属于同一交易(编号);所述当前重定义输入数据项是在所述当前CTF表项的定义中已经存在的输入数据项;
所述第二预定条件包括:所述当前输入数据项不满足所述第一预定条件且所述当前输入数据项的标识不属于任意一个已定义过的输入数据项的标识。
可选的,所述响应于COPYBOOK文件的生成指令,获取CTF涉及的所有交易的输入数据项,作为待定义输入数据项,包括:
响应于所述生成指令,获取所述CTF的标识;
在应用输入数据项表中查找与所述CTF的标识对应的输入数据项,作为所述待定义输入数据项;
其中,在所述应用输入数据项表中记录有CTF、交易、输入数据项之间的映射关系,所述映射关系包括CTF的标识、交易标识、输入数据项的标识和输入数据项的数据类型。
可选的,还包括:
判断在所述应用输入数据项表中各输入数据项自身的标识与数据类型之间是否具有预设的对应关系,如果是,执行所述从所述待定义输入数据项中选取一个未定义过的输入数据项。
可选的,所述判断在所述应用输入数据项表中各输入数据项自身的标识与数据类型之间是否具有预设的对应关系,具体为:
判断在所述应用输入数据项表中各输入数据项自身的标识与数据类型是否在预设的数据字典中具有对应关系;
其中,所述数据字典用于记录同一输入数据项和标识与数据类型之间的对应关系。
可选的,还包括:
判断在所述应用输入数据项表中是否存在对应于具有相同标识的多个输入数据项的交易,如果否,执行所述从所述待定义输入数据项中选取一个未定义过的输入数据项。
可选的,在所述COPYBOOK文件中包括所述COPYBOOK的文件头、已创建的CTF表项的定义和所述COPYBOOK的填充项,所述填充项的长度为预设的CTF最大长度与所述已创建的CTF表项的总长度之差。
可选的,在所述COPYBOOK文件中创建一个CTF表项重新作为当前CTF表项之后,还包括:
计算当前已创建的CTF表项的总长度;
响应于所述当前已创建的CTF表项的总长度超过预设的长度阈值,生成并反馈提示信息,其中,所述提示信息用于提示所述当前已创建的CTF表项的总长度已超限。
第二方面,为解决上述技术问题,本发明提供了一种生成配置文件的装置,包括:
获取单元,用于响应于COPYBOOK文件的生成指令,获取CTF涉及的所有交易的输入数据项,作为待定义输入数据项;所述COPYBOOK用于配置所述CTF;
选取单元,用于从所述待定义输入数据项中选取一个未定义过的输入数据项,作为当前输入数据项;
重定义单元,用于若所述当前输入数据项满足第一预定条件,对当前CTF表项进行重定义以使得所述当前CTF表项的定义中包含所述当前输入数据项,返回触发所述选取单元;
定义单元,用于若所述当前输入数据项满足第二预定条件,在所述COPYBOOK文件中创建一个CTF表项重新作为当前CTF表项,对所述当前CTF表项进行定义以使得所述当前CTF表项的定义中包含所述当前输入数据项,返回触发所述选取单元;
生成单元,用于响应于所述待定义输入数据项已全部定义成已创建的CTF表项,基于已创建的CTF表项的定义生成所述COPYBOOK文件;
其中,所述第一预定条件为:所述当前输入数据项的数据类型与当前重定义输入数据项的数据类型相同,所述当前输入数据项的标识与任意一个所述当前重定义输入数据项的标识都不相同,且,所述当前输入数据项与任意一个所述当前重定义输入数据项都不属于同一交易;所述当前重定义输入数据项是在所述当前CTF表项的定义中已经存在的输入数据项;
所述第二预定条件包括:所述当前输入数据项不满足所述第一预定条件且所述当前输入数据项的标识不属于任意一个已定义过的输入数据项的标识。
可选的,所述获取单元包括:
获取子单元,用于响应于所述生成指令,获取所述CTF的标识;
查找子单元,用于在应用输入数据项表中查找与所述CTF的标识对应的输入数据项,作为所述待定义输入数据项;
其中,在所述应用输入数据项表中记录有CTF、交易、输入数据项之间的映射关系,所述映射关系包括CTF的标识、交易标识、输入数据项的标识和输入数据项的数据类型。
可选的,还包括:
第一判断单元,用于判断在所述应用输入数据项表中各输入数据项自身的标识与数据类型之间是否具有预设的对应关系;
第一触发单元,用于在所述第一判断单元的判断结果为是的情况下,触发所述选取单元。
可选的,所述第一判断单元具体用于:
判断在所述应用输入数据项表中各输入数据项自身的标识与数据类型是否在预设的数据字典中具有对应关系;
其中,所述数据字典用于记录同一输入数据项和标识与数据类型之间的对应关系。
可选的,还包括:
第二判断单元,用于判断在所述应用输入数据项表中是否存在对应于具有相同标识的多个输入数据项的交易;
第二触发单元,用于在所述第二判断单元的判断结果为否的情况下,触发所述选取单元。
可选的,在所述COPYBOOK文件中包括所述COPYBOOK的文件头、已创建的CTF表项的定义和所述COPYBOOK的填充项,所述填充项的长度为预设的CTF最大长度与所述已创建的CTF表项的总长度之差。
可选的,还包括:
计算单元,用于在所述定义单元所述COPYBOOK文件中创建一个CTF表项重新作为当前CTF表项之后,计算当前已创建的CTF表项的总长度;
提示单元,用于响应于所述当前已创建的CTF表项的总长度超过预设的长度阈值,生成并反馈提示信息,其中,所述提示信息用于提示所述当前已创建的CTF表项的总长度已超限。
在本申请实施例中,在响应到COPYBOOK文件的生成指令时,对于获取到的待定义输入数据项,依次选取其中未定义过的输入数据项进行CTF表项的定义。对于当前输入数据项来说,若其满足第一预定条件则将其重定义到一个已创建的CTF表项,若其满足第二预定条件则将其定义成一个新创建的CTF表项。其中,第一预定条件为:该当前输入数据项的数据类型与该已创建的CTF表项的定义中已存在的输入数据项的数据类型相同,该当前输入数据项的标识与任意一个该已创建的CTF表项的定义中已存在的输入数据项都不相同,且,该当前输入数据项的标识与任意一个该已创建的CTF表项的定义中已存在的输入数据项都不属于同一交易。第二预定条件为:该当前输入数据项不满足第一预定条件且该当前输入数据项的标识不属于任意一个已定义过的输入数据项的标识。在所有待定义输入数据项已全部定义成已创建的CTF表项之后,基于已创建的CTF表项的定义生成所述COPYBOOK文件。由此可见,在本申请实施例中,可被重定义到同一个CTF表项的输入数据项能够被自动识别出来,这样不仅简化了人工手动的工作量,而且也提高了重定义CTF表项的准确性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本发明实施例中一种生成配置文件的方法的流程示意图;
图2为本发明实施例中一种生成配置文件的方法的流程示意图;
图3为本发明实施例中一种生成配置文件的装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
发明人经过研究发现,现有技术中,CTF记录了多个交易的一个或者多个输入数据项的信息,每个CTF都会占用一定的内存空间,为了减少内存空间的占用情况,可以对分别属于不同交易但数据类型相同的多个输入数据项重定义成同一个CTF表项,这样就减少了CTF表项所占用的内存空间,但目前对CTF表项重定义时,都是通过人工查找输入数据项和手动编写的方式生成具有重定义CTF表项的COPYBOOK文件,人工操作不仅工作量巨大而且重定义的准确性也难以保证。
举例说明,在一个CTF中包含两个输入数据项,其中一个输入数据项的数据类型为A,属于交易1,另一个输入数据项的数据类型也为A,但属于交易2,当这两个输入数据项满足进行重定义的条件时,将这两个输入数据项重定义成一个CTF表项,重定义的CTF表项中包含这两个输入数据项。
基于此,在本发明实施例中,提供了一种生成配置文件的方法,该方法通过选取未定义过的输入数据项进行CTF表项的定义,若当前选取的输入数据项满足第一预定条件则将其重定义到一个已创建的CTF表项中,若满足第二预定条件则将其定义成一个新创建的CTF表项;其中第一预定条件为:该当前输入数据项的数据类型与该已创建的CTF表项的定义中已存在的输入数据项的数据类型相同,该当前输入数据项的标识与任意一个该已创建的CTF表项的定义中已存在的输入数据项都不相同,且,该当前输入数据项的标识与任意一个该创建的CTF表项的定义中已存在的输入数据项都不属于同一交易;第二预设条件为:该当前数据输入数据项不满足第一预定条件且该当前输入数据项的标识不属于任意一个已定义过的输入数据项的标识。在所有待定义的输入数据项的标识已全部定义成已创建的CTF表项之后,基于已创建的CTF表项的定义生成COPYBOOK文件。因此,本发明实施例中通过自动识别CTF表项的输入数据项,并对CTF表项自动的进行重定义,这样不仅简化了人工手动操作的工作量,而且也提高了重定义CTF表项的准确性。
下面结合附图,通过实施例来详细说明本发明实施例中一种生成配置文件的方法和装置的具体实现方式。
示例性方法
参考图1,示出了本发明实施例中一种生成配置文件的方法的流程示意图。在本实施例中,所述方法可以包括以下步骤:
步骤101:响应于COPYBOOK文件的生成指令,获取CTF涉及的所有交易的输入数据项,作为待定义输入数据项;所述COPYBOOK用于配置所述CTF。
在本实施例的一些实施方式中,各交易涉及的输入数据项可以记录在一个应用输入数据项表中,每次需要生成COPYBOOK文件时可以从该应用输入数据项表中查找并获取相应的待定义输入项。具体地,步骤101例如可以包括:响应于所述生成指令,获取所述CTF的标识;在应用输入数据项表中查找与所述CTF的标识对应的输入数据项,作为所述待定义输入数据项。
其中,所述应用输入数据项表中记录有CTF、交易、输入数据项之间的映射关系。例如,所述映射关系可以包括CTF的标识、交易标识、输入数据项的标识和输入数据项的数据类型。
在采用设置应用输入数据项表的实施方式来实现步骤101时,可以将应用的输入数据项导入到该应用输入数据项表中,在生成配置文件的过程中,首先要在应用输入数据项表中读取指定的CTF对应的输入数据项。其中,应用输入数据项表中每个交易对应的输入数据项可以包括:CTF标识、交易标识、输入数据项的标识、输入数据项的数据类型。其中,CTF标识,用来将应用系统中的交易进行区分。对应于一个应用系统,可以定义一个或者多个CTF标识,其中每个CTF标识又可以对应多个交易。除此之外,所述应用输入数据项表中还可以包括,输入数据项的序号。该输入数据项的序号用来将交易进行排序,输入数据项的序号是从1开始递增的。
可以理解的是,在接收到生成COPYBOOK文件的指令后,可以从该指令中获取指定的CTF标识,然后在应用数据项表中获取所述指定的CTF标识涉及的所有交易的输入数据项,并将获取到的所有交易的输入数据项作为待定义输入数据项。其中,生成COPYBOOK文件的指令例如可以是响应于用户的触发操作而发起的。
步骤102:从所述待定义输入数据项中选取一个未定义过的输入数据项,作为当前输入数据项。
具体地,从步骤101中获取到的待定义的输入数据项中选取一个未定义过的输入数据项作为当前输入数据项。其中,所述未定义过的输入数据项表示的是在本次COPYBOOK文件的生成过程中还从未被选取为当前输入数据项的输入数据项,也可以说是未作为当前输入数据项执行过后续步骤103或后续步骤104的输入数据项。
步骤103:若当前输入数据项满足第一预定条件,对当前CTF表项进行重定义,以使得所述当前CTF表项的定义中包含所述当前输入数据项,返回步骤102。
其中,所述第一预定条件为:所述当前输入数据项的数据类型与当前重定义输入数据项的数据类型相同,所述当前输入数据项的标识与任意一个所述当前重定义输入数据项的标识都不相同,且,所述当前输入数据项与任意一个所述当前重定义输入数据项都不属于同一交易;所述当前重定义输入数据项是在所述当前CTF表项的定义中已存在的输入数据项。
本实施例中,对当前输入数据项进行判断,需要判断当前输入数据项是否满足第一预定条件。当满足第一预定条件时,可以对当前CTF表项进行重定义,以使得在该当前CTF表项的定义中包含有当前输入数据项。然后,可以返回步骤102,以重新从待定义输入数据项中选取一个未定义过的输入数据项作为当前输入数据项进行再次判断。其中,当前输入数据项满足第一预定条件,也就是,当前输入数据项的数据类型与当前重定义输入数据项的数据类型相同,当前输入数据项的标识与任意一个当前重定义输入数据项的标识都不相同,并且,当前输入数据项与任意一个当前重定义输入数据项都不属于同一交易。其中,当前重定义输入数据项是在当前CTF表项的定义中已存在的输入数据项。此外,输入数据项的标识例如可以是输入数据项的名称,输入数据项的交易标识例如可以为交易编号。可以理解的是,当前输入数据项的标识与任意一个当前重定义输入数据项的标识都不相同,例如可以相当于,当前输入数据项的名称与任意一个当前重定义输入数据项的名称都不相同。
举例说明,若获取的当前输入数据项的交易编号为5、名称为柜台编号、数据类型为A,当前重定义输入数据项对应的交易编号为3和4、名称为银行编号、数据类型为A,则将获取的当前输入数据项与当前重定义输入数据项进行比较,可以看出,当前输入数据项与当前重定义输入数据项的数据类型相同,名称不同,而且当前输入数据的交易编号不属于当前重定义输入数据项中的交易编号,也就是当前输入数据项与任意一个当前重定义输入数据项都不属于同一交易,可见,当前输入数据项满足第一预定条件,故对当前输入数据项进行重定义,以使在重定义之后当前CTF表项的定义中包含所述当前输入数据项,即将银行编号也写入到已经被定义的CTF表项中。在重定义之后,在当前CTF表项的定义中实际上包含了柜台编号与银行编号这两个输入数据项。
步骤104:若所述当前数据输入数据项满足第二预设条件,在所述COPYBOOK文件中创建一个CTF表项重新作为当前CTF表项,对所述当前CTF表项进行定义,以使得所述当前CTF表项的定义中包含所述当前输入数据项,返回步骤S102。
其中,所述第二预定条件为:所述当前输入数据不满足所述第一预定条件且所述当前输入数据项的标识不属于任意一个已定义过的输入数据项的标识。
本实施例中,对当前输入数据项进行判断,若当前输入数据项满足第二预定条件,在COPYBOOK文件中创建一个CTF表项重新作为当前CTF表项,对所述当前CTF表项进行定义,以使得所述当前输入数据项中包含所述当前输入数据项。其中第二预定条件为:当前输入数据项不满足第一预定条件且当前输入数据项的标识不属于任意一个已定义过的输入数据项的标识。可以理解的是,当前输入数据项不满足第一预定条件的情况可以具体体现为以下两种情况:1)当前输入数据项的数据类型与当前重定义的输入数据项的数据类型不同;2)当前输入数据项的数据类型与当前重定义的输入数据项的数据类型相同,当前输入数据项的标识与当前重定义的输入数据项的标识不同,且当前输入数据项的交易标识属于当前重定义的输入数据项对应的交易标识中。若当前输入数据项不满足上述两种情况中的任意一种情况,则当前输入数据项不满足第一预定条件。
举例说明,若获取的当前输入数据项的交易编号为5、名称为柜台编号、数据类型为A,当前重定义输入数据项对应的交易编号为3和4、名称为交易业务、数据类型为B,则将获取的当前输入数据项与当前重定义输入数据项进行比较,可以看出,当前输入数据项与当前重定义的输入数据项的数据类型不同,可见,当前输入数据项满足第二预设条件,故在COPYBOOK文件中创建一个新的CTF表项作为当前CTF表项并利用当前输入数据项对当前CTF表项进行定义。
举例说明,若获取的当前输入数据项的交易编号为5、名称为柜台编号,数据类型为A,当前重定义输入数据项对应的交易编号为编号3、4和5、名称为银行编号、数据类型为A,则将获取的当前输入数据项与当前重定义输入数据项进行比较,可以看出,当前输入数据项与当前重定义输入数据项的数据类型相同,名称不同,但是当前输入数据项的交易编号属于当前重定义输入数据项中的交易编号,即当前重定义输入数据项中存在与当前输入数据项属于同一交易的输入数据项,可见,当前输入数据项满足第二预设条件,故在COPYBOOK文件中创建一个新的CTF表项作为当前CTF表项并利用当前输入数据项对当前CTF表项进行定义。
此外,若当输入数据项的标识属于当前已定义过的输入数据项,即在当前已定义过的输入数据项的标识中存在当前输入数据项的标识,则当前输入数据项实际上已经被定义过了,故无需进行重定义也无需创建新的CTF表项进行定义,可以直接返回执行步骤102。
需要说明的是,在本实施例中,对CTF表项进行定义,表示创建一个新的CTF表项,该CTF表项是不同于当前已存在并定义过的CTF表项中的任意一个。对CTF表项进行定义之后,在该CTF表项的定义中仅包含一个输入数据项,即当前输入数据项。对CTF表项进行重定义,表示将当前输入数据项写入到当前已存在且定义过的CTF表项中。对CTF表项进行重定义之后,在该CTF表项的定义中包含当前输入数据项和至少一个此前已定义过的输入数据项,即在该CTF表项的定义中至少包含两个输入数据项。
步骤S105:响应于所述待定义输入数据项已全部定义成已创建的CTF表项,基于已创建的CTF表项的定义生成所述COPYBOOK文件。
本实施例中,当待定义的输入数据项已经全部被定义成已创建的CTF表项,可以基于已创建的CTF表项的定义生成COPYBOOK文件。其中,在所生成的COPYBOOK文件中可以包括:COPYBOOK的文件头、已创建的CTF表项的定义和COPYBOOK的填充项。其中,COPYBOOK的填充项的长度为预设的CTF最大长度与已创建的CTF表项的总长度之差。
在本实施例中,所述COPYBOOK的文件头例如可以是在步骤101之前响应于COPYBOOK文件的生成指令而生成的,或者又如可以是在步骤101之后而在步骤102之前生成的。所述COPYBOOK的填充项的长度可以是通过预设的CTF的最大长度减去已创建的CTF表项的总长度来确定的,其中CTF表项的总长度是将指定的CTF标识对应的所有的输入数据项均被定义到CTF表项之后而确定的,即在CTF表项的数量已被确定以后而确定的。
可以理解的是,在前述应用输入数据项表中可能存在输入错误的信息。为了排除这次错误信息影响COPYBOOK文件生成的准确性,可以在步骤102之前对应用数据项表中的输入数据项进行合法性检验。
例如,在应用输入数据项表中具有对应关系的输入数据项与数据类型,可能实际上并非真实对应的。具体地,该输入数据项的标识可能是不合法的标识,或者,该输入数据项的数据类型可能是不合法的数据类型,或者,该输入数据项的标识与数据类型之间不具有合法的对应关系。针对这些不合法的输入数据项的信息,在第一种合法性检验的实施方式中,本实施例例如还可以包括:判断所述应用输入数据项表中各输入数据项自身的标识与数据类型之间是否具有预设的对应关系,如果是,执行步骤102。
其中,预设的对应关系可以是用于描述合法的输入数据项的标识及其对应的数据类型。在一些实施方式中,该预设的对应关系可以记录在一种数据字典中。具体地,所述判断在所述应用输入数据项表中各输入数据项自身的标识与数据类型之间是否具有预设的对应关系,例如可以包括:判断在所述应用输入数据项表中各输入数据项自身的标识与数据类型是否在预设的数据字典中具有对应关系;其中,所述数据字典用于记录同一输入数据项和标识与数据类型之间的对应关系。
对于前述第一种合法性检验的实施方式来说,对应用输入数据项表中的输入数据项进行合法性检查具体可以包括以下几个方面:第一方面,判断应用输入数据项表中的输入数据项的标识是否属于数据字典中定义的输入数据项的标识;第二方面,判断应用输入数据项表中的输入数据项的数据类型是否属于数据字典中定义的输入数据项的数据类型;第三方面,判断输入数据项的标识相同的输入数据项,输入数据项的数据类型是否相同。
又如,在真实的情况下,同一交易涉及的各个输入数据项必然是不同的,因此,在应用数据输入项表中出现的对应于同一交易的多个相同标识的输入数据项也是不合法的。针对这些不合法的输入数据项,在第二种合法性检验的实施方式中,本实施例例如还可以包括:判断在所述应用输入数据项表中是否存在对应于具有相同标识的多个输入数据项的交易,如果否,执行步骤102。
本实施例中,综上对应用输入数据项表中的输入数据项进行的合法性检查介绍了两种实施方式,第一种实施方式是判断所述应用输入数据项表中各输入数据项自身的标识与数据类型之间是否具有预设的对应关系;第二种实施方式是判断在所述应用输入数据项表中是否存在对应于具有相同标识的多个输入数据项的交易。在本实施例中可以是只执行第一种合法性检查的实施方式也可以是只执行第二种合法性检查的实施方式,或者是这两种实施方式的合法性检查都要执行,执行的顺序可以是先执行第一方面的合法性检查再执行第二方面的合法性检查,也可以是先执行第一方面的合法性检查再执行第二方面的合法性检查。
需要说明的是,本实施例可以按照一定的周期定期地对应用输入数据项表中的输入数据项进行合法性检验,或者也可以是在所述响应于COPYBOOK文件的生成指令之后再对应用输入数据项表中的输入数据项进行合法性检查。
可以理解的是,通过对应用输入数据项表中的输入数据项进行合法性检查,能够避免出现输入数据项的定义错误和冲突的情况,并且也能避免后续在对输入数据项进行CTF表项的定义时,因为输入数据项的错误,定义出无效的CTF表项。
在本实施例的一些实施方式中,在为COPYBOOK文件定义CTF表项的过程中,可以在已定义的CTF表项的长度超过限制的情况下向用户发出提示,以避免CTF表项长度超限而导致的COPYBOOK文件错误。具体地,在步骤104中所述在所述COPYBOOK文件中创建一个CTF表项重新作为当前CTF表项之后,本实施例例如还可以包括:计算当前已创建的CTF表项的总长度;响应于所述当前已创建的CTF表项的总长度超过预设的长度阈值,生成并反馈提示信息,其中,所述提示信息用于提示所述当前已创建的CTF表项的总长度已超限。由此可见,当新定义了一个CTF表项后,可以实时对当前CTF表项的总长度进行计算,若当前CTF表项的总长度超过了预设的长度阈值,则发出警报,这样就可以使得用户在提示下采取措施避免CTF表项长度超限,从而避免了COPYBOOK文件生成错误。也即,通过实时计算CTF表项的总长度,避免了CTF表项的总长度超限而导致生成无效的CTF表项。
通过本实施例提供的各种实施方式,通过获取CTF涉及的所有交易的输入数据项,作为待定义输入数据项,并在待定义的输入数据项中选取一个未被定义过的输入数据项作为当前输入数据项,将当前输入数据项与当前重定义的输入数据项进行比较,判断当前输入数据项是需要被重定义还是正常定义一个新的CTF表项,当所有待定义的输入数据项均被定义成CTF表项后,基于已创建的CTF表项的定义生成所述COPYBOOK文件。在本申请实施例中,可被重定义到同一个CTF表项的输入数据项能够被自动识别出来,这样不仅简化了人工手动的工作量,而且也提高了重定义CTF表项的准确性。
参考图2,示出了本发明实施例中一种生成配置文件的方法的流程示意图;在本实施例中,所述方法例如可以包括以下的步骤:
步骤201:设置应用数据项表,并将各交易的输入数据项导入到该应用输入数据项表中。
其中导入到应用输入数据项表中的输入数据项包括:输入数据项的交易标识、输入数据项的标识、输入数据项的数据类型、输入数据项的序号、CTF标识。
步骤202:对所述应用输入数据项表中的所有的输入数据项进行合法性检查。
其中,对所有的输入数据项进行合法性检查具体例如可以包括以下几个方面:第一方面,判断输入数据项的标识是否属于在预设置的数据字典中定义的标识;第二方面,判断输入数据项的数据类型是否属于预设置的数据字典中定义的数据类型;第三方面,判断是否满足输入数据项的数据类型与输入数据项的标识在所述数据字典中预设置的对应关系;第四方面,判断在同一交易中是否重复定义了输入数据项的标识。
步骤203:生成CTF COPYBOOK文件头。
本实施例中,生成CTF COPYBOOK文件头可以是直接调用已设置的CTF COPYBOOK文件头,也可以是,人工编写CTF COPYBOOK文件头。
步骤204:在所述应用输入数据项表中,获取指定的CTF标识对应的所有交易的输入数据项。
其中,所述CTF标识对应的所有交易的输入数据项包括:输入数据项的标识、输入数据项的交易标识、输入数据项的数据类型和输入数据项的序号。
步骤205:在获取的所述指定的CTF标识对应的所有交易的输入数据项中选取一个未被定义过的输入数据项作为当前输入数据项。
可以理解的是,在步骤205中,若还能够选取到未被定义过的输入数据项则进入步骤206,若所有输入数据项都被定义过了而不能再选取到未被定义过的输入数据项则进入步骤211。
步骤206:判断所述当前输入数据项是否满足第一预定条件以及是否满足第二预定条件。
具体地,可以通过比较当前输入数据项与当前重定义输入数据项来实现步骤206。其中,所述当前重定义输入数据项是当前已经存在于当前CTF表项中的输入数据项。
第一预定条件为:当前输入数据项的数据类型与当前重定义输入数据项的数据类型相同,所述当前输入数据项的标识与任意一个所述当前重定义输入数据项的标识都不相同,且,所述当前输入数据项与任意一个所述当前重定义输入数据项都不属于同一交易;所述当前重定义输入数据项是在所述当前CTF表项的定义中已存在的输入数据项。
第二预定条件为:所述当前输入数据项不满足第一预定条件且所述当前输入数据项的标识不属于任意一个已定义过的输入数据项的标识。
可以理解的是,在步骤206之后,可以根据步骤206的判断结果选择进入步骤207、步骤208或步骤209。
步骤207、若所述当前输入数据项既不满足第一预定条件也不满足第二预定条件,直接返回步骤205。
具体地,所述当前输入数据项既不满足第一预定条件也不满足第二预定条件,即相当于,当前输入数据项的标识属于此前已定义的输入数据项的标识,也就是说,当前输入数据项此前已经被定义到CTF表项中去了,无需再次定义。
步骤208:若所述当前输入数据项满足第一预定条件,对当前CTF表项进行重定义,返回执行步骤205。
本实施例中,对当前输入数据项进行重定义,可以表示,在已经包含了其他输入数据项的当前CTF表项的定义中加入当前输入数据项,也就是说,在重定义之后,当前CTF表项的定义中包含当前输入数据项以及至少一个其他输入数据项,其中,所述其他输入数据项为在当前输入数据项之前已定义到当前CTF表项中的输入数据项。
步骤209:若所述当前输入数据项满足第二预定条件,在所述COPYBOOK文件中创建一个CTF表项重新作为当前CTF表项,对当前CTF表项进行定义,返回执行步骤205。
本实施例中,创建一个CTF表项可以表示为创建一个新的CTF表项,该新的CTF表项不同于此前已创建、已定义的任意一个CTF表项。此外,对当前输入数据项进行定义,可以表示,在新创建的、还未包含任何输入数据项的当前CTF表项的定义中加入当前输入数据项,也就是说,在定义之后,当前CTF表项的定义中仅包含当前输入数据项这一个输入数据项。
步骤210:在步骤209在所述COPYBOOK文件中创建一个CTF表项重新作为当前CTF表项之后,计算当前已创建的CTF表项的总长度,并判断所述当前已创建的CTF表项的总长度是否超过了预设的长度阈值,若超过了预设的长度阈值,反馈提示信息。
步骤211:响应于所述待定义输入数据项已全部定义成已创建的CTF表项,基于计算出的填充项长度生成填充项,从而生成所述COPYBOOK文件。
其中所述填充项长度的计算公式为:CTF预设的总长度-已定义的CTF项的总长度。
本实施例中,除了以上列举的步骤之外,还可以是以下步骤:
在以上步骤201~步骤210的基础上,在步骤204后还可以包括:
对获取的指定的CTF标识对应的所有交易的输入数据项按照输入数据项的标识、输入数据项的数据类型、输入数据项的交易标识和输入数据项的序号进行升序排列。
本实施例中,通过对应用输入数据项表中的输入数据项进行合法性检查,避免出现定义错误的情况;通过对通过自动识别CTF表项的输入数据项,并对CTF表项自动的进行重定义,不仅简化了人工手动操作的工作量,而且也提高了重定义CTF表项的准确性;通过实时计算CTF表项的总长度,避免了CTF表项的总长度超限而导致生成无效的CTF表项。
示例性设备
参考图3,示出了本发明实施例中一种生成配置文件的装置的结构示意图。在本实施例中,所述装置具体可以包括:
获取单元301,用于响应于COPYBOOK文件的生成指令,获取CTF涉及的所有交易的输入数据项,作为待定义输入数据项;所述COPYBOOK用于配置所述CTF。
选取单元302,用于从所述待定义输入数据项中选取一个未I=定义过的输入数据项,作为当前输入数据项。
重定义单元303,用于若所述当前输入数据项满足第一预定条件,对当前CTF表项进行重定义以使得所述当前CTF表项的定义中包含所述当前输入数据项,返回触发所述选取单元。
定义单元304,用于若所述当前输入数据项满足第二预定条件,在所述COPY文件中创建一个CTF表项作为当前CTF表项,对所述当前CTF表项进行定义以使得所述当前CTF表项的定义中包含所述当前输入数据项,返回触发所述选取单元。
生成单元305,用于响应于所述待定义输入数据项已全部定义成已创建的CTF表项,基于已创建的CTF表项的定义生成所述COPYBOOK文件。
其中,所述第一预定条件为:所述当前输入数据项的数据类型与当前重定义输入数据项的数据类型相同,所述当前输入数据项的标识与任意一个所述当前重定义输入数据项的标识都不相同,且,所述当前输入数据项与任意一个所述当前重定义输入数据项都不属于同一交易;所述当前重定义输入数据项是在所述当前CTF表项的定义中已经存在的输入数据项。
所述第二预定条件包括:所述当前输入数据项不满足所述第一预定条件且所述当前输入数据项的标识不属于任意一个已定义过的输入数据项的标识。
通过本实施例提供的各种实施方式,通过获取CTF涉及的所有交易的输入数据项,作为待定义输入数据项,并在待定义的输入数据项中选取一个未被定义过的输入数据项作为当前输入数据项,将当前输入数据项与当前重定义的输入数据项进行比较,判断当前输入数据项是需要被重定义还是正常定义一个新的CTF表项,当所有待定义的输入数据项均被定义成CTF表项后,基于已创建的CTF表项的定义生成所述COPYBOOK文件。在本申请实施例中,可被重定义到同一个CTF表项的输入数据项能够被自动识别出来,这样不仅简化了人工手动的工作量,而且也提高了重定义CTF表项的准确性。
在本实施例中,所述获取单元401具体例如可以包括:
获取子单元,用于响应于所述生成指令,获取所述CTF的标识。
查找子单元,用于在应用输入数据项表中查找与所述CTF的标识对应的输入数据项,作为所述待定义输入数据项。
其中,在所述应用输入数据项表中记录有CTF、交易、输入数据项之间的映射关系,所述映射关系包括CTF的标识、交易标识、输入数据项的标识和输入数据项的数据类型。
可选的,在本实施例的一些实施例中,所述装置还包括:
第一判断单元,用于判断在所述应用输入数据项表中各输入数据项自身的标识与数据类型之间是否具有预设的对应关系。
第一触发单元,用于在所述第一判断单元的判断结果为是的情况下,触发所述选取单元。
其中,所述第一判断单元具体用于:
判断在所述应用输入数据项表中各输入数据项自身的标识与数据类型是否在预设的数据字典中具有对应关系。
其中,所述数据字典用于记录同一输入数据项和标识与数据类型之间的对应关系。
可选的,在本实施例的一些实施例中,所述装置还包括:
第二判断单元,用于判断在所述应用输入数据项表中是否存在对应于具有相同标识的多个输入数据项的交易。
第二触发单元,用于在所述第二判断单元的判断结果为否的情况下,触发所述选取单元。
其中,在所述COPYBOOK文件中包括所述COPYBOOK的文件头、已创建的CTF表项的定义和所述COPYBOOK的填充项,所述填充项的长度为预设的CTF最大长度与所述已创建的CTF表项的总长度之差。
可选的,在本实施例的一些实施例中,所述装置还包括:
计算单元,用于在所述定义单元所述COPYBOOK文件中创建一个CTF表项重新作为当前CTF表项之后,计算当前已创建的CTF表项的总长度。
提示单元,用于响应于所述当前已创建的CTF表项的总长度超过预设的长度阈值,生成并反馈提示信息,其中,所述提示信息用于提示所述当前已创建的CTF表项的总长度已超限。
本发明实施例中提到的“第一……”、“第一……”等名称中的“第一”只是用来做名字标识,并不代表顺序上的第一。该规则同样适用于“第二”等。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到上述实施例方法中的全部或部分步骤可借助软件加通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如只读存储器(英文:read-only memory,ROM)/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者诸如路由器等网络通信设备)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法实施例和设备实施例而言,由于其基本相似于系统实施例,所以描述得比较简单,相关之处参见系统实施例的部分说明即可。以上所描述的设备及系统实施例仅仅是示意性的,其中作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本发明的优选实施方式,并非用于限定本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。