具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
考虑到现有的脚本文件的处理方法,大多是针对JAVA语言设计的,只能支持针对JAVA对象的取值,完成包含有JAVA对象的脚本文件的渲染处理,无法对包含包括JSON对象等不同类型的数据对象的脚本文件进行渲染处理。此外,在具体进行JAVA对象的取值时,由于受JAVA语言的语法限制,系统需要先获取得到脚本文件对应来源处生成并使用的JAVA包,根据对应来源处的JAVA包确定出JAVA对象的类后,才能进行后续的取值处理。而不同来源处的JAVA包往往会存在差异,导致系统需要获取掌握,并准确区分不同来源处的JAVA包和不同来源处的脚本文件,导致实施过程较为繁琐,应用范围相对有限。
针对产生上述问题的根本原因,本说明书考虑可以事先按照预设规则对待处理的脚本文件作相应标识,即可以使用预设的标识字符标识出脚本文件中待渲染对象的相关信息,例如,对象类型、渲染规则等等。进而系统在获取待处理的脚本文件中,可以先通过检索并根据脚本文件中的预设的标识字符,以及预设的标识字符所携带的用于表征针对待渲染对象的渲染规则等信息的指令字符串,来确定待处理的脚本文件中的待渲染对象和对应的对象类型;进而可以根据上下文数据,有针对性地进行取值处理,得到对应的渲染数据值,以完成渲染处理。从而解决了现有方法中存在的使用范围有限、无法对不同类型的待渲染对象进行渲染处理的问题。
本说明书实施方式提供一种脚本文件的处理方法,所述脚本文件的处理方法可以应用于平台化的数据处理系统中的服务器上,以对不同来源处的包含有不同类型的数据对象的脚本文件进行高效处理。
具体的,上述服务器可以用于获取按照预设规则标识过的脚本文件作为上述待处理的脚本文件,以及待处理的脚本文件的上下文数据;再检索待处理的脚本文件中的预设的标识字符,其中,所述预设的标识字符用于指示待渲染对象的对象类型。此外,所述预设的标识字符还可以携带有指令字符串,其中,所述指令字符串用于表征针对待渲染对象的渲染规则等信息。进而服务器可以根据所述预设的标识字符和所述预设的标识字符所携带的指令字符串确定出待处理脚本文件中的待渲染对象,以及对应的对象类型,以便可以根据上下文数据有针对性地提取渲染数据值;再根据渲染数据值对待处理的脚本文件中的待渲染对象进行处理,从而完成对待处理的脚本文件的渲染处理。
在本实施例中,所述服务器可以是一种应用于平台化的数据处理系统一侧,能够实现数据传输、数据处理等功能的后台业务服务器。具体的,所述服务器可以为一个具有数据运算、存储功能以及网络交互功能的电子设备;也可以为运行于该电子设备中,为数据处理、存储和网络交互提供支持的软件程序。在本实施方式中,并不具体限定所述服务器的数量。所述服务器具体可以为一个服务器,也可以为几个服务器,或者,由若干服务器形成的服务器集群。
在一个场景示例中,可以参阅图1所示,平台化的数据处理系统中的服务器可以应用本说明书实施例提供的脚本文件的处理方法对不同来源处上传的包含有不同类型的待渲染对象的待处理的脚本文件进行高效、准确的渲染处理。
在本场景示例中,不同来源处(对应不同业务系统)的技术人员可以先按照预设规则先在待处理的脚本文件中通过预设的标识字符标识出待渲染对象的相关信息。
其中,上述脚本文件(SCRIPT),具体可以理解为一种程序开发中用于起解释作用的程序数据,可以直接被技术人员和计算机识别、理解。具体的,上述脚本文件可以包括与网页相关的JAVASCRIPT,也可以包括用于写批处理的Shell脚本等。对于上述脚本文件的具体类型和内容,本说明书不作限定。
上述预设规则具体可以理解为一种在脚本文件中通过预设的标识字符标识出待渲染对象的对象类型,以及例如渲染规则等相关信息的语法规则,其中,不同类型的预设的标识字符对应不同类型的数据对象。
上述预设的标识字符具体可以理解为一种用于标识待渲染对象的对象类型,以及用于携带指令字符串的字符。其中,所述指令字符串具体可以是一种表达式,例如el表达式等,也可以是其他形式。对于上述指令字符串的具体形式,本说明书不作限定。具体实施时,可以通过上述指令字符串可以表征出针对待渲染对象的渲染规则(例如,获取待选对象的渲染数据值的规则)等信息。
针对不同对象类型的待渲染对象,上述预设的标识字符具体可以包括以下所列举的多种标识字符中的一种或多种:用于指示JSON对象的标识字符、用于指示JAVA对象的标识字符、用于指示字典数据对象的标识字符等等。
其中,上述JAVA对象具体可以理解为一种基于JAVA语言定义的,符合JAVA数据格式的数据对象。受限于JAVA语言的语法要求,每一个JAVA对象依赖于该对象所对应的类(也称class),而类又被分类存储于来源处的JAVA包中。因此,在针对JAVA对象进行取值时,往往需要先获取解析来源处的JAVA包,确定出对应的类后,才能针对该JAVA对象进行取值。
上述JSON对象(JavaScript Object Notation,也称JS对象简谱)具体可以理解为一种轻量级的数据交换格式的数据对象。具体的,上述JSON对象由于采用采用独立于编程语言的文本格式来存储和表示数据,相对于JAVA对象,数据的层次结构相对更加简洁、清晰,更易于机器的解析、生成,具有相对更高的传输效率。
上述字典数据对象具体可以理解为一种公用的目录数据。具体例如,对于map数据对象(一种字典数据对象)而言,其中,每一个数据元素是一个键(例如key,字典键)一个值(例如value,字典值)对应地进行匹配存储的。
当然,需要说明的是,上述所列举的预设的标识字符只是为了更好地说明本说明书实施例。具体实施时,根据具体的应用场景,还可以引入用于指示其他类型对象的标识字符作为预设的标识字符。对此,本说明书不作限定。
图2所示的代码语句为从按照预设规则编写的脚本文件中所摘取的几段代码语句。
其中,第一段代码语句中包含有用于指示JSON对象的预设的标识字符。参阅第一段代码语句,上述用于指示JSON对象的预设的标识字符具体可以表征为以下形式:“${}”。其中,该预设的标识字符所携带的指令字符串具体可以设置于上述预设的标识字符中的大括号“{}”内。例如,图中第二层大括号所包住的字符串:“a.b.[0].c”为一个具体的指令字符串。该指令字符串具体可以表示以下信息:从a对象的b属性列表中获取下标为0的对象的属性c的数据值。
此外,根据上述预设的标识字符还能从第一段代码语句中确定出该脚本文件中待渲染对象。具体的,可以将上述第一段代码语句中第一层大括号内,位于所述预设的标识字符前面的冒号“:”之前的字符串“P”确定为该脚本文件中的待渲染对象。
在本场景示例中,由于后续处理时,会先将JSON对象和JAVA对象都先转化同样的JSONObject对象,再对JSONObject对象进行相应的取值处理。即,对这两中不同类型的数据对象处理方式相近。因此在本例中可以不作过细的区分,而使用同样的预设的标识符号“${}”,按照同样的预设规则,来指示JSON对象和JAVA对象。在此,对用于该预设的标识字符来指示JAVA对象的不再赘述。
又考虑到,对于JSON对象的取值渲染时,很多时候还会存在是否需要带类型的问题。例如,在有些待处理的脚本文件中,在对JSON类型的待渲染对象进行渲染时,会要求用于渲染的渲染数据值是字符型而不是数值型,即要求渲染数据值是带类型的。这时,如果直接获取并利用一个不带类型的,即数值型的数据值进行渲染,往往会由于违反JSON语法,很容易导致异常。
而现有方法由于不是针对JSON对象设计的,往往很少考虑到取值处理得到数据值是否带类型的问题。针对这种情况,根据预设规则,在标识待处理的脚本文件中,可以利用预设的类型标识在预设的标识字符中标识出取值时是否需要带类型。
具体的,可以参阅图2中的第二段代码语句,使用“!”作为类型标识,在取值渲染需要带类型的情况,可以将上述类型标识设置于预设的标识字符“${}”中的“$”和“{}”之间,使得预设的标识字符携带有类型标识。进而可以表征在取值渲染时,所获取以及后续进行渲染处理时所使用的数据值c是带类型的,即字符型的数据。而第一段代码语句中,由于预设的标识字符中没有携带有上述类型标识,可以表征在取值渲染时,获取以及后续进行渲染处理时所使用的数据值c是不带类型的,即数值型的数据。当然,上述所列举的类型标识只是一种示意性说明。具体实施时,根据具体情况也可以采用其他合适的符号作为上述类型标识。
当然,需要说明的是,具体实施时,根据具体情况和处理需要,也可以对用于指示JSON对象的预设的字符标识,与用于指示JAVA对象的预设的字符标识进行进一步的区分。例如,可以使用以下形式的字符“*{}”作为用于指示JAVA对象的预设的标识字符,以区别于用于指示JSON对象的预设的标识字符。对此,本说明书不作限定。
第三段代码语句中包含有用于指示字典数据对象的预设的标识字符。参阅第三段代码语句,上述用于指示字典数据对象的预设的标识字符具体可以表征为以下形式:“##”。其中,该预设的标识字符所携带的指令字符串具体可以设置于上述预设的标识字符中的两个井号“#”之间。对于字典数据对象,上述指令字符串中包含有对应的字典键值(例如key)。参阅第三段代码语句,字典键值即为“name”,后续可以根据该字典键值找到对应字典值(例如value)作为对应的数据值。
此外,根据上述预设的标识字符还能从第三段代码语句中确定出该脚本文件中待渲染对象。具体的,可以将上述第三段代码语句中大括号内,位于所述预设的标识字符前面的冒号“:”之前的字符串“Q”确定为该脚本文件中的待渲染对象。
类似的,在使用上述预设的标识字符对待处理的脚本文件进行标识时,也可以根据预设的规则,使用类型标识表征出取值渲染时的所涉及到的渲染数据是否是带类型的数据。
可以参阅图2中的第四段代码语句,可以在预设的标识字符中第一个“#”之前标记出“!”,作为类型标识,使得预设的标识字符携带有类型标识,以表征在取值渲染时,所获取以及后续进行渲染处理时所使用的数据值是带类型的,即字符型的数据。而第三段代码语句中,预设的标识字符没有携带有类型标识,可以表征在取值渲染时,所获取以及后续进行渲染处理时所使用的数据值是不带类型的,即数值型的数据。
需要说明的是,上述所列举的四段代码语句只是为了更好地说明本说明书实施例。具体实施时,可以参阅上述两段代码语句在脚本文件中使用预设的标识字符对脚本文件中待渲染对象的相关信息(例如,对象类型、渲染规则等)作相应的标识。
用户具体可以按照上述所列举的两段代码语句的标识方式对待处理的脚本文件先进行标识后,再通过网络将上述标识后的待处理的脚本文件连同与该脚本文件的上下文数据一起上传到平台化的数据处理系统的服务器上。
其中,上述脚本文件的上下文数据具体可以理解为一种与待处理的脚本文件对应的,包含有例如待处理的脚本文件附表数据等相关信息的文件数据。
参阅图3所示,服务器在获取得到了上述待处理的脚本文件,以及待处理的脚本文件的上下文数据后,进一步可以先对待处理的脚本文件进行检索,以确定待处理的脚本文件中是否存在预设的标识字符。在确定待处理的脚本文件中不存在预设的标识字符的情况下,确定没有待渲染对象,该脚本文件不需要进行渲染处理,停止对该脚本文件的渲染处理。
在确定待处理的脚本文件中存在预设的标识字符的情况,则确定出预设的标识字符,以及预设的标识字符所在的代码语句。进而可以根据预设的标识字符确定出待处理的脚本文件中待渲染对象的对象类型,并从待处理的脚本语句中搜索并获取预设的标识字符所携带的指令字符串。
具体的,服务器可以通过正则表达对所述待处理的脚本文件中的预设的标识字符进行检索,以找到待处理的脚本文件中的预设的标识字符。当然,需要说明的是,上述所列举的通过正则表达式检索待处理的脚本文件中的预设的标识字符只是为了更好地说明本说明书实施例。具体实施时,根据具体情况和处理要求,也可以采用其他合适的检索方式检索待处理的脚本文件中的预设的标识字符。对此,本说明书不作限定。
服务器在确定出预设的标识字符后,可以先确定预设的标识字符的类型,例如,确定出预设的标识字符为用于指示JSON对象,或JAVA对象的标识字符。并确定出待处理的脚本文件中包含有预设的标识字符的代码语句,例如,可以根据预设的标识字符“${}”锁定出标识在待处理的脚本文件中的第一段代码语句。进而具体可以参阅图4所示,在该段代码语句中,检索得到上述预设的标识字符的大括号所包住的字符串作为该预设的标识字符所携带的指令字符串。并通过对该指令字符串的解析,确定该指令字符串所表征的渲染规则,即对应的取值规则。同时,还会根据该预设的标识字符,确定出该预设的标识字符为用于指示JSON对象的标识字符,进而确定出待处理的脚本文件中待渲染对象的对象类型为JSON对象。此外,服务器还会根据预设的标识字符串,检索并获取该段代码语句中位于预设的标识字符之前的冒号“:”之前的字符串“P”,确定出待处理的脚本文件中的待渲染对象的具体数据对象为数据“P”。
进一步,服务器可以根据上述确定出的对象类型,以及待处理的脚本文件中的待渲染对象,对上下文数据进行检索,找到并获取与待渲染对象匹配的数据对象。
其中,上述与待渲染对象匹配的数据对象具体可以理解为一种存储在上下文数据中,与待渲染对象对应的,包含有待渲染对象具体数据值的数据对象。
在获取了与待渲染对象匹配的数据对象后,考虑到该数据对象与待渲染对象对应,可能是JAVA对象,也可能是JSON对象。而对JAVA对象进行取值通常比较繁琐,需要获取并掌握来源处的JAVA等数据。因此,可以先将上述匹配的数据对象先根据具体的对象类型,采用对应的转化方式,将数据对象转化为统一的JSONObject对象。
其中,上述JSONObject对象,具体可以理解为一种数据格式与JSON对象近似的数据传输对象。
具体的,服务器在确定匹配的数据对象为JAVA对象时,可以采用针对JAVA对象的转化处理规则处理后,通过fastjson转化后得到对应的JSONObject对象;在确定匹配的数据对象为JSON对象时,可以采用针对JSON对象的转化处理规则处理后,通过fastjson转化后得到对应的JSONObject对象。当然,需要说明的是,上述所列举的转化方式只是一种示意性说明。具体实施时,根据具体情况,也可以采用其他合适的方式进行转化。对此,本说明书不作限定。
又考虑到JSONObject对象中,基于对应的语法规则,数据的层次关系是通过多层嵌套的方式来表征。因此,在JSONObject对象中数据的层次关系还是有点复杂,导致取值的速度相对不够快,同时,在取值的过程,也容易出错误。
正是考虑上述情况,为了进一步提高取值的速度,减少误差,服务器在将匹配的数据对象转化为统一的JSONObject对象后,还可以对所述JSONObject对象中的数据的层次关系进行解析确定;进而可以根据所述数据的层次关系,对所述JSONObject对象进行扁平化处理,得到处理后的JSONObject对象。这种处理后的JSONObject对象相对于处理前的JSONObject对象,数据的层次关系更为清晰,更变后续的取值处理。
在得到上述处理后的JSONObject对象后,服务器可以根据所述指令字符串所表征的渲染规则,进行取值处理。即,根据具体的渲染规则从所述JSONObject对象中提取匹配的数据值,作为所述渲染数据值。例如,根据指令字符串“a.b.[0].c”,从与a对象对应的处理后的JSONObject对象的b属性列表中提取下标为0的对象的属性c的数据值作为匹配的数据值,从而得到对应的渲染数据值。
又考虑到有些场景,对于提取和使用的渲染数据值有相应的类型要求。因此,在提取渲染数据值时,具体还可以先检测所述预设的标识字符是否携带有类型标识,例如符号“!”;在确定所述预设的标识字符携带有类型标识的情况下,根据所述指令字符串,从所述JSONObject对象中提取带类型的匹配的数据值(即字符型的匹配数据值),作为所述渲染数据值。这样可以保证后续进行渲染处理时,不会出现异常,提高了渲染处理的准确度。
上述列举了在预设的标识字符为用于指示JSON对象或JAVA对象的情况下,如何根据上下文数据获取对应的渲染数据值。在确定预设的标识字符为用于指示字典数据对象的情况下,具体实施时,考虑到字典数据对象与JSON对象、JAVA对象的差异性,可以按照针对字典数据的方式来获取对应的渲染数据值。
具体的,服务器可以先根据所述预设的标识字符,确定出待处理的脚本文件中的待渲染对象的对象类型为字典数据类型。进一步可以根据所述字典数据类型和指令字符串,确定所述待处理的脚本文件中的待渲染对象,并从所述上下文数据中获取与所述待渲染对象匹配的数据对象,例如map数据。同时,可以根据所述指令字符串,确定字典键值,例如key。进而可以从所述匹配的数据对象中,通过检索提取出与所述字典键值匹配的字典值,例如value,作为所述渲染数据值。
类似的,具体实施时,还可以先检测所述预设的标识字符是否携带有类型标识,例如符号“!”;在确定所述预设的标识字符携带有类型标识的情况下,根据所述指令字符串,从所述字典数据对象中提取带类型的匹配的数据值(即字符型的匹配数据值),作为所述渲染数据值。以便保证后续进行渲染处理时,不会出现异常。
按照上述方式,在确定出待渲染对象所对应的渲染数据值后,进一步,服务器可以利用所确定的渲染数据值对待处理的脚本文件中的待渲染对象进行替换,从而完成对该待渲染对象进行渲染处理。
具体实施时,服务器可以按照上述方式对待处理的脚本文件中被检索出的待渲染对象分别进行相应渲染处理,从而完成对待处理的脚本文件的渲染处理,得到渲染后的,符合用户的脚本文件。
由上述场景示例可见,本说明书提供的脚本文件的处理方法,由于通过检索并根据待处理的脚本文件中的预设的标识字符以及预设的标识字符所携带的指令字符串,确定出待处理的脚本文件中的待渲染对象以及对应的对象类型;再根据上下文数据有针对性地进行取值处理,得到准确的渲染数据值,对待处理的脚本文件进行渲染处理,从而解决了现有方法中存在的使用范围有限、无法对不同类型的待渲染对象进行渲染处理的问题,达到能便捷、准确地对待处理的脚本文件中的不同类型的待渲染对象进行取值处理,进而高效地完成对脚本文件的渲染处理。
在另一个场景示例中,参阅图5所示,用户还可以根据预设规则使用其他类型的预设的标识字符在待处理的脚本文件中标识出自定义函数(或者自定义语法)。
例如,现有方法,基于针对JAVA对象的使用场景往往只提供两种默认的语法函数,即:casewhen函数(用于进行条件判断的函数),以及iterate函数(用于循环控制的函数)。在某些应用场景中,例如涉及到JSON对象,较为复杂的业务场景中,上述默认的语法函数往往是不够的,技术人员需要一些能针对业务场景的具体情境,能够按照与业务场景情境对应的业务逻辑,对业务信息进行针对性处理的函数。例如,动态查询函数等。上述默认的语法函数显然是无法很好地满足技术人员需求的。因此,为了扩展脚本文件中的语法函数,实现针对业务场景的更多、更复杂功能,技术人员还可以根据预设规则,在脚本文件中另外定义符合自己要求的自定义函数,并用预设的标识字符进行标识。
可以参阅图5中的第一段代码语句,根据预设规则,用于定义函数的预设的标识字符具体可以表示为以下形式:“$~{}”,其中,上述大括号内具体可以用于设置所定义,以及要调用的函数名称、参数名称等函数信息(可以理解为这类预设的标识字符所携带的另一种形式的指令字符串)。当然,需要说明的是,上述所列举的用于定义函数的标识字符只是一种示意性说明。具体实施时,根据具体情况,还可以采用其他合适的标识符号作为用于定义函数的标识字符。对此,本说明书不作限定。
其中,上述参数名称具体可以包括自定义函数中的函数逻辑名称,例如,“and”、“or”等,也可以包括自定义函数中所涉及到的具体业务信息的信息名称,例如,“companyIdPath”、“personal IdPath”等。
具体的,在上述用于定义函数的预设的标识字符中,可以使用预设分割符,例如“@@”将函数名称,以及不同类型或层级的参数名称分割开来。当然,上述所列举的分割符只是一种示意性说明。具体实施时,根据具体情况和处理要求,还可以采用其他合适的符号作为上述分割符。对此,本说明书不作限定。
具体实施时,参阅图5中的第一段代码语句,技术人员可以根据预设规则,将函数名称“dynamic”(即动态查询)设置于预设的标识字符的大括号中的第一个分割符之前的位置处。将表征函数逻辑名称的参数名称“and”设置于大括号中的第一个分割符和第二个分割符之间的位置处。将表征信息名称的参数名称“company IdPath”、“personal IdPath”设置于大括号中的第二个分割符之后的位置处,其中,上述两个信息名称之间可以使用逗号“,”来分开。
此外,技术人员还可以根据预设规则在自定义函数中嵌套其他的指令字符串(或表达式),参阅图5中的第二段代码语句,在第二分隔号之后的位置处可以设置有表达式:“#paths#”,用以表征自定义函数中对paths进行取值。其中,根据预设规则,还可以给予上述表达式高于自定义函数的执行优先级。即,需要执行完表达式“#paths#”后,才会执行该自定义函数。
进一步,又考虑到对于一些场景,有时会要求自定义函数中的某些参数或者表达式在函数执行前不能进行渲染。否则,可能会出现错误。因此,参阅图5中的第三段代码语句,技术人员根据预设规则还可以使用预设的标注符,例如“”’”,标注出在执行函数前不作渲染的参数名称或者表达式。当然,上述所列举的预设的标注符只是一种示意性说明。具体实施时,根据具体情况,也可以采用其他合适的符号作为预设的标注符。对此,本说明书不作限定。例如,在第三段代码语句中的“”’#paths#”’”部分,表达式“#paths#”被两边的预设的标注符“”’”包住,表示该表达式为标注参数或者标注表达式,以表征后续处理是不执行渲染处理。
技术人员在按照上述方式在脚本文件中通过预设的标识字符标识出自定义函数后,可以将上述待处理的脚本文件发送至平台化的数据处理系统中的服务器。服务器在接收到该待处理的脚本文件后,通过检索确定了预设的标识字符为用于定义函数的标识字符。
进而可以先根据该预设的标识字符,确定待处理的脚本文件中包含有该预设的标识字符的代码语句,并对预设的标识字符中的大括号内所包含有函数名称、参数名称等信息的指令字符串进行检索,以检索出指令字符串中的预设分割符;进而可以确定出各个预设分割符的前后位置,并将所述指令字符串中第一个预设分割符之前的字符串确定为函数名称,将所述指令字符串中除所述函数名称以外的字符串分别确定为参数名称;进一步可以根据所述函数名称、所述参数名称,生成所述待处理的脚本文件中的自定义函数。从而可以满足用户更多更复杂的业务要求,扩展脚本文件中的语法函数。
此外,又考虑到某些应用场景,用户会要求在执行函数前对一些参数或表达式得到的数据不作渲染处理。因此,在根据所述函数名称、所述参数名称,生成所述待处理的脚本文件中的自定义函数后,具体实施时,还可以先检索所述指令字符串中是否存在预设的标注符;再将所述预设的标注符所指示的字符串对应的参数确定为标注参数;并将所述自定义函数中的标注参数标记为不执行渲染处理。这样后续在执行自定义函数时,会根据上述标记,不对该标注参数(或者标注表达式)进行渲染处理。从而在执行时不会出现错误。
服务器在按照上述方式,根据用于定义函数的预设的标识字符生成待处理的脚本文件中对应的自定义函数后,进一步的,可以对该自定义函数进行注册处理。具体的,可以先通过spring注入的方式将所述自定义函数添加至functionMap容器中。进而可以得到相应的key用于指示自定义函数的名称,value用于指示自定义函数的实例。这样后续可以通过利用相应的key、value等指示值,在脚本文件中方便地调用上述自定义函数,实现相应的业务处理。
由上述场景示例可见,本说明书提供的脚本文件的处理方法,还通过检索预设的标识字符中用于定义函数的标识字符,并根据上述预设的标识字符,按照对应的处理规则,确定函数名称和参数名称,以生成自定义函数,从而能扩展待处理的脚本文件中的函数类型,以适应多样化处理要求,提高了用户体验。
参阅图6所示,本说明书实施例提供了一种脚本文件的处理方法,其中,该方法具体应用于平台化数据处理系统中的服务器一侧。具体实施时,该方法可以包括以下内容:
S61:获取待处理的脚本文件,以及待处理的脚本文件的上下文数据,其中,所述待处理的脚本文件为按照预设规则标识的脚本文件。
在本实施例中,上述待处理的脚本文件具体可以是一种按照预设规则对脚本文件中的待渲染对象的相关信息(例如,待渲染对象的对象类型、渲染规则等)进行标识后的脚本文件。其中,上述预设规则具体可以理解为一种在脚本文件中通过预设的标识字符标识出待渲染对象的对象类型,以及例如渲染规则等相关信息的语法规则,其中,不同类型的预设的标识字符对应不同类型的数据对象。
在本实施例中,具体实施时,可以先根据上述预设规则利用对应的预设的标识字符对脚本文件中待渲染对象的相关信息进行标识后,再上传至服务器。
在本实施例中,上述预设的标识字符具体可以理解为一种用于标识待渲染对象的对象类型,以及用于携带指令字符串的字符。其中,所述指令字符串具体可以是一种表达式,例如el表达式等,也可以是其他形式。对于上述指令字符串的具体形式,本说明书不作限定。具体实施时,可以通过上述指令字符串可以表征出针对待渲染对象的渲染规则(例如,获取待选对象的渲染数据值的规则)等信息。
在本实施例中,上述上下文数据具体可以理解为一种与待处理的脚本文件对应的,包含有例如待处理的脚本文件附表数据等相关信息的文件数据。
在本实施例中,上述获取待处理的脚本文件,以及待处理的脚本文件的上下文数据,具体实施时,可以包括:用户将标识后的待处理的脚本文件,连同与该待处理的脚本文件对应的上下文数据通过客户端上传至服务器;服务器接收上述待处理的脚本文件和上下文数据。
S63:检索所述待处理的脚本文件中的预设的标识字符,其中,所述预设的标识字符用于指示待渲染对象的对象类型,所述预设的标识字符中还携带有指令字符串。
在本实施例中,针对不同对象类型的待渲染对象,上述预设的标识字符具体可以包括以下所列举的多种标识字符中的一种或多种:用于指示JSON对象的标识字符、用于指示JAVA对象的标识字符、用于指示字典数据对象的标识字符等等。
在本实施例中,上述检索所述待处理的脚本文件中的预设的标识字符,具体实施时,可以包括:服务器通过正则表达式对所述待处理的脚本文件进行检索,以确定出待处理的脚本文件中是否存在上述预设的标识字符,在确定出存在预设的标识字符的情况下,锁定包含有预设的标识字符的代码语句,获取预设的标识字符,以及预设的标识字符所携带的指令字符串。
S65:根据所述预设的标识字符,和所述预设的标识字符所携带的指令字符串,确定所述待处理的脚本文件中的待渲染对象,并从所述上下文数据中提取渲染数据值。
在本实施例中,具体实施时,可以根据预设的标识字符确定出待处理的脚本文件中具体的待渲染对象,以及待渲染对象的对象类型;并根据待渲染对象的对象类型,结合指令字符串所表征的渲染规则等信息,从上下文数据中提取对应的数据值作为渲染数据值。
在本实施例中,具体实施时,在检索所述待处理的脚本文件中的预设的标识字符,确定所述预设的标识字符为用于指示JAVA对象,或用于指示JSON对象的标识字符的情况下,根据所述预设的标识字符,和所述预设的标识字符所携带的指令字符串,确定所述待处理的脚本文件中的待渲染对象,并从所述上下文数据中提取渲染数据值,具体实施时,可以包括以下内容:根据所述预设的标识字符,确定所述待处理的脚本文件中的待渲染对象的对象类型为JSON对象(或JAVA对象);根据所述对象类型和所述指令字符串,确定所述待处理的脚本文件中的待渲染对象,并从所述上下文数据中获取与所述待渲染对象匹配的数据对象;根据所述指令字符串,从所述匹配的数据对象中提取匹配的数据值,作为所述渲染数据值。
在本实施例中,具体的,可以根据预设的标识字符,获取待处理的脚本文件中位于预设的标识字符之前的冒号之前的位置处的字符串,并根据该字符串确定出具体的待渲染对象。
在本实施例中,具体的,可以根据预设的标识字符所指示的对象类型,确定出待渲染对象的对象类型。例如,预设的标识字符为指示JSON对象的标识字符,则可以确定出待渲染对象为JSON对象。
在本实施例中,具体的,可以根据预设的标识字符,提取预设的标识字符所携带的字符串,作为指令字符串;进而可以根据指令字符串确定具体的渲染规则等信息。
在本实施例中,在确定出渲染对象、渲染对象的对象类型,以及用于表征渲染规则等信息的指令字符串后,可以根据渲染对象、渲染对象的对象类型,以及渲染规则,对上下文数据进行检索,得到匹配的数据对象;再根据指令字符串从匹配的数据对象中提取对应的匹配的数据值作为渲染数据值。
在本实施例中,在检索所述待处理的脚本文件中的预设的标识字符,确定所述预设的标识字符为用于指示字典数据对象的标识字符的情况下,根据所述预设的标识字符,和所述预设的标识字符所携带的指令字符串,确定所述待处理的脚本文件中的待渲染对象,并从所述上下文数据中提取渲染数据值,具体实施时,可以包括以下内容:根据所述预设的标识字符,确定所述待处理的脚本文件中的待渲染对象的对象类型为字典数据(例如map数据)对象;根据所述对象类型和所述指令字符串,确定所述待处理的脚本文件中的待渲染对象,并从所述上下文数据中获取与所述待渲染对象匹配的数据对象;根据所述指令字符串,确定字典键值(例如key);从所述数据对象中,提取出与所述字典键值匹配的字典值(例如value),作为所述渲染数据值。
S67:根据所述渲染数据值,对所述待处理的脚本文件中的待渲染对象进行渲染处理。
在本实施例中,上述根据所述渲染数据值,对所述待处理的脚本文件中的待渲染对象进行渲染处理,具体实施时,可以包括以下内容:利用所述渲染数据值对待处理的脚本文件中的待渲染对象进行替换,从而完成对待处理的脚本文件的渲染处理,得到渲染后的脚本文件。
在本实施例中,由于通过检索并根据待处理的脚本文件中的预设的标识字符以及预设的标识字符所携带的指令字符串,确定出待处理的脚本文件中的待渲染对象以及对应的对象类型;再根据上下文数据有针对性地进行取值处理,得到准确的渲染数据值,对待处理的脚本文件进行渲染处理,从而解决了现有方法中存在的使用范围有限、无法对不同类型的待渲染对象进行渲染处理的问题,达到能便捷、准确地对待处理的脚本文件中的不同类型的待渲染对象进行取值处理,进而高效地完成对脚本文件的渲染处理。
在一个实施例中,所述预设的标识字符具体可以包括以下至少之一:用于指示JSON对象的标识字符、用于指示JAVA对象的标识字符、用于指示字典数据对象的标识字符等。当然,需要说明的是,上述所列举的预设的标识字符只是为了更好地说明本说明书实施例。具体实施时,根据具体的应用场景,还可以引入用于指示其他类型对象的标识字符作为预设的标识字符。对此,本说明书不作限定。
在一个实施例中,在检索所述待处理的脚本文件中的预设的标识字符,确定所述预设的标识字符为用于指示JAVA对象,或用于指示JSON对象的标识字符(例如为“${}”)的情况下,根据所述预设的标识字符,和所述预设的标识字符所携带的指令字符串,确定所述待处理的脚本文件中的待渲染对象,并从所述上下文数据中提取渲染数据值,具体实施时,还可以包括以下内容:根据所述预设的标识字符,确定所述待处理的脚本文件中的待渲染对象的对象类型;根据所述对象类型和所述指令字符串,确定所述待处理的脚本文件中的待渲染对象,并从所述上下文数据中获取与所述待渲染对象匹配的数据对象;根据所述对象类型,将所述数据对象按照预设的转化方式进行数据转化,得到与所述数据对象对应的JSONObject对象;根据所述指令字符串,从所述JSONObject对象中提取匹配的数据值,作为所述渲染数据值。
在本实施例中,进一步考虑到对JAVA对象的取值处理较为繁琐,效率较低,具体实施时,可以先将所获取的类型为JAVA类型或者JSON类型的匹配的数据对象先进行数据转化,统一为JSONObject对象,进而后续可以通过相同的取值方式,更加简便、高效地提取出数据值。
在本实施例中,具体实施时,在确定匹配的数据对象为JAVA对象时,可以采用针对JAVA对象的转化处理规则处理后,通过fastjson转化后得到对应的JSONObject对象;在确定匹配的数据对象为JSON对象时,可以采用针对JSON对象的转化处理规则处理后,通过fastjson转化后得到对应的JSONObject对象。当然,需要说明的是,上述所列举的转化方式只是一种示意性说明。具体实施时,根据具体情况,也可以采用其他合适的方式进行转化。对此,本说明书不作限定。
在一个实施例中,又考虑到JSONObject对象中,基于对应的语法规则,数据的层次关系是通过多层嵌套的方式来表征。因此,在JSONObject对象中数据的层次关系还是有点复杂,导致取值的速度相对不够快,同时,在取值的过程,也容易出错误。基于上述考虑,在从所述JSONObject对象中提取匹配的数据值之前,还可以先对JSONObject对象进行扁平化处理,以得到数据层次关系更为清晰的数据对象,以便提高后续提取数据值的效率和准确度。
在本实施例中,在将所述数据对象按照预设的转化方式进行数据转化,得到与所述数据对象对应的JSONObject对象后,所述方法具体实施时,还可以包括以下内容:获取所述JSONObject对象中的数据的层次关系;根据所述数据的层次关系,对所述JSONObject对象进行扁平化处理,得到处理后的JSONObject对象。
在一个实施例中,又考虑到有些场景要求渲染所使用数据值是带类型的数据值,有时又要求是不带类型的数据值。因此,具体实施时,上述根据所述指令字符串,从所述JSONObject对象中获取匹配的数据值,作为所述渲染数据值,可以包括以下内容:检测所述预设的标识字符是否携带有类型标识,例如“!”;在确定所述预设的标识字符携带有类型标识的情况下,根据所述指令字符串,从所述JSONObject对象中提取带类型的匹配的数据值(例如字符型的数据值),作为所述渲染数据值。相应的,在确定所述预设的标识字符未携带有类型标识的情况下,根据所述指令字符串,从所述JSONObject对象中提取不带类型的匹配的数据值(例如数值型的数据值),作为所述渲染数据值。从而能够根据具体要求,选择合适类型的数据值作为渲染数据值,提高了后续渲染处理的准确度。
在一个实施例中,在检索所述待处理的脚本文件中的预设的标识字符,确定所述预设的标识字符为用于指示字典数据对象的标识字符(例如“##”)的情况下,根据所述预设的标识字符,和所述预设的标识字符所携带的指令字符串,确定所述待处理的脚本文件中的待渲染对象,并从所述上下文数据中提取渲染数据值,包括:根据所述预设的标识字符,确定所述待处理的脚本文件中的待渲染对象的对象类型为字典数据类型(例如map数据);根据所述对象类型和所述指令字符串,确定所述待处理的脚本文件中的待渲染对象,并从所述上下文数据中获取与所述待渲染对象匹配的数据对象;根据所述指令字符串,确定字典键值(例如key);从所述数据对象中,提取出与所述字典键值匹配的字典值(例如value),作为所述渲染数据值。
在本实施例中,具体实施时,上述从所述数据对象中,提取出与所述字典键值匹配的字典值(例如value),作为所述渲染数据值,具体实施时,还可以包括:检测所述预设的标识字符是否携带有类型标识,例如“!”;在确定所述预设的标识字符携带有类型标识的情况下,根据所述指令字符串,从所述数据对象中,提取出带类型的与所述字典键值匹配的字典值,作为所述渲染数据值。相应的,在确定所述预设的标识字符未携带有类型标识的情况下,根据所述指令字符串,从所述数据对象中,提取出不带类型的与所述字典键值匹配的字典值,作为所述渲染数据值。
在一个实施例中,上述预设的标识字符具体还可以包括用于定义函数的标识字符(例如“$~{}”)。
其中,上述用于定义函数的标识字符所携带的指令字符串位于上述预设的标识字符的大括号内,上述指令字符串具体可以包括所定义的函数名称、参数名称等信息。具体的,上述参数名称可以包括:函数逻辑名称、业务信息名称等,也可以是表达式等等。对此,本说明书不作限定。
在本实施例中,上述预设的标识字符所携带的指令字符串中还可以包括预设分割符(例如“@@”),用以分割函数名称和参数名称,以及不同类型或层级的参数名称。
在本实施例中,上述函数名称具体可以理解为技术人员自定义函数的名称。其中,上述自定义函数不是系统默认的语法函数,而是技术人员结合具体情况,根据预设规则在待处理的脚本文件中标识出的用以适应相应的业务场景,完成相应的业务数据处理而针对性构造的语法函数。
在一个实施例中,在检索所述待处理的脚本文件中的预设的标识字符,确定所述预设的标识字符为用于定义函数的标识字符的情况下,所述方法具体实施时,还可以包括以下内容:检索所述指令字符串中的预设分割符;将所述指令字符串中第一个预设分割符之前的字符串确定为函数名称,将所述指令字符串中除所述函数名称以外的字符串分别确定为参数名称;根据所述函数名称、所述参数名称,生成所述待处理的脚本文件中的自定义函数。
这样服务器可以根据用于定义函数的预设的标识字符,生成并调用待处理的脚本文件中相应的自定义函数,以执行相应的数据处理,从而扩展了脚本文件的函数类型,能够满足用户更多、更复杂的处理要求。
在一个实施例中,又考虑到,在一些场景中,在执行自定义函数时,有时会要求对一些参数或表达式不作渲染处理。否则,可能会存在不符合语法,导致异常的风险。基于上述考虑,在根据所述函数名称、所述参数名称,生成所述待处理的脚本文件中的自定义函数后,所述方法具体实施时,还可以包括以下内容:检索所述指令字符串中是否存在预设的标注符(例如“”’”);将所述预设的标注符所指示的字符串对应的参数确定为标注参数;将所述自定义函数中的标注参数标记为不执行渲染处理。
在本实施例中,上述将所述预设的标注符所指示的字符串对应的参数确定为标注参数,具体实施时,可以将两个预设的标注符所包住的字符串所对应的参数确定为标注参数。
在本实施例中,将所述自定义函数中的标注参数标记为不执行渲染处理,具体实施时,可以对上述标注参数进行信息标记,例如,添加标签等,以指示该参数在执行该函数前,不需要进行渲染处理。
在一个实施例中,在根据所述函数名称、所述参数名称,生成所述待处理的脚本文件中的自定义函数后,所述方法具体实施时,还可以包括以下内容:对所述自定义函数进行注册处理。其中,所述注册处理具体可以包括:通过spring注入的方式将所述自定义函数添加至functionMap容器中。
在本实施例中,通过上述方式可以得到相应的key用于指示自定义函数的名称,value用于指示自定义函数的实例。这样后续在脚本文件中,可以通过上述key、value等指示值,调用并执行相应的自定义函数,以完成对应的业务处理。
在一个实施例中,上述用于定义函数的标识字符具体还可以用于嵌套式设置表达式。例如,可以将表达式以参数名称的形式设置在预设的标识字符中大括号内。
在本实施例中,上述嵌套设置于所述预设的标识字符内的表达式具体可以享有优先级。例如,可以在执行该函数之前,先执行嵌套设置在预设的标识字符内的表达式。
由上可见,本说明书实施例提供的脚本文件的处理方法,由于通过检索并根据待处理的脚本文件中的预设的标识字符以及预设的标识字符所携带的指令字符串,确定出待处理的脚本文件中的待渲染对象以及对应的对象类型;再根据上下文数据有针对性地进行取值处理,得到准确的渲染数据值,对待处理的脚本文件进行渲染处理,从而解决了现有方法中存在的使用范围有限、无法对不同类型的待渲染对象进行渲染处理的问题,达到能便捷、准确地对待处理的脚本文件中的不同类型的待渲染对象进行取值处理,进而高效地完成对脚本文件的渲染处理;还通过检索预设的标识字符中是否携带有类型标识,在携带有类型标识的情况下,获取带类型的数据值作为渲染数据值,进行渲染处理,避免了由于获取使用的渲染数据值的类型不符合要求,导致渲染处理产生错误;还通过检索预设的标识字符中用于定义函数的标识字符,并根据上述预设的标识字符,按照对应的处理规则,确定函数名称和参数名称,以生成自定义函数,从而能扩展待处理的脚本文件中的函数类型,以适应多样化处理要求,提高了用户体验。
本说明书实施例还提供了一种服务器,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器具体实施时可以根据指令执行以下步骤:获取待处理的脚本文件,以及待处理的脚本文件的上下文数据,其中,所述待处理的脚本文件为按照预设规则标识的脚本文件;检索所述待处理的脚本文件中的预设的标识字符,其中,所述预设的标识字符用于指示待渲染对象的对象类型,所述预设的标识字符中还携带有指令字符串;根据所述预设的标识字符,和所述预设的标识字符所携带的指令字符串,确定所述待处理的脚本文件中的待渲染对象,并从所述上下文数据中提取渲染数据值;根据所述渲染数据值,对所述待处理的脚本文件中的待渲染对象进行渲染处理。
为了能够更加准确地完成上述指令,参阅图7所示,本说明书还提供了另一种具体的服务器,其中,所述服务器包括网络通信端口701、处理器702以及存储器703,上述结构通过内部线缆相连,以便各个结构可以进行具体的数据交互。
其中,所述网络通信端口701,具体可以用于获取待处理的脚本文件,以及待处理的脚本文件的上下文数据,其中,所述待处理的脚本文件为按照预设规则标识的脚本文件。
所述处理器702,具体可以用于检索所述待处理的脚本文件中的预设的标识字符,其中,所述预设的标识字符用于指示待渲染对象的对象类型,所述预设的标识字符中还携带有指令字符串;根据所述预设的标识字符,和所述预设的标识字符所携带的指令字符串,确定所述待处理的脚本文件中的待渲染对象,并从所述上下文数据中提取渲染数据值;根据所述渲染数据值,对所述待处理的脚本文件中的待渲染对象进行渲染处理。
所述存储器703,具体可以用于存储处理器702所基于的相应的指令程序。
在本实施方式中,所述网络通信端口701可以是与不同的通信协议进行绑定,从而可以发送或接收不同数据的虚拟端口。例如,所述网络通信端口可以是负责进行web数据通信的80号端口,也可以是负责进行FTP数据通信的21号端口,还可以是负责进行邮件数据通信的25号端口。此外,所述网络通信端口还可以是实体的通信接口或者通信芯片。例如,其可以为无线移动网络通信芯片,如GSM、CDMA等;其还可以为Wifi芯片;其还可以为蓝牙芯片。
在本实施方式中,所述处理器702可以按任何适当的方式实现。例如,处理器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式等等。本说明书并不作限定。
在本实施方式中,所述存储器703可以包括多个层次,在数字系统中,只要能保存二进制数据的都可以是存储器;在集成电路中,一个没有实物形式的具有存储功能的电路也叫存储器,如RAM、FIFO等;在系统中,具有实物形式的存储设备也叫存储器,如内存条、TF卡等。
本说明书实施例还提供了一种基于上述脚本文件的处理方法的计算机存储介质,所述计算机存储介质存储有计算机程序指令,在所述计算机程序指令被执行时实现:获取待处理的脚本文件,以及待处理的脚本文件的上下文数据,其中,所述待处理的脚本文件为按照预设规则标识的脚本文件;检索所述待处理的脚本文件中的预设的标识字符,其中,所述预设的标识字符用于指示待渲染对象的对象类型,所述预设的标识字符中还携带有指令字符串;根据所述预设的标识字符,和所述预设的标识字符所携带的指令字符串,确定所述待处理的脚本文件中的待渲染对象,并从所述上下文数据中提取渲染数据值;根据所述渲染数据值,对所述待处理的脚本文件中的待渲染对象进行渲染处理。
在本实施方式中,上述存储介质包括但不限于随机存取存储器(Random AccessMemory,RAM)、只读存储器(Read-Only Memory,ROM)、缓存(Cache)、硬盘(Hard DiskDrive,HDD)或者存储卡(Memory Card)。所述存储器可以用于存储计算机程序指令。网络通信单元可以是依照通信协议规定的标准设置的,用于进行网络连接通信的接口。
在本实施方式中,该计算机存储介质存储的程序指令具体实现的功能和效果,可以与其它实施方式对照解释,在此不再赘述。
参阅图8所示,在软件层面上,本说明书实施例还提供了一种脚本文件的处理装置,该装置具体可以包括以下的结构模块:
获取模块81,具体可以用于获取待处理的脚本文件,以及待处理的脚本文件的上下文数据,其中,所述待处理的脚本文件为按照预设规则标识的脚本文件;
检索模块82,具体可以用于检索所述待处理的脚本文件中的预设的标识字符,其中,所述预设的标识字符用于指示待渲染对象的对象类型,所述预设的标识字符中还携带有指令字符串;
确定模块83,具体可以用于根据所述预设的标识字符,和所述预设的标识字符所携带的指令字符串,确定所述待处理的脚本文件中的待渲染对象,并从所述上下文数据中提取渲染数据值;
处理模块84,具体可以用于根据所述渲染数据值,对所述待处理的脚本文件中的待渲染对象进行渲染处理。
在一个实施例中,所述预设的标识字符具体可以包括以下至少之一:用于指示JSON对象的标识字符、用于指示JAVA对象的标识字符、用于指示字典数据对象的标识字符。当然,需要说明的是,上述所列举的预设的标识字符只是一种示意性说明。对于预设的标识字符的具体类型、形式,本说明书不作限定。
在一个实施例中,所述确定模块83具体可以包括以下结构单元:第一确定单元、第二确定单元、第一转化单元和第一提取单元,
在所述检索模块82确定所述预设的标识字符为用于指示JAVA对象,或用于指示JSON对象的标识字符的情况下,
所述第一确定单元,具体可以用于根据所述预设的标识字符,确定所述待处理的脚本文件中的待渲染对象的对象类型;
所述第二确定单元,具体可以用于根据所述对象类型和所述指令字符串,确定所述待处理的脚本文件中的待渲染对象,并从所述上下文数据中获取与所述待渲染对象匹配的数据对象;
所述第一转化单元,具体可以用于根据所述对象类型,将所述数据对象按照预设的转化方式进行数据转化,得到与所述数据对象对应的JSONObject对象;
所述第一提取单元,具体可以用于根据所述指令字符串,从所述JSONObject对象中提取匹配的数据值,作为所述渲染数据值。
在一个实施例中,所述确定模块83具体还可以包括第二转化单元,具体可以用于获取所述JSONObject对象中的数据的层次关系;根据所述数据的层次关系,对所述JSONObject对象进行扁平化处理,得到处理后的JSONObject对象。
在一个实施例中,所述第一提取单元具体可以用于检测所述预设的标识字符是否携带有类型标识;在确定所述预设的标识字符携带有类型标识的情况下,根据所述指令字符串,从所述JSONObject对象中提取带类型的匹配的数据值,作为所述渲染数据值。
在一个实施例中,所述确定模块83具体还可以包括以下结构单元:第三确定单元、第四确定单元,
在所述检索模块82确定所述预设的标识字符为用于指示字典数据对象的标识字符的情况下,
所述第三确定单元,具体可以用于根据所述指令字符串,确定字典键值;
所述第四确定单元,具体可以用于从所述数据对象中,提取出与所述字典键值匹配的字典值,作为所述渲染数据值。
在一个实施例中,所述预设的标识字符具体还可以包括:用于定义函数的标识字符等其他类型的预设的标识字符。
在一个实施例中,所述装置具体还可以包括函数生成模块,其中,所述函数生成模块具体可以包括:第一检索单元、第五确定单元、生成单元,
在所述检索模块82确定所述预设的标识字符为用于定义函数的标识字符的情况下,
所述第一检索单元,具体可以用于检索所述指令字符串中的预设分割符;
所述第五确定单元,具体可以用于将所述指令字符串中第一个预设分割符之前的字符串确定为函数名称,将所述指令字符串中除所述函数名称以外的字符串分别确定为参数名称;
所述生成单元,具体可以用于根据所述函数名称、所述参数名称,生成所述待处理的脚本文件中的自定义函数。
在一个实施例中,所述生成模块具体还可以包括:第二检索单元、第六确定单元、标记单元,其中:
所述第二检索单元,具体可以用于检索所述指令字符串中是否存在预设的标注符;
第六确定单元,具体可以用于将所述预设的标注符所指示的字符串对应的参数确定为标注参数;
标记单元,具体可以用于将所述自定义函数中的标注参数标记为不执行渲染处理。
需要说明的是,上述实施例阐明的单元、装置或模块等,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
由上可见,本说明书实施例提供的脚本文件的处理装置,由于通过检索模块检索并根据待处理的脚本文件中的预设的标识字符以及预设的标识字符所携带的指令字符串,通过确定模块确定出待处理的脚本文件中的待渲染对象以及对应的对象类型;并根据上下文数据有针对性地进行取值处理,得到准确的渲染数据值,再通过处理模块对待处理的脚本文件进行渲染处理,从而解决了现有方法中存在的使用范围有限、无法对不同类型的待渲染对象进行渲染处理的问题,达到能便捷、准确地对待处理的脚本文件中的不同类型的待渲染对象进行取值处理,进而高效地完成对脚本文件的渲染处理;还通过检索模块检索预设的标识字符中是否携带有类型标识,在携带有类型标识的情况下,获取带类型的数据值作为渲染数据值,进行渲染处理,避免了由于获取使用的渲染数据值的类型不符合要求,导致渲染处理产生错误;还通过检索模块检索预设的标识字符中用于定义函数的标识字符,再通过函数生成模块根据上述预设的标识字符,按照对应的处理规则,确定函数名称和参数名称,以生成自定义函数,从而能扩展待处理的脚本文件中的函数类型,以适应多样化处理要求,提高了用户体验。
虽然本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构、类等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,移动终端,服务器,或者网络设备等)执行本说明书各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。本说明书可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
虽然通过实施例描绘了本说明书,本领域普通技术人员知道,本说明书有许多变形和变化而不脱离本说明书的精神,希望所附的权利要求包括这些变形和变化而不脱离本说明书的精神。