CN100520718C - 脚本命令注册方法、调用源程序代码的方法和装置 - Google Patents
脚本命令注册方法、调用源程序代码的方法和装置 Download PDFInfo
- Publication number
- CN100520718C CN100520718C CNB2007101520658A CN200710152065A CN100520718C CN 100520718 C CN100520718 C CN 100520718C CN B2007101520658 A CNB2007101520658 A CN B2007101520658A CN 200710152065 A CN200710152065 A CN 200710152065A CN 100520718 C CN100520718 C CN 100520718C
- Authority
- CN
- China
- Prior art keywords
- command
- script
- program code
- source program
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明涉及脚本命令,尤其涉及一种通过脚本命令调用源程序代码的方法和装置。一种调用源程序代码的脚本命令注册方法,包括:接收配置文件,所述配置文件中配置有脚本命令的命令信息、脚本命令调用的源程序代码的方法信息;解析所述配置文件,从所述配置文件获取脚本命令的命令信息和该源程序代码的方法信息;根据所述脚本命令的命令信息生成脚本命令名,根据所述源程序代码的方法信息注册方法回调对象;将所述脚本命令名与所述方法回调对象对应注册到脚本引擎的命令列表中。
Description
技术领域
本发明涉及脚本命令,尤其涉及一种通过脚本命令调用源程序代码技术。
背景技术
脚本语言是一种具有运营维护功能的程序语言。其与VB、C、Java等语言相比具有语法简单、易于掌握的特点,并且与应用程序密切相关,所以往往成为运营维护人员的工具。针对不同的网元,运营维护人员通过简单编写宏和函数,可以使很多日常工作实现自动化,极大地提高了局方的运营维护效率。
对于二次开发来说,脚本具有十分重要的意义。作为厂商为了给用户提供更大的便利性,为了更好的使用产品或者***的功能,往往提供二次开发功能。厂商开发出部分功能程序资源并允许用户使用,用户通过脚本来调用这些功能,这样用户只需要编写一些用于调用脚本命令的简单的宏和函数就可以调用厂商提供的功能。
通过脚本来调用源程序代码的功能在一些繁琐的周期性工作中也具有积极的意义。一些周期性的例行工作十分琐碎,例如交换机的定期数据备份,涉及到的指令虽然不多,但是因为某些指令执行后需要长时间等待出结果后才能继续键入其它指令,采用人工键入指令执行的方式特别麻烦而且容易出错。这个工作的复杂程度和工作量将正比与交换机的数目。所以,特别需要一个程序来自动完成诸如此类琐碎复杂却有规律性的周期性工作。比如及时处理各个交换机的告警、定义局数据、定期制作计费光盘、定期对交换机进行***备份等。这时只需要编写一小段代码来循环执行脚本命令,就可以实现期望的功能。
目前通过脚本命令来调用源程序代码的一般方法包括如下步骤:
1、编写实现功能的源程序代码,可以是Java,C/C++等语言来实现的功能代码,即源程序代码;
2、编写实现代码的Wrapper代码,即对命令的实现代码进行封装;
3、将封装过的Wrapper代码用其对应的语言解释器,即脚本引擎,编译成为一个脚本模块;
4、用户使用该脚本模块的脚本命令来调用源程序代码。
Jython解释器是一种基于Java的脚本语言解释器,用以提供对脚本语言的支持。下面是以Jython解释器作为示例,给出Java实现Jython脚本命令的一般过程:
1、编写实现功能的源程序代码:
package test;
public class Client
{
public static void testImp(int a,int b)
{
…
}
}
2、Wrapper封装代码:
创建一个mymod类,用来封装上面的Client类。在这个mymod类中,用户必须了解Jython脚本引擎的API函数以实现封装。比如必须实现Jython的ClassDictInit接口,而且还要实现Jython的classDictInit静态方法:
public class mymod implements ClassDictInit
{
public static void classDictInit(PyObject dict)
{
dict.__setitem__("__doc__",
new PyString("Test class to confirm"+
"builtin module"));
dict.__delitem__("classDictInit");
}
public static PyObject test(PyObject[]args,String[]kws))
{
ArgParser ap=new ArgParser("test",args,kws,"a","b");
//调用上面的testImp方法,如...testImp(1,2);
}
}
3、将mymod编译class文件后,加入到Jython解释器的类路径中。
4、通过以下命令手动导入该类,才能在脚本引擎下调用该源程序代码。
>>>from org.python.demo.modules import mymod
>>>mymod.test(1,2)
现有技术中需要在命令所在类外面再进行封装,增加很多冗余代码量,同时开发人员还要了解脚本引擎的API函数,因此不容易将已有的代码转换为脚本命令。因为脚本命令与Wrapper封装代码是通过语言编译器紧耦合的,所以如果用户想修改脚本命令,就必须修改Wrapper封装代码,而且要重新进行编译,这给二次开发带来了不便。同时对代码的修改和重新编译的过程都给程序的效率、稳定性和可靠性带来很大风险。
发明内容
本发明实施例提供一种调用源程序代码的脚本命令注册方法和装置、以及通过脚本命令调用源程序代码的方法和装置,用于简化对源程序代码二次开发的操作。
一种调用源程序代码的脚本命令注册方法,包括:
接收配置文件,所述配置文件中配置有脚本命令的命令信息、脚本命令调用的源程序代码的方法信息;
解析所述配置文件,从所述配置文件获得脚本命令的命令信息和该源程序代码的方法信息;
根据所述脚本命令的命令信息生成脚本命令名,根据所述源程序代码的方法信息生成方法回调对象;
将所述脚本命令名与所述方法回调对象对应注册到脚本引擎的命令列表中。
一种通过脚本命令调用源程序代码的方法,包括:
接收用户输入的脚本命令;解析所述脚本命令,从所述脚本命令中获得脚本命令名和脚本命令的参数列表信息;根据所述脚本命令名从脚本引擎中获得对应的方法回调对象;所述脚本命令名与所述对应的方法回调对象是对应注册到所述脚本引擎的命令列表中的;根据所述方法回调对象获得源程序代码的方法对象;将所述参数列表信息输入方法对象中并执行所述方法对象,完成所述源程序代码的调用。
一种调用源程序代码的脚本命令注册装置,包括:
配置文件接收模块,用于接收配置文件,所述配置文件中配置有脚本命令的命令信息、脚本命令调用的源程序代码的方法信息;
配置文件解析模块,用于解析所述配置文件接收模块接收的配置文件,从所述配置文件获得脚本命令的命令信息和该源程序代码的方法信息;
脚本命令注册模块,用于根据所述配置文件解析模块解析出的所述脚本命令的命令信息生成脚本命令名,根据所述源程序代码的方法信息生成方法回调对象,将所述脚本命令名与所述方法回调对象对应注册到脚本引擎的命令列表中。
一种调用源程序代码的装置,包括:
用户命令接收模块,用于接收用户输入的脚本命令;
用户命令解析模块,用于解析所述用户命令接收模块接收的脚本命令,从所述脚本命令中获得脚本命令名和脚本命令的参数列表信息;
命令映射调用模块,用于根据所述用户命令解析模块获得的脚本命令名从脚本引擎中获得对应的方法回调对象;根据所述方法回调对象获得源程序代码的方法对象,将所述参数列表信息输入方法对象中并执行所述方法对象,完成所述源程序代码的调用;所述脚本命令名与所述对应的方法回调对象是对应注册到所述脚本引擎的命令列表中的。
本发明实施例由于采用解析出配置文件的配置信息、脚本命令名,以及将根据配置信息生成的方法回调对象和脚本命令名注册到脚本引擎的方法,实现了脚本命令与源程序代码之间的映射关系,所以不再需要在源程序代码的外面再进行封装,进而减少了冗余代码量,同时脚本命令函数库开发人员也不需要了解脚本引擎的API函数,降低了二次开发的复杂度。
本发明实施例由于采用向脚本引擎注册配置文件的脚本命令名以及根据配置信息生成的方法回调对象的方法,所以实现了脚本命令与源程序代码间的松耦合关系,当用户修改脚本命令的时候无需修改、编译源程序代码,只需修改配置文件的属性项,进而达到简化了二次开发,提高扩展维护效率,提高扩展维护的可靠性的效果。
附图说明
图1a为本发明实施例从源程序代码到脚本命令的关系映射图;
图1b为本发明实施例配置文件节点树状图;
图2a为本发明实施例的通过脚本命令调用源程序代码的结构框图;
图2b为本发明实施例的用户命令解析模块的内部框图;
图2c为本发明实施例的脚本命令注册模块的内部框图;
图2d为本发明实施例的命令映射调用模块的内部框图;
图3为本发明实施例的将配置文件注册到脚本引擎的流程图;
图4为本发明实施例的用脚本命令调用源程序代码的流程图。
具体实施方式
配置文件为一种记载标记语言文件,允许各种不同的专业(如音乐、化学、数学等)开发与自己的特定领域有关的标记语言。在配置文件中包括标记节点。用户可以根据需要,定义节点属性,以携带需要的信息。
常用的描述树状结构的配置文件有XML(Extensible Markup Language,可扩展标记语言)配置文件、INI(Initialization,初始化)配置文件等,本发明实施例以XML配置文件来说明发明方案。本领域技术人员可以根据本发明实施例公开的技术内容,轻易的实现其它种类配置文件在本发明实施例方案中的应用。
本发明实施例利用采用树状结构描述映射关系的配置文件(例如XML配置文件)将脚本命令和源程序代码对应的方法信息对应注册到脚本引擎中,在完成了注册后,如果用户需要调用源程序代码,则根据用户输入的脚本命令,可以在脚本引擎中找到与该脚本命令对应的源程序代码的方法信息,通过这些源程序代码的方法信息就可以实现利用脚本命令调用源程序代码的目的。
预定义XML配置文件的各节点属性,分别用于配置源程序代码的方法信息和脚本命令的命令信息,当将XML配置文件中配置的信息注册到脚本引擎中时,根据建立的映射关系,实际上就是把源程序代码的方法信息以及与其相对应的脚本命令的命令信息注册到脚本引擎中,从而生成脚本命令。由于配置XML配置文件的属性项不必对源程序代码进行封装,而且也不用重新编译,所以对XML配置文件进行修改、维护要比现有技术中修改封装代码更加方便。
下面详细介绍XML配置文件中各个预定义的节点及其节点属性,以及各个节点属性具体配置的源程序代码的方法信息,以及脚本命令的命令信息,参见图1a和图1b:
1、XML配置文件102的最外层是空的ScriptCommand节点111;
2、XML配置文件102的ScriptCommand节点111下面可以配置多个“命令集”(CommandSet)节点112,“命令集”节点112的名称属性其配置了脚本命令的命令集名称,命令集”的名称属性如:<CommandSet name="mymod">;
3、每个“命令集”节点112下,可以配置多个“命令源”(CommandSource)节点113。“命令源”节点113的名称属性配置了源程序代码名称,在图1的例子中即对应于源程序代码101的包(package)和类(class),为test.Client;其类型属性配置了源程序代码类型,此例中为Java;“命令源”节点113的名称以及类型属性如:<CommandSource name="test.Client"type="Java">;
4、每个“命令源”节点113下,还可以配置多个“命令”(Command)节点114。“命令”对应“命令源”的一个方法对象,“命令”节点114的名称属性配置了脚本命令的命令名名称;“命令”节点114的名称属性如:<Commandname="getvalue">;
5、每个“命令”节点114下,配置了方法对象的信息,如,“方法名”属性配置了源程序代码的方法对象的方法名称:
<Method name="getValue"/>
“参数”属性配置了源程序代码的方法对象的参数属性,包括参数名称、参数类型、参数值,同时“参数”属性也配置了脚本命令的参数列表信息。Param name对应参数名称,type为对应参数类型,value为对应参数值:
<Param name="row"type=”short”value=”1”/>
<Param name="col"type=”short”value=”2”/>
Return type对应返回值类型:
<Return type="int"/>
上述的对各个节点以及节点属性的命名方式并不是唯一的,在此采用了一种便于用户识别和记忆的方式,比如“命令集”节点命名为“CommandSet”,“命令集”节点名称属性为“CommandSet name”。当然,在具体实施时,完全可以采用其它的命名来代表此节点及其属性的意义的。
下表1表示了上述的配置关系:
表1.
XML配置文件 | 源程序代码 | 脚本命令 |
ScriptCommand节点 | ||
“命令集”节点的名称属性 | 脚本命令的命令集名称 | |
“命令源”节点的名称属性 | 源程序代码名称 | |
“命令源”节点的类型属性 | 源程序代码类型 | |
“命令”节点的名称属性 | 脚本命令的命令名名称 | |
“命令”节点的方法名属性 | 源程序代码的方法名称 | |
“命令”节点的参数名属性 | 源程序代码的方法参数名称 | 脚本命令的参数名称 |
“命令”节点的参数类型属性 | 源程序代码的方法参数类型 | 脚本命令的参数类型 |
“命令”节点的参数值属性 | 源程序代码的方法参数值 | 脚本命令的参数值 |
“命令”节点的返回类型属性 | 源程序代码的方法返回类型 |
上面配置方式对应生成的脚本命令103为:“命令集名称.命令名名称(参数列表信息)”,其中“命令集名称.命令名名称”为脚本命令名,比如此例的脚本命令名为:mymod.getvalue。在脚本命令中包含了脚本命令的命令信息,包括了脚本命令的命令集名称、脚本命令的命令名名称以及脚本命令的参数列表信息,而脚本命令的参数列表信息又包括:脚本命令的参数名称、脚本命令的参数类型、脚本命令的参数值。例如:mymod.getvalue(1,2)、mymod.getvalue(col=2,row=1)为合法及等价的脚本命令。比如,用户可以将图1a的XML配置文件102的命令集名修改为:
<CommandSet name="mymod2">
则修改后的配置方式对应生成的脚本命令名为:mymod2.getvalue。
上述的源程序代码的方法信息,包括:源程序代码名称、源程序代码类型、源程序代码的方法名称、源程序代码的方法参数属性,其中源程序代码类型不是必要的方法信息,当采用固定的源程序代码类型时(比如Java),XML配置文件就不需要携带代码类型的信息了,因为此时已经默认知道源程序代码类型了。源程序代码的方法参数属性又包括:源程序代码的方法参数名称、源程序代码的方法参数类型、源程序代码的方法参数值以及源程序代码的方法返回类型,这些源程序代码的方法信息在通过反射方式进行函数调用时会用到。
从图1a的映射关系中可以看出,与现有技术相比,本发明实施例节省了Wrapper封装,编译源程序,和mymod类导入这三个过程。扩展和维护脚本命令时,无需修改Wrapper封装代码,只需要修改XML配置节点的属性项即可,简化二次开发,提高扩展维护效率。
通过XML配置文件的命令映射机制,用户可以自行修改、定义脚本命令名和命令集,不必受限于命令源程序代码的实际方法名称,使脚本引擎更具有灵活性和易用性,便于客户运营维护人员使用。
下面以具体实施例并结合附图对本发明实施例提供的技术方案以及有益效果进行详细说明。
如图2a所示,为本发明实施例的通过脚本命令调用源程序代码的装置的一种结构框图,其中包括:配置文件接收模块201、配置文件解析模块202、脚本命令注册模块203、用户命令接收模块211、用户命令解析模块212、命令映射调用模块213。
其中,配置文件接收模块201、配置文件解析模块202和脚本命令注册模块203组成脚本命令的注册装置。
配置文件接收模块201,用于接收XML配置文件,在XML配置文件中配置有脚本命令的命令信息、脚本命令调用的源程序代码的方法信息。
配置文件解析模块202,用于解析配置文件接收模块201接收的配置文件,从该配置文件中解析获得脚本命令信息和该源程序代码的方法信息。
脚本命令注册模块203,用于根据配置文件解析模块202解析出的所述脚本命令的命令信息生成脚本命令名,根据源程序代码的方法信息生成方法回调对象,将所述脚本命令名与所述方法回调对象对应注册到脚本引擎221的命令列表中。
参阅图2b所示,上述的配置文件解析模块202的一种结构主要包括:
预定义节点识别子模块214,用于识别XML配置文件中各预先定义节点。
获取子模块215,用于在各预定义节点中获取配置的脚本命令信息和该源程序代码的方法信息。
如图2c所示,上述脚本命令注册模块203的一种结构主要包括:
脚本命令生成子模块251,用于根据配置文件解析模块202解析出的脚本命令的命令信息生成脚本命令名。
方法回调对象生成子模块252,用于根据所述配置文件解析模块202解析出的源程序代码的方法信息生成方法回调对象。
注册子模块253,用于将所述脚本命令生成子模块251生成的脚本命令名与所述方法回调对象生成子模块252生成的方法回调对象对应注册到脚本引擎221的命令列表中。
用户命令接收模块211、用户命令解析模块212和命令映射调用模块213组成用户脚本命令调用装置。
其中,用户命令接收模块211,用于接收用户输入的脚本命令;
用户命令解析模块212,用于解析用户命令接收模块211接收的脚本命令,从脚本命令中解析获得脚本命令名和脚本命令的参数列表信息;
命令映射调用模块213,用于根据所述用户命令解析模块212获得的脚本命令名从脚本引擎中获得对应的方法回调对象;根据所述方法回调对象获得源程序代码的方法对象,将所述参数列表信息输入方法对象中并执行方法对象。
如图2d所示,上述命令映射调用模块213的一种结构主要包括:
方法回调对象获得子模块261,用于根据所述用户命令解析模块212获得的脚本命令名从脚本引擎221中获得对应的方法回调对象;
方法对象获得子模块262,用于根据所述方法回调对象获得子模块261获得的方法回调对象获得源程序代码的方法对象;
调用子模块263,用于将所述参数列表信息输入到所述方法对象获得子模块262获得的源程序代码的方法对象中,并调用所述方法对象。
如果用户想通过简单的用户脚本命令去调用源程序代码中的方法对象就必须先经过脚本命令的注册过程,将脚本命令的相关信息注册到脚本引擎221中,以后就可以通过脚本命令的调用过程调用源程序代码中的方法对象。当用户希望修改、扩展脚本命令的时候就只需要改动XML配置文件中的属性项,而不用修改源程序代码并进行编译。
其中,脚本命令的注册过程如图3所示:
步骤S300:用户根据需要调用的源程序代码,配置XML配置文件中的属性项,配置好的XML配置文件对应于脚本命令。配置XML配置文件用户可以手动配置,也可以利用专门的配置工具进行配置。
步骤S301:接收XML配置文件。
步骤S302:解析XML配置文件,将XML配置文件中的属性解析出来,作为配置信息。这些配置信息包括:命令集名、命令源名、命令名、方法名、参数类型、命令集类型、命令的方法信息等。其中命令的方法信息包括方法名、参数列表、返回值等。
解析XML配置文件又具体包括如下步骤:
识别预定义节点,识别XML配置文件中各预先定义的节点;
获取节点中的信息,在各预定义节点中获取配置的脚本命令信息和该源程序代码的方法信息。
步骤S303:根据命令集名、命令名,得到完整的脚本命令名。如命令集名“mymod”,命令名“getvalue”,得到脚本命令名“mymod.getvalue”。
步骤S304:根据命令源以及对应的命令的方法信息(如方法名、参数列表、返回值等),生成一个方法回调对象(CommandInvoker),该对象携带回调方法所需的信息(从“命令源”节点可得到类名、从“命令”节点可得到方法名及参数类型)。比如,根据命令“getvalue”的方法信息生成方法回调对象。
步骤S305:根据源程序代码类型,使用对应该种命令源的注册器(CommandRegister),将完整脚本命令名与方法回调对象注册到哈西(Hash)表中。比如,此例的命令源是“test.Client”。当然,如果采用固定的源程序代码类型,则此步骤就可以直接用固定的注册器进行注册了。
步骤S306:刷新Jython脚本引擎221的命令列表,即将上面哈西表的内容添加到脚本引擎221的命令列表中。
脚本命令调用过程如图4所示:
步骤S401:接收客户端用户输入的脚本命令。比如,此例中的mymod.getvalue(1,2)。
步骤S402:将脚本命令解析为脚本命令名、参数列表信息。比如,此例中解析出脚本命令名“testjave.getvalue”,参数列表信息:(1,2)。
步骤S403:根据脚本命令名查找脚本引擎221的命令列表。如果没有该脚本命令名,执行步骤S408;如果有执行步骤S404。
步骤S404:根据脚本命令名从脚本引擎221中取出对应的方法回调对象(CommandInvoker)。
步骤S405:根据参数列表,与方法回调对象(CommandInvoker)封装的方法的参数列表类型进行比较,进行用户输入参数合法性校验。比如,输入的参数列表为(1,2),可以得知输入参数的类型均为int型,而方法回调对象(CommandInvoker)中注册的参数类型也为int型。类型相同则为校验通过,反之,校验不通过。
步骤S406:判断校验通过与否,若校验通过执行步骤S407;若校验没通过执行步骤S409。
步骤S407:若校验通过,即输入参数类型与注册的参数类型一致,根据Java反射原理调用源程序代码的方法对象,并将输入参数传入方法对象中,输出执行结果。
步骤S408:提示脚本命令名输入错误,执行步骤S410,结束。
步骤S409:提示参数输入错误,执行步骤S410,结束。
步骤S410:结束,完成所述源程序代码的调用。
本发明实施例是基于XML配置脚本命令信息,以Jython作为脚本引擎的。对于通过其它类似的方式配置脚本命令信息,其它Java语言的脚本引擎,本发明实施例具有同样的效果。
本发明实施例由于采用解析出XML配置文件的配置信息、脚本命令名,以及将根据配置信息生成的方法回调对象和脚本命令名注册到脚本引擎的方法,实现了脚本命令与源程序代码之间的映射关系,所以不再需要在源程序代码的外面再进行封装,进而减少了冗余代码量,同时脚本命令函数库开发人员也不需要了解脚本引擎的API函数,降低了二次开发的复杂度。
本发明实施例由于采用向脚本引擎注册XML配置文件的脚本命令名以及根据配置信息生成的方法回调对象的方法,所以实现了脚本命令与源程序代码间的松耦合关系,当用户修改脚本命令的时候无需修改、编译源程序代码,只需修改XML配置文件的属性项,进而达到简化了二次开发,提高扩展维护效率,提高扩展维护的可靠性。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,包括上述实施例方法中的全部或部分步骤,所述的存储介质,如:ROM/RAM、磁碟、光盘等。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (16)
1、一种调用源程序代码的脚本命令注册方法,其特征在于,包括:
接收配置文件,所述配置文件中配置有脚本命令的命令信息、脚本命令调用的源程序代码的方法信息;
解析所述配置文件,从所述配置文件获得脚本命令的命令信息和该源程序代码的方法信息;
根据所述脚本命令的命令信息生成脚本命令名,根据所述源程序代码的方法信息生成方法回调对象;
将所述脚本命令名与所述方法回调对象对应注册到脚本引擎的命令列表中。
2、如权利要求1所述的方法,其特征在于,所述源程序代码的方法信息包括:源程序代码类型。
3、如权利要求2所述的方法,其特征在于,所述将所述脚本命令名与方法回调对象对应注册到脚本引擎命令列表中的方法包括:
使用所述源程序代码类型对应的注册器,将所述脚本命令名及所述方法回调对象注册到脚本引擎的哈西表中;
刷新所述脚本引擎的命令列表,将所述脚本命令名和方法回调对象对应添加到脚本引擎的命令列表中。
4、如权利要求2所述的方法,其特征在于,所述脚本命令的命令信息、脚本命令调用的源程序代码的方法信息配置在配置文件中各预先定义节点中。
5、如权利要求4所述的方法,其特征在于,所述各预先定义节点包括:
所述配置文件的命令集节点,该命令集节点的名称属性定义为所述脚本命令的命令集名称,用于配置脚本命令的命令集名称;
所述配置文件的命令源节点,该命令源节点的名称属性定义为所述源程序代码的名称,用以配置源程序代码的名称;该命令源节点的类型属性定义为所述源程序代码的类型,用以配置源程序代码的类型;
所述配置文件的命令节点,该命令节点的名称属性定义为所述脚本命令的命令名名称,用以配置脚本命令的命令名名称;
所述配置文件的方法节点,该方法节点的名称属性定义为所述源程序代码的方法名称,用以配置源程序代码的方法名称;
所述配置文件的参数节点,该参数节点定义为所述源程序代码的方法参数属性,用以配置源程序代码的方法参数属性;同时所述参数节点还定义为所述脚本命令的参数列表信息,用以同时配置脚本命令的参数列表信息。
6、一种通过脚本命令调用源程序代码的方法,其特征在于,包括:
接收用户输入的脚本命令;
解析所述脚本命令,从所述脚本命令中获得脚本命令名和脚本命令的参数列表信息;
根据所述脚本命令名从脚本引擎中获得对应的方法回调对象;所述脚本命令名与所述对应的方法回调对象是对应注册到所述脚本引擎的命令列表中的;
根据所述方法回调对象获得源程序代码的方法对象;
将所述参数列表信息输入方法对象中并执行所述方法对象,完成所述源程序代码的调用。
7、如权利要求6所述的方法,其特征在于,在所述接收用户输入的脚本命令之前,还包括:
接收配置文件,所述配置文件中配置有脚本命令的命令信息、脚本命令调用的源程序代码的方法信息;
解析所述配置文件,从所述配置文件获得脚本命令的命令信息和该源程序代码的方法信息;
根据所述脚本命令的命令信息生成所述脚本命令名,根据所述源程序代码的方法信息生成所述方法回调对象;
将所述脚本命令名与所述对应的方法回调对象对应注册到所述脚本引擎的命令列表。
8、如权利要求6所述的方法,其特征在于,所述的将所述参数列表信息输入方法对象中包括:
根据所述方法回调对象封装方法的参数类型校验所述参数列表信息中的参数类型,并在确认参数类型相同后将参数列表信息传入所述源程序代码的方法对象接口中。
9、一种调用源程序代码的脚本命令注册装置,其特征在于,包括:
配置文件接收模块,用于接收配置文件,所述配置文件中配置有脚本命令的命令信息、脚本命令调用的源程序代码的方法信息;
配置文件解析模块,用于解析所述配置文件接收模块接收的配置文件,从所述配置文件获得脚本命令的命令信息和该源程序代码的方法信息;
脚本命令注册模块,用于根据所述配置文件解析模块解析出的所述脚本命令的命令信息生成脚本命令名,根据所述源程序代码的方法信息生成方法回调对象,将所述脚本命令名与所述方法回调对象对应注册到脚本引擎的命令列表中。
10、如权利要求9所述的装置,其特征在于,所述配置文件解析模块包括:
预定义节点识别子模块,用于识别所述配置文件中各预先定义节点,其中,所述脚本命令的命令信息、脚本命令调用的源程序代码的方法信息被配置在所述预先定义的各节点中;
获取子模块,用于从所述预定义节点识别子模块识别出的各预定义节点中获得配置的脚本命令的命令信息和该源程序代码的方法信息。
11、如权利要求9所述的装置,其特征在于,所述脚本命令注册模块包括:
脚本命令生成子模块,用于根据所述配置文件解析模块解析出的所述脚本命令的命令信息生成脚本命令名;
方法回调对象生成子模块,用于根据所述配置文件解析模块解析出的所述源程序代码的方法信息生成方法回调对象;
注册子模块,用于将所述脚本命令生成子模块生成的脚本命令名与所述方法回调对象生成子模块生成的方法回调对象对应注册到脚本引擎的命令列表中。
12、一种调用源程序代码的装置,其特征在于,包括:
用户命令接收模块,用于接收用户输入的脚本命令;
用户命令解析模块,用于解析所述用户命令接收模块接收的脚本命令,从所述脚本命令中获得脚本命令名和脚本命令的参数列表信息;
命令映射调用模块,用于根据所述用户命令解析模块获得的脚本命令名从脚本引擎中获得对应的方法回调对象;根据所述方法回调对象获得源程序代码的方法对象,将所述参数列表信息输入方法对象中并执行所述方法对象,完成所述源程序代码的调用;所述脚本命令名与所述对应的方法回调对象是对应注册到所述脚本引擎的命令列表中的。
13、如权利要求12所述的装置,其特征在于,所述命令映射调用模块包括:
方法回调对象获得子模块,用于根据所述用户命令解析模块获得的脚本命令名从脚本引擎中获得对应的方法回调对象;
方法对象获得子模块,用于根据所述方法回调对象获得子模块获得的方法回调对象获得源程序代码的方法对象;
调用子模块,用于将所述参数列表信息输入到所述方法对象获得子模块获得的源程序代码的方法对象中,并执行所述方法对象,完成所述源程序代码的调用。
14、如权利要求12所述的装置,其特征在于,所述装置还包括:注册装置,用于将所述脚本命令名和方法回调对象对应注册到所述脚本引擎中。
15、如权利要求14所述的装置,其特征在于,所述注册装置包括:
配置文件接收模块,用于接收配置文件,所述配置文件中配置有脚本命令的命令信息、脚本命令调用的源程序代码的方法信息;
配置文件解析模块,用于解析配置文件接收模块接收的配置文件,从所述配置文件获得脚本命令的命令信息和该源程序代码的方法信息;
脚本命令注册模块,用于根据配置文件解析模块解析出的所述脚本命令的命令信息生成脚本命令名,根据所述源程序代码的方法信息生成方法回调对象,将所述脚本命令名与所述方法回调对象对应注册到脚本引擎的命令列表中。
16、如权利要求15所述的装置,其特征在于,所述配置文件解析模块包括:
预定义节点识别子模块,用于识别所述配置文件中各预先定义节点,其中,所述脚本命令的命令信息、脚本命令调用的源程序代码的方法信息被配置在所述预先定义的各节点中;
获取子模块,用于从所述预定义节点识别子模块识别出的各预定义节点中获得配置的脚本命令的命令信息和该源程序代码的方法信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007101520658A CN100520718C (zh) | 2007-09-28 | 2007-09-28 | 脚本命令注册方法、调用源程序代码的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007101520658A CN100520718C (zh) | 2007-09-28 | 2007-09-28 | 脚本命令注册方法、调用源程序代码的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101126981A CN101126981A (zh) | 2008-02-20 |
CN100520718C true CN100520718C (zh) | 2009-07-29 |
Family
ID=39095031
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2007101520658A Expired - Fee Related CN100520718C (zh) | 2007-09-28 | 2007-09-28 | 脚本命令注册方法、调用源程序代码的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100520718C (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103559445A (zh) * | 2013-11-07 | 2014-02-05 | 北京奇虎科技有限公司 | 一种应用程序交互控制方法及装置 |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101887375B (zh) * | 2010-06-30 | 2014-04-09 | 中兴通讯股份有限公司 | 一种人机命令***的实现方法及其*** |
CN102244659A (zh) * | 2011-06-30 | 2011-11-16 | 成都市华为赛门铁克科技有限公司 | 安全策略脚本执行方法、装置以及安全策略*** |
CN103488524A (zh) * | 2012-06-13 | 2014-01-01 | 北大方正集团有限公司 | 命令管理装置及其命令管理方法 |
CN103593277A (zh) * | 2012-08-15 | 2014-02-19 | 深圳市世纪光速信息技术有限公司 | 日志处理方法及*** |
CN102929645B (zh) * | 2012-11-23 | 2016-04-27 | 江苏现代造船技术有限公司 | 一种内嵌Python解释器实现软件***二次开发的方法 |
WO2015047365A1 (en) | 2013-09-30 | 2015-04-02 | Hewlett-Packard Development Company, L.P. | Legacy system |
CN103645895B (zh) * | 2013-11-29 | 2016-12-07 | 广州视源电子科技股份有限公司 | 自动配置方法以及云编译*** |
CN105515913A (zh) * | 2015-12-23 | 2016-04-20 | 北京奇虎科技有限公司 | 一种设备性能的监控方法和装置 |
CN107315576A (zh) * | 2016-04-26 | 2017-11-03 | 中兴通讯股份有限公司 | 一种动态扩展软件流程的方法和*** |
CN107168729A (zh) * | 2017-04-11 | 2017-09-15 | 深圳市艾数信息技术有限公司 | 一种服务的调用方法和*** |
CN108897545A (zh) * | 2018-06-29 | 2018-11-27 | 南昌华勤电子科技有限公司 | 代码编译方法及装置 |
CN109101229A (zh) * | 2018-07-26 | 2018-12-28 | 郑州云海信息技术有限公司 | 一种面向对象的代码自动生成方法、装置及设备 |
CN110764779B (zh) * | 2019-10-21 | 2023-09-15 | 百度在线网络技术(北京)有限公司 | 封装方法、注册方法、装置和渲染设备 |
CN111240856B (zh) * | 2020-01-03 | 2024-04-23 | 北京小米移动软件有限公司 | 消息处理方法及装置、存储介质 |
CN112272135B (zh) * | 2020-10-15 | 2022-05-27 | 苏州浪潮智能科技有限公司 | 一种存储软件的邮件发送方法、装置、设备及存储介质 |
-
2007
- 2007-09-28 CN CNB2007101520658A patent/CN100520718C/zh not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103559445A (zh) * | 2013-11-07 | 2014-02-05 | 北京奇虎科技有限公司 | 一种应用程序交互控制方法及装置 |
CN103559445B (zh) * | 2013-11-07 | 2018-03-02 | 北京奇虎科技有限公司 | 一种应用程序交互控制方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101126981A (zh) | 2008-02-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100520718C (zh) | 脚本命令注册方法、调用源程序代码的方法和装置 | |
US7065744B2 (en) | System and method for converting management models to specific console interfaces | |
US7526490B2 (en) | Method of and system for providing positional based object to XML mapping | |
US7676786B2 (en) | System and method and apparatus for using UML tools for defining web service bound component applications | |
US8584104B2 (en) | Compile-time management of polyphasic modules | |
US8275731B2 (en) | Anonymous types for statically typed queries | |
US20050108684A1 (en) | Method and system for generating an application object repository from application framework metadata | |
US7177793B2 (en) | System and method for managing translatable strings displayed on console interfaces | |
US20090006987A1 (en) | Visual design tools for portal content creation | |
MX2007015887A (es) | Flujos de trabajos centricos de datos. | |
WO2000075849A2 (en) | Method and apparatus for data access to heterogeneous data sources | |
US7191404B2 (en) | System and method for mapping management objects to console neutral user interface | |
US7240326B2 (en) | System and method for obtaining display names from management models | |
US20040064825A1 (en) | Method and system for object system interoperability | |
CN101137959A (zh) | 用于跨越远程边界传送计算机可读对象的***和方法 | |
CN102566984A (zh) | 一种配置参数的方法及装置 | |
JP2010525452A (ja) | モデル内の予想されるエンティティ関係の記述 | |
US20100318574A1 (en) | Generating references to reusable code in a schema | |
US20030135661A1 (en) | System and method for packaging and installing management models with specific console interfaces | |
JP5377522B2 (ja) | 公称的に互換性のない型を効率的に相関させること | |
CN116795351A (zh) | 一种软件工具包的生成方法、装置及可读存储介质 | |
Song et al. | Implementation on network teaching system based on Java EE architecture | |
CN103714035B (zh) | 一种用于集成环境的多层软件总线结构 | |
Eels et al. | Aligning patterns to the Wikibase model | |
CN101976255A (zh) | 网页信息批量导出生成word文档的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090729 Termination date: 20150928 |
|
EXPY | Termination of patent right or utility model |