根据用户的需求格式化输出及操作伺服端业务数据的方法

文档序号:6334225阅读:671来源:国知局
专利名称:根据用户的需求格式化输出及操作伺服端业务数据的方法
技术领域
本发明涉及一种自助建站、互联网开放平台、云计算、互联网在线应用服务及 软件开发、软件及服务SAAS、数据交换的方法,更具体地说,涉及一种根据用户的需求 格式化输出及操作伺服端业务数据的方法。
背景技术
随着Facebook通过开放平台而一炮走红,全球各大互联网公司开始竞相推出 自己的开放平台战略,国内外对开放平台的前景一片看好。开放平台(OpenPlatform) 在软件业和网络中,开放平台是指软件系统通过公开其应用程序编程接口(API)或过程 (function)来使外部的程序可以增加该软件系统的功能或使用该软件系统的资源,而不需 要更改该软件系统的源代码。目前开放平台主要通过以下几种技术手段实现平台数据的 开放,与第三方的数据交换,搭建一些和该网站业务相关的应用。(l)REST。REST 是英文 Representational State Transfer 的缩写,中文翻译为“表 述性状态转移”,他是由Roy Thomas Fielding博士在他的论文《Architectural Styles and the Design of Network-based Software Architectures》中提出的一个术语。REST 本身只是
为分布式超媒体系统设计的一种架构风格,而不是标准。REST架构是针对Web应用而设计的,其目的是为了降低开发的复杂性,提高 系统的可伸缩性。REST提出了如下设计准则1.网络上的所有事物都被抽象为资源 (resource) ; 2.每个资源对应一个唯一的资源标识符(resource identifier) ; 3.通过通用的连 接器接口(generic connector interface)对资源进行操作;4.对资源的各种操作不会改变资 源标识符;5.所有的操作都是无状态的(stateless)。REST中的资源所指的不是数据,而是数据和表现形式的组合,比如“最新 访问的10位会员”和“最活跃的10为会员”在数据上可能有重叠或者完全相同,而 由于他们的表现形式不同,所以被归为不同的资源,这也就是为什么REST的全名是 Representational State Transfer 的原因。资源标识符就是 URI (Uniform Resource Identifier), 不管是图片,Word还是视频文件,甚至只是一种虚拟的服务,也不管你是xml格式,txt 文件格式还是其它文件格式,全部通过URI对资源进行唯一的标识。REST是基于Http协议的,任何对资源的操作行为都是通过Http协议来实现。目前,51,校内,海内,阿里软件等都通过REST架构来实现开放平台。(2) Widget 微件,比较典型的例子有 Yahoo !的 Widgets,Google 的 Gadgets 和 Netvibes的UWA等。widget分类很多,作为Internet用户而不是开发者,我们常用的有 用于网页的Web Widget和用于操作系统的Desktop widget两种Web Widget是一种HTML代码,可以嵌入到网页上,举例Yahoo ! widget, iGoogle Gadget,豆辧 API。 Wikipedia web widget 说又称为 badge, module, webjit, capsule, snippet, mini and flake.DHTML, JavaScript, Adobe Flash。Desktop widget 是运行在 PC 操作系统上的微件,例如 Apple dashboard widget,Windows Sidebar and gadgets, Google desktop sidebar (Google 桌面搜索侧栏)上的一个一 个小应用,通常涉及到一个概念widget engine,即widget的运行环境。(3)OpenSocial。OpenSocial为构建跨多个网站的社交应用程序提供了一组通用 API。开发人员可以使用标准JavaScript和HTML创建应用程序,用以访问社交网络里的 朋友并更新对应的Feeds。Opensocial为社交网站提供了一套统一的社交网络框架与开发 模型。(4)Mashup是糅合,是当今网络上新出现的一种网络现象,将两种以上使用公 共或者私有数据库的web应用,加在一起,形成一个整合应用。(5)云计算,Google 的 App Engine 和 Amazon 的 EC2 和 S3 等。

发明内容
本发明的目的是提供一种能够实现在线开发,服务商拓展应用服务便捷,代码 灵活,服务商开放数据接口(API)更容易,基于该脚本语言与云计算模式,应用服务系 统之间的数据交换、服务整合、协同应用灵活而且规范的根据用户的需求格式化输出及 操作伺服端业务数据的方法。本发明的技术方案是这样的一种根据用户的需求格式化输出及操作伺服端业务数据的方法,方法如下(1)选定脚本语言及脚本语言执行引擎;(2)用户使用上述的语言根据业务需求编写脚本代码;(3)客户端把脚本代码发送或保存到伺服端;(4)由伺服端脚本语言执行引擎执行上述的脚本代码;(5)执行的结果数据输出返回给客户端。所述的脚本语言是格式化脚本语言(GScript)。所述的执行引擎是格式化脚本语言执行引擎(GScriptEngine),用于接收传入的 脚本代码,结合缓存会话(context)与请求(request)进行解析、执行代码,在解析执行过 程中根据代码指令依次封装输出用户所需的数据。所述的缓存会话(context)存储引用操作结构化/非结构化数据库的指针、引用 操作文件/缓存数据/其它数据资源的指针、弓I用操作CPU/其它硬件设备的指针,以及 存储在代码过程中根据用户指令临时产生的变量。所述的请求(request)存储页面请求的参数名与参数值。所述的格式化脚本语言执行引擎(GScriptEngine)入口参数主要包含脚本代码输 入流(inputstream)、缓存会话(context)、请求(request)、输出编码(encoding)、结果数据 输出流(outputstream)、启用调试模式(debug)。所述的格式化脚本语言执行引擎解析代码的算法是变_分的方法,所述的变是 指文本字符串不断的经过匹配替换而变成新的字符串,所述的分是指被替换的字符串进 行分隔演变成多个新的字符串,算法按变_分-变-分-变循环处理。所述的格式化脚本语言执行引擎处理代码的过程步骤如下(1)将脚本代码输入流转换成文本字符串;(2)根据脚本指令函数语法变_分处理依次形成指令函数集合;
5
(3)按顺序依次执行指令函数;(4)指令函数计算的结果根据指令函数的特性依次封装输出用户所需的数据。所述的指令函数顺序为先执行其函数参数集合,而后依次执行函数体内部的 子指令函数。指令函数参数集合执行时,对参数字符串进行分处理,依次分割成多个参数字 符串,然后进行变处理。所述的执行的结果数据的格式基于用户编写的脚本代码指令。所述的业务数据的输出内容及格式可以是XML、JSON、XML+XSL、 XML+XSLT。脚本代码发送或保存到伺服端的步骤是由服务商提供入口,通过网络传送或 保存至伺服端;当客户端请求访问脚本代码时伺服端会自动调用脚本语言执行引擎对其 解析、执行,并返回结果数据。通过指令函数调用引用指针的属性或方法对业务数据进行操作,将执行的结果 数据再通过指令函数格式化输出。基于脚本语言扩展开放数据接口(API),可以通过扩展指令函数,或通过在缓存 会话(context)中引入对象指针的方式很容易扩展数据接口,或定义类名使用assign指令 函数构造类对象。脚本代码在伺服端的信任采用PKI安全体系及技术。伺服端解析执行脚本代码的安全防护方法可以如下(1)引擎本身确保解析过程的安全,指令函数执行的安全,采用的方法为白盒测 试、黑盒测试;或(2)引用的对象指针使用安全策略文件限定可访问的属性与方法;或(3)在脚本语言执行引擎的运行时环境环境中加入安全策略;或(4)监控脚本代码的解析执行情况。所述的安全策略可以是(1)使用沙盒,让脚本代码解析执行在受限的沙盒中运行;或(2)处理时长计时,控制解析执行脚本代码的时间,达到限制时间后,处理将中 断;或(3)限制脚本代码的文件大小、语句数量;或(4)限制临时变量缓存的数量及大小,或者使用硬盘缓存策略;或(5)利用线程空闲及睡眠sleep控制CPU占用率;或(6)控制存在循环因素的指令函数被循环调用的次数;或(7)采用虚拟机。本发明的有益效果如下(1)沿袭开发者使用代码编写程序的习惯,开辟软件开发新模式——在线开发 开发者在浏览器上就可以编码、测试、完成应用开发。(2)之所以称之为脚本,即无需在伺服端上进行部署,非常便捷的为服务商拓展 应用服务。(3)代码的灵活性更加灵活满足用户多变的需求。
(4)基于该脚本语言更容易使得服务商开放数据接口(API)。(5)云计算模式用户即可通过网络以按需、易扩展的方式——脚本获得所需的 资源。用户端只需要编写需求脚本以及展现数据,把计算交给服务器。使得用户终端简 化成一个单纯的输入输出设备,且按需享受服务器端(“云”)的强大计算处理能力。(6)通过脚本非常灵活而且规范的实现多个应用服务系统之间的数据交换、服务 整合、协同应用等。


图1是本发明实现平台数据的开放,完成与第三方的数据交换的示意图。 图2是本发明实施例的效果图。
具体实施例方式下面结合实施例对本发明进行进一步详细说明一种根据用户的需求格式化输出及操作伺服端业务数据的方法,方法如下(1)选定脚本语言及脚本语言执行引擎;(2)用户使用上述的语言根据业务需求编写脚本代码;(3)客户端把脚本代码发送或保存到伺服端;(4)由伺服端脚本语言执行引擎执行上述的脚本代码;(5)执行的结果数据输出返回给客户端。所述的脚本语言是格式化脚本语言(GScript)。所述的执行引擎是格式化脚本语言执行引擎(GScriptEngine),用于接收传入的 脚本代码,结合缓存会话(context)与请求(request)进行解析、执行代码,在解析执行过 程中根据代码指令依次封装输出用户所需的数据。所述的缓存会话(context)存储引用操作结构化/非结构化数据库的指针、引用 操作文件/缓存数据/其它数据资源的指针、弓I用操作CPU/其它硬件设备的指针,以及 存储在代码过程中根据用户指令临时产生的变量。所述的请求(request)存储页面请求的参数名与参数值。所述的格式化脚本语言执行引擎(GScriptEngine)入口参数主要包含脚本代码输 入流(inputstream)、缓存会话(context)、请求(request)、输出编码(encoding)、结果数据 输出流(outputstream)、启用调试模式(debug)。所述的格式化脚本语言执行引擎解析代码的算法是变_分的方法,所述的变是 指文本字符串不断的经过匹配替换而变成新的字符串,所述的分是指被替换的字符串进 行分隔演变成多个新的字符串,算法按变_分-变-分-变循环处理。所述的格式化脚本语言执行引擎处理代码的过程步骤如下(1)将脚本代码输入流转换成文本字符串;(2)根据脚本指令函数语法变_分处理依次形成指令函数集合;(3)按顺序依次执行指令函数;(4)指令函数计算的结果根据指令函数的特性依次封装输出用户所需的数据。所述的指令函数顺序为先执行其函数参数集合,而后依次执行函数体内部的 子指令函数。
指令函数参数集合执行时,对参数字符串进行分处理,依次分割成多个参数字 符串,然后进行变处理。所述的执行的结果数据的格式基于用户编写的脚本代码指令。所述的业务数据的输出内容及格式可以是XML、JSON、XML+XSL、 XML+XSLT。脚本代码发送或保存到伺服端的步骤是由服务商提供入口,通过网络传送或 保存至伺服端;当客户端请求访问脚本代码时伺服端会自动调用脚本语言执行引擎对其 解析、执行,并返回结果数据。通过指令函数调用引用指针的属性或方法对业务数据进行操作,将执行的结果 数据再通过指令函数格式化输出。基于脚本语言扩展开放数据接口(API),可以通过扩展指令函数,或通过在缓存 会话(context)中引入对象指针的方式很容易扩展数据接口,或定义类名使用assign指令 函数构造类对象。脚本代码在伺服端的信任采用PKI安全体系及技术。伺服端解析执行脚本代码的安全防护方法可以如下(1)引擎本身确保解析过程的安全,指令函数执行的安全,采用的方法为白盒测 试、黑盒测试;或(2)引用的对象指针使用安全策略文件限定可访问的属性与方法;或(3)在脚本语言执行引擎的运行时环境环境中加入安全策略;或(4)监控脚本代码的解析执行情况。引擎本身解析的过程,经过(1)严格测试,以及(2)对变分方法每个环节进行验 证确保解析过程的安全。另外其解析过程仍然受限在第15所述的安全策略中。指令函数执行的安全,也是类似,(1)严格测试(2)对输入的参数进行严格验证 确保执行的安全。针对测试,采用黑盒测试。通过使用整个软件或某种软件功能来严格地测试, 而并没有通过检查程序的源代码或者很清楚地了解该软件或某种软件功能的源代码程序 具体是怎样设计的。测试人员通过输入他们的数据然后看输出的结果从而了解软件怎样 工作。通常测试人员在进行测试时不仅使用肯定出正确结果的输入数据,而且还会使用 有挑战性的输入数据以及可能结果会出错的输入数据以便了解软件怎样处理各种类型的 数据。针对验证,采用白盒测试。通过程序的源代码进行测试而不使用用户界面。这 种类型的测试需要从代码句法发现内部代码在算法,溢出,路径,条件等等中的缺点或 者错误,进而加以修正。另外其执行过程还受限在如下安全策略中。在脚本语言执行引擎的运行时环境环境中加入的安全策略可以是(1)使用沙盒,让脚本代码解析执行在受限的沙盒中运行;或(2)处理时长计时,控制解析执行脚本代码的时间,达到限制时间后,处理将中 断;或(3)限制脚本代码的文件大小、语句数量;或
(4)限制临时变量缓存的数量及大小,或者使用硬盘缓存策略;或(5)利用线程空闲及睡眠sleep控制CPU占用率;或(6)控制存在循环因素的指令函数被循环调用的次数;或(7)采用虚拟机。如图1所示,实现平台数据的开放,完成与第三方的数据交换,满足搭建一些 和该网站业务相关的应用需求。客户端,或称为用户端(Client)。在计算机的世界里,凡是提供服务的一方我们 称为伺服端(Server),而接受服务的另一方我们称作客户端(Client)。因此这里所指的客 户端不局限于浏览器。如果一个伺服端相对于另外一个伺服端是请求或接受服务的话, 那么这个伺服端也被认为是另一个伺服端的客户端。这里所指的客户端与伺服端所处的硬件设备不局限于计算机,还应包括嵌入式 设备等。格式化脚本语言,所谓格式化,其意目的就在于按照用户的意图格式化输出数 据。因此我们为这种脚本语言提供了指令函数,能够以XML的格式按照用户的需要将伺 服端的各种数据资源进行计算并输出。这就是与其它语言有着很大的不同。现版本已升 级到2.0.5版本。GScript脚本主要以代码为形式,类似于js脚本,脚本文件则以.gs为后缀。GScript脚本还存在XML的形式,但不推荐开发者使用,仅用于约束规范。其 脚本文件以.gsxml为后缀。GScript脚本由指令函数、操作符、运算函数构成,其中指令函数为主体。 GScript脚本代码指令实际上就是一系列指令函数的集合。所以GScript代码指令的形式 非常简单,为<函数名 >(〈函数参数1>,<函数参数2>,……){<函数体>};指令函数使用;作为结束符。函数名后面的参数是用0包裹起来,多个参数 之间用,隔开。并非所有函数都有参数。如无参数则0可省略。函数体用 包裹起 来。函数体内部则可书写多个指令函数。并非所有函数都有函数体。如无函数体则 可省略。脚本语言执行引擎(GScriptEngine)的核心作用在于接收传入的脚本代码,结合 缓存会话(context)与请求(request)进行解析、执行代码,在解析执行过程中根据代码指 令依次封装输出用户所需的数据。a)缓存会话(context)存储引用操作结构化/非结构化数据库的指针、引用操作 文件/缓存数据/其它数据资源的指针、引用操作CPU/其它硬件设备的指针等等。以 及存储在代码过程中根据用户指令临时产生的变量。b)请求(request)存储页面请求的参数名与参数值。GScriptEngine入口参数主要为脚本代码输入流(inputstream)、缓存会话 (context)、请求(request)、输出编码(encoding)、结果数据输出流(outputstream)、启用 调试模式(debug)。
示例JAVA代码
voidwrite(
//脚本代码输入流(inputstream)[Ol 24]java.io.InputStream is,[Ol 25]//缓存会话(context)[Ol 26]java.util.Map<String,Object>context,
//请求(request)[Ol 28]com.onegrid.grid.platform.gscript.HGScriptRequest request,
//输出编码(encoding)[Ol 303String encoding,[Ol 31]//结果数据输出流(outputstream)[Ol 32]java.io.OutputStream OS,
//启用调试模式(debug)[Ol 343boolean debug
35])throws HGSCriptEXCeption;
GScriptEngine解析代码的算法是采用变一分的方法。
a)变是指文本字符串不断的经过匹配替换而变成新的字符串。
例如文本中用()包裹起来的,或者用{}包裹起来的,或者用[]包裹起来的被替换成新的字符串例如#(0_0)。
b)分是指被替换的字符串经过, ; 一等进行分隔演变成多个新的字符串。
例如文本中用()包裹起来的字符串其被,进行分隔成多个新的字符串。,常用于参数分隔, ;常用于语句分隔,一常用于范围分隔。[Ol 39] 依次变一分一变一分一变如是处理。
GScriptEngine处理代码的过程步骤如下
a)将脚本代码输入流转换成文本字符串。
此过程中过滤注释语句。
b)根据脚本指令函数语法函数名(函数参数集合){函数体}进行对(){}进行变以及对;进行分依次形成指令函数集合。
这里仅对第一层()做变,对()的内部()不做任何变化。
而对{}及其内部{}均做变。;根据语法仅存在函数体内。
由此函数体内通过;分隔形成了多个子指令函数。
assign(“a”, “/default/entity/ThingQueryHelper”){
453setProperty(“pagesize”,20);[Ol 46]setProperty( “CUlTOW”,0);
}[Ol 48] 处理时变化如下
0 assign#(0_0)#{o一0}一整句,对(){}变
l0一#{o—o},对;分[Ol 51] 20一setProperty#(O一1) 一对()变
30一setProperty#(O一2) 一对()变
c)按顺序依次执行指令函数。指令函数先执行其函数参数集合,而后依次函数 体内部的子指令函数。d)指令函数参数集合执行时,对0内的参数字符串对,进行分则依次被分割成 多个参数字符串,然后对内部的0进行变。参数字符串根据脚本操作符语法以及优先 级、脚本运算函数进行计算。计算后的结果依次作为该指令函数的参数。对于[]数组范 围也如是处理。示例assign( “a”,((1+2)+3));处理时执行如下0 assign#(0_0) 一整句,对()变1I一#(0_0),对,分以及对内部()变2 卜“a” 一计算结果字符串a3 |-#(0_1) 一对字符串(1+2)+3 内部()再变4I 一 #{0_2}+35 卜 #(0_2)—1+26 卜3—计算结果数字37卜3—计算结果数字3e)指令函数计算的结果根据指令函数的特性依次封装输出用户所需的数据。例 如out指令函数专用于输出结果数据。并不是所有的指令函数都具备封装输出结果数据的 特性。输出的结果数据根据指令函数上下关系存在一定的格式规范例如XML。这种格 式很容易在客户端被解析处理。GScriptEngine使用@操作符引用缓存会话(context)存储的各种指针与变量。指
针或变量被引用时可使用.操作符取其属性或执行方法。获取后的属性值或执行方法后的 结果同是可通过使用.操作符被取其属性或执行方法。示例以下context为缓存会话(context)存储的引用事务会话的指针1 @context.actionLanguage一 actionLanguage 为 context 的属'性2 @context.pageLink( “1234567890” ) 一 pageLink 为 context 的方法3 @context.sessionContext.logged 一 sessionContext 为 context 的属性— logged 为属性 sessionContext 的属性4 @context.transfer.stringldentity ( “1234567890” ) 一 transfer 为 context 的属 性— stringldentity 为属性transfer 的方法5 @context.transfer.hadoopFile ( “1234567890” ) .accessLink— transfer 为 context 的属性— hadoopFile 为属性 transfer 的方法— accessLink为属性transfer的方法hadoopFile执行后的结果对象指针的属性以上方式为服务商扩展开放数据接口(API)提供了基础。
·可限定属性与方法的特性,例如在JAVA代码中通常会使用JAVABEAN的特 性,限定属性与方法只能取getXxx,isXxx形式的。·也可通过安全策略policy文件限定哪些属性与方法能被获取或执行。该文件 可根据具体需求进行自定义。示例< ? xml version=" 1.0〃 ? >〈policy〉〈deny class=" java.lang.Class" mode=" GET" />〈/policy〉以上策略文件限定JAVA代码中java.lang.dass下的所有属性与方法都不能被获取
或执行。GScriptEngine使用$操作符获取页面请求(request)的参数值。示例1 SparamName —获取请求参数参数名为paramName的参数值GScriptEngine当在指针名、变量名、参数名前都不加$操作符与@操作符时, 默认先以参数名的形式从请求(request)中获取参数值,而后在缓存会话(context)中获取 引用的指针或变量。脚本代码如何发送或保存到伺服端。由服务商提供入口,可通过网络(例如HTTP、FTP)传送至伺服端。当客户端 请求访问该脚本代码时伺服端会自动调用脚本语言执行引擎对其解析、执行,并返回结 果数据。输出业务数据。业务数据的输出内容及格式基于用户编写的脚本代码指令,极大程度上提供了 数据获取的灵活性。格式化脚本语言GScript默认提供输出格式为XML。XML即扩展 标记语言,是一种简单的数据存储语言,使用一系列简单的标记描述数据,极其简单易 于掌握和使用。它的简单使其易于在任何应用程序中读写数据,这使XML很快成为数据 交换的唯一公共语言。示例out( “bookstore,,){out( “book,,){out( “title,,, "C++Programming Language");}}输出的结果为< ? xml version=,,1.0” ? ><data>〈bookstore〉<book><title>C++Programming Language</title>
</book></bookstore></data>XML格式的数据很容易跟其它任何一种应用程序进行交互。而且结合XSL (可 扩展样式表语言)很容易转换成其它格式文档例如HTML、XHTML或者文本。我们在 公司研发的格子平台上就充分应用了 XML+XSLT。(5)操作业务数据。通过指令函数例如void调用引用指针的属性或方法从而达到添加、删除、修改 业务数据的目的。将执行的结果数据再通过指令函数格式化输出。(6)基于脚本语言扩展服务商开放数据接口(API)。服务商可以通过①扩展指令函数,或②通过在缓存会话(context)中引入对象指 针的方式很容易扩展数据接口(API),或③定义类名使用assign指令函数构造类对象。 我们目前已在公司研发的格子平台上①扩展ess (为网页加载样式文件)、js (为网页加载 javascript脚本文件)、text (获取国际化语言)等指令函数,②也以插件(plugin)形式提 供email(邮件发送)、xml(XML格式文档处理)的功能应用,③同时也提供了很多的类 名例如查询器” /default/entity/ThingQueryHelper” 构造类对象。脚本代码在伺服端的信任。采用现有公认的PKI安全体系及技术就可有效解决脚本代码在伺服端的信任问题。伺服端解析执行脚本代码的安全防护。伺服端解析执行脚本代码的安全与引用的对象指针有关,与脚本语言执行引擎
等有关。(1)引擎本身确保解析过程的安全,指令函数执行的安全。(2)引用的对象指针可以使用安全策略文件限定可访问的属性与方法。(3)脚本语言执行引擎。其所在的运行时环境例如JAVA语言其所需JVM虚拟 机。(4)可在运行时环境中加入安全策略。(4.1)使用沙盒。让脚本代码解析执行在受限的沙盒中运行。(4.3)处理时长计时。控制解析执行脚本代码的时间。达到限制时间后,处理 将中断。(4.4)限制脚本代码的文件大小、语句数量。(4.5)限制临时变量缓存的数量及大小,或者使用硬盘缓存策略。(4.6)利用线程空闲及睡眠sleep控制CPU占用率。(4.7)控制存在循环因素的指令函数被循环调用的次数。(4.8)采用虚拟机。(4.9)其它安全措施。(5)监控脚本代码的解析执行情况,辅助安全防护。本发明流程中对应的信息输入、输出如下1、编写脚本代码;
2、XML格式输出;3、脚本代码运行时GScriptEngine解析与执行的调试信息;4、使用以下XLST转换GScript输出的XML格式数据;5、转换后的效果图,如图2所示。以上所述的仅是本发明的优选实施方式,应当指出,对于本技术领域中的普通 技术人员来说,在不脱离本发明核心技术特征的前提下,还可以做出若干改进和润饰, 这些改进和润饰也应视为本发明的保护范围。
权利要求
1.一种根据用户的需求格式化输出及操作伺服端业务数据的方法,其特征在于,方 法如下(1)选定脚本语言及脚本语言执行引擎;(2)用户使用上述的语言根据业务需求编写脚本代码;(3)客户端把脚本代码发送或保存到伺服端;(4)由伺服端脚本语言执行引擎执行上述的脚本代码;(5)执行的结果数据输出返回给客户端。
2.根据权利要求1所述的方法,其特征在于,所述的脚本语言是格式化脚本语言 (GScript)。
3.根据权利要求1所述的方法,其特征在于,所述的执行引擎是格式化脚本语言 执行引擎(GScriptEngine),用于接收传入的脚本代码,结合缓存会话(context)与请求 (request)进行解析、执行代码,在解析执行过程中根据代码指令依次封装输出用户所需 的数据。
4.根据权利要求3所述的方法,其特征在于,所述的缓存会话(context)存储引用操 作结构化/非结构化数据库的指针、引用操作文件/缓存数据/其它数据资源的指针、 引用操作CPU/其它硬件设备的指针,以及存储在代码过程中根据用户指令临时产生的变量。
5.根据权利要求3所述的方法,其特征在于,所述的请求(request)存储页面请求的参数名与参数值。
6.根据权利要求3所述的方法,其特征在于,所述的格式化脚本语言执行引擎 (GScriptEngine)入口参数主要包含脚本代码输入流(inputstream)、缓存会话(context)、 请求(request)、输出编码(encoding)、结果数据输出流(outputstream)、启用调试模式 (debug)。
7.根据权利要求3所述的方法,其特征在于,所述的格式化脚本语言执行引擎解 析代码的算法是变-分的方法,所述的变是指文本字符串不断的经过匹配替换而变成 新的字符串,所述的分是指被替换的字符串进行分隔演变成多个新的字符串,算法按 变-分-变-分-变循环处理。
8.根据权利要求3所述的方法,其特征在于,所述的格式化脚本语言执行引擎处理代 码的过程步骤如下(1)将脚本代码输入流转换成文本字符串;(2)根据脚本指令函数语法变_分处理依次形成指令函数集合;(3)按顺序依次执行指令函数;(4)指令函数计算的结果根据指令函数的特性依次封装输出用户所需的数据。
9.根据权利要求8所述的方法,其特征在于,所述的指令函数顺序为先执行其函 数参数集合,而后依次执行函数体内部的子指令函数。
10.根据权利要求9所述的方法,其特征在于,指令函数参数集合执行时,对参数字 符串进行分处理,依次分割成多个参数字符串,然后进行变处理。
11.根据权利要求1所述的方法,其特征在于,所述的执行的结果数据的格式基于用 户编写的脚本代码指令。
12.根据权利要求11所述的方法,其特征在于,所述的业务数据的输出内容及格式可 以是 XML、JSON、XML+XSL、XML+XSLT。
13.根据权利要求1所述的方法,其特征在于,脚本代码发送或保存到伺服端的步骤 是由服务商提供入口,通过网络传送或保存至伺服端;当客户端请求访问脚本代码时 伺服端会自动调用脚本语言执行引擎对其解析、执行,并返回结果数据。
14.根据权利要求1所述的方法,其特征在于,通过指令函数调用引用指针的属性或 方法对业务数据进行操作,将执行的结果数据再通过指令函数格式化输出。
15.根据权利要求1所述的方法,其特征在于,基于脚本语言扩展开放数据接口 (API),可以通过扩展指令函数,或通过在缓存会话(context)中引入对象指针的方式很 容易扩展数据接口,或定义类名使用assign指令函数构造类对象。
16.根据权利要求1所述的方法,其特征在于,脚本代码在伺服端的信任采用PKI安 全体系及技术。
17.根据权利要求1所述的方法,其特征在于,伺服端解析执行脚本代码的安全防护 方法可以如下(1)引擎本身确保解析过程的安全,指令函数执行的安全,采用的方法为白盒测试、 黑盒测试;或(2)引用的对象指针使用安全策略文件限定可访问的属性与方法;或(3)在脚本语言执行引擎的运行时环境环境中加入安全策略;或(4)监控脚本代码的解析执行情况。
18.根据权利要求17所述的方法,其特征在于,所述的安全策略可以是(1)使用沙盒,让脚本代码解析执行在受限的沙盒中运行;或(2)处理时长计时,控制解析执行脚本代码的时间,达到限制时间后,处理将中断;或(3)限制脚本代码的文件大小、语句数量;或(4)限制临时变量缓存的数量及大小,或者使用硬盘缓存策略;或(5)利用线程空闲及睡眠sleep控制CPU占用率;或(6)控制存在循环因素的指令函数被循环调用的次数;或(7)采用虚拟机。
全文摘要
本发明涉及一种根据用户的需求格式化输出及操作伺服端业务数据的方法。方法如下(1)选定脚本语言及脚本语言执行引擎;(2)用户使用上述的语言根据业务需求编写脚本代码;(3)客户端把脚本代码发送或保存到伺服端;(4)由伺服端脚本语言执行引擎执行上述的脚本代码;(5)执行的结果数据输出返回给客户端。能够实现在线开发,服务商拓展应用服务便捷,代码灵活,服务商开放数据接口(API)更容易,基于该脚本语言与云计算模式,应用服务系统之间的数据交换、服务整合、协同应用灵活而且规范的根据用户的需求格式化输出及操作伺服端业务数据的方法。
文档编号G06F9/44GK102023856SQ201010514918
公开日2011年4月20日 申请日期2010年10月21日 优先权日2010年10月21日
发明者任浙东 申请人:杭州万格网络科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1