CN1867897A - 扩展基于脚本的应用程序的能力和执行效率的系统和方法 - Google Patents
扩展基于脚本的应用程序的能力和执行效率的系统和方法 Download PDFInfo
- Publication number
- CN1867897A CN1867897A CN200480029912.6A CN200480029912A CN1867897A CN 1867897 A CN1867897 A CN 1867897A CN 200480029912 A CN200480029912 A CN 200480029912A CN 1867897 A CN1867897 A CN 1867897A
- Authority
- CN
- China
- Prior art keywords
- module
- terminal
- performance element
- service
- workflow
- 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.)
- Granted
Links
- 238000013515 script Methods 0.000 title claims abstract description 69
- 238000000034 method Methods 0.000 title claims abstract description 58
- 230000009471 action Effects 0.000 claims abstract description 9
- 230000008569 process Effects 0.000 claims description 14
- 238000004891 communication Methods 0.000 claims description 10
- 230000007935 neutral effect Effects 0.000 claims description 5
- 238000004590 computer program Methods 0.000 claims description 4
- 230000002045 lasting effect Effects 0.000 claims description 3
- 238000010276 construction Methods 0.000 claims 6
- 230000004048 modification Effects 0.000 claims 4
- 238000012986 modification Methods 0.000 claims 4
- 230000002452 interceptive effect Effects 0.000 claims 2
- 230000006870 function Effects 0.000 abstract description 27
- 238000012545 processing Methods 0.000 abstract description 11
- 230000008878 coupling Effects 0.000 abstract 1
- 238000010168 coupling process Methods 0.000 abstract 1
- 238000005859 coupling reaction Methods 0.000 abstract 1
- 238000007726 management method Methods 0.000 description 8
- 230000006399 behavior Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000000712 assembly Effects 0.000 description 2
- 238000000429 assembly Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 150000001875 compounds Chemical group 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000000116 mitigating effect Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/329—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
基于脚本语言的应用程序受限于提供和执行复杂逻辑和复合处理的能力。多数传统编程语言包含显式函数和/或程序调用,以实现更复杂的功能,然而,这些语言使用更复杂的语法,并且一般需要使用更复杂的编程知识。提供了用于扩展由终端执行的应用程序的能力的系统和方法。该应用程序包括基于脚本的工作流程和非可执行内容。一种这样的方法包括:加载由脚本解释器解释的工作流程,使得工作流程被配置为具有多个可执行单元。该方法还提供了由可执行单元引用的全局符号结构,所述全局符号结构包括用于使选定的可执行单元与相应外部组件相连的寻址。由终端的本地运行时间环境提供外部组件,用于执行由选定的可执行单元所指定的动作。该方法还依次执行可执行单元,从而通过全局符号结构的相应全局符号,将选定的执行单元的执行重定向到各个外部组件。由运行时间环境和应用程序的工作流程共享全局符号结构的内容的预定知识。
Description
技术领域
本发明涉及基于脚本的应用程序的执行。
背景技术
今天,使用越来越多的终端设备,例如移动电话、具有无线通信能力的PDA、个人计算机、自助服务亭和双向寻呼机。在这些设备上运行的软件应用程序增加了它们的实用性。例如,移动电话可以包括针对城市范围检索天气的应用程序,或者PDA可以包括允许用户购买杂货的应用程序。这些软件应用程序利用与网络的连接给用户提供及时和有用的服务。然而,由于一些设备的有限资源,开发用于多种设备的软件应用程序仍然是困难并且耗时的工作。
基于脚本语言的应用程序受限于提供并执行复杂逻辑和复合处理的能力。多数传统编程语言包含显式函数和/或程序调用,以实现更复合的功能。然而,这些语言使用更复杂的语法,并且一般需要使用更复杂的编程知识。
传统编程语言的另一个缺点在于这些语言对于用于执行应用程序的平台不是完全中性的。当前的脚本语言(例如JavaScript)和传统的编程语言(例如C++)的另一个缺点在于语言的编程能力不是可扩展的。
公开了可扩展的基于脚本的系统和方法,以消除或缓和至少一部分上述缺点。
发明内容
基于脚本语言的应用程序受限于提供和执行复杂逻辑和复合处理的能力。多数传统编程语言包含显式函数和/或程序调用,以实现更复杂的功能,然而,这些语言使用更复杂的语法,并且一般需要使用更复杂的编程知识。传统编程语言的另一个缺点在于这些语言对于用于执行应用程序的平台不是完全中性的。与当前用于实现基于脚本的工作流程的系统和方法相反,提供了用于扩展由终端执行的应用程序的能力的系统和方法。该应用程序包括基于脚本的工作流程和非可执行内容。一种这样的方法包括:加载由脚本解释器解释的工作流程,使得工作流程被配置为具有多个可执行单元。该方法还提供了由可执行单元引用的全局符号结构,所述全局符号结构包括用于使选定的可执行单元与相应外部组件相连的寻址。由终端的本地运行时间环境提供外部组件,用于执行由选定的可执行单元所指定的动作。该方法还依次执行可执行单元,从而通过全局符号结构的相应全局符号,将选定的执行单元的执行重定向到各个外部组件。由运行时间环境和应用程序的工作流程共享全局符号结构的内容的预定知识。
公开了一种方法,用于扩展由终端执行的应用程序的能力,所述应用程序包括基于脚本的工作流程和非可执行内容,所述方法包括步骤:加载由脚本解释器解释的工作流程,工作流程被配置为具有多个可执行单元;提供由可执行单元引用的全局符号结构,所述全局符号结构包括用于使选定的可执行单元与相应外部组件相连的寻址,由终端的本地运行时间环境提供外部组件,用于执行由选定的可执行单元所指定的动作;以及依次执行可执行单元,从而通过全局符号结构的相应全局符号,将选定的执行单元的执行重定向到各个外部组件;其中,由运行时间环境和应用程序的工作流程共享全局符号结构的内容的预定知识。
还公开了一种终端,配置用于扩展由本地运行时间环境执行的应用程序的能力,所述应用程序包括基于脚本的工作流程和非可执行内容,所述终端包括:脚本解释器,用于解释工作流程,所述工作流程被配置为具有多个可执行单元;全局符号结构,配置用于由可执行单元引用,全局符号结构包括用于使选定的可执行单元与相应外部组件相连的寻址,由终端的本地运行时间环境提供外部组件,用于执行由选定的可执行单元所指定的动作;代理重定向模块,用于在执行工作流程期间重定向选定的执行单元,通过全局符号结构的相应全局符号,将选定的执行单元重定向到各个外部组件;其中,由运行时间环境和应用程序的工作流程共享全局符号结构的内容的预定知识。
还提供了一种计算机程序产品,用于扩展由终端的本地运行时间环境执行的应用程序的能力,所述应用程序包括基于脚本的工作流程和非可执行内容,所述计算机程序产品包括:计算机可读介质;脚本解释模块,存储在计算机可读介质上,用于解释工作流程,工作流程被配置为具有多个可执行单元;全局符号结构,存储在计算机可读介质上,配置用于由可执行单元引用,全局符号结构包括用于使选定的可执行单元与相应外部组件相连的寻址,由终端的本地运行时间环境提供外部组件,用于执行由选定的可执行单元所指定的动作;代理重定向模块,与全局符号结构相连,用于在执行工作流程期间重定向选定的执行单元,通过全局符号结构的相应全局符号,将选定的执行单元重定向到各个外部组件;其中,由运行时间环境和应用程序的工作流程共享全局符号结构的内容的预定知识。
附图说明
在下面参考附图的详细描述中,这些及其他特征将变得显而易见,图中:
图1是网络系统的方框图;
图2是图1所示的通用终端的方框图;
图3示出了图2所示的终端的处理框架;
图4示出了图3所示的应用程序的应用程序空间的表示;以及
图5是图4所示的脚本的示例工作流程“getCompanyInfo”。
具体实施方式
网络系统
参考图1,网络系统10包括用于经由相连的广域网(WAN)104(例如但不局限于因特网)与服务器106所访问的一个或多个应用程序服务器110进行交互的多个终端100,服务器106可以是管理服务器。终端经由服务器106在网络104上从应用程序服务器110接收应用程序107。通用终端100可以是任意适当的计算机平台,例如但不局限于:如桌面终端116等有线设备或其他有线设备(例如笔记本计算机)、无线设备101、PDA、自助服务亭等。此外,系统10还可以具有用于经由局域网(LAN)114使桌面终端116(或其他有线设备)与服务器106相连的网关服务器112。
此外,系统10可以具有用于使无线设备101与WAN 104相连的无线网络102。可以认识到,除了如图1所示的之外,可以使其他终端和计算机(未示出)经由WAN 104和相关网络与服务器106相连。为了简化,下文中将通用终端100、无线设备101和个人计算机116称为终端100。此外,为了简化,下文中将系统10的网络102、104、114称为网络104。可以认识到,如果希望,可以存在多个服务器106、110,并且/或者可以组合服务器106和110的功能。还可以认识到,可以由提供方案定义服务(例如网络服务)的服务提供商118来实现服务器106、110。此外,当获得和执行应用程序107时,终端100还可以作为单机设备工作。例如,可以经由计算机可读介质212(参见图2)将应用程序加载到终端上,如下面进一步所定义的;此外,或者代替地,可以经由与外部介质设备或计算机平台相连的直接有线连接(例如USB端口、串行接口等)将应用程序加载到终端上。
该系统10应用于被划分为相关基于脚本的工作流程307(参见图3)和非可执行内容的应用程序107。非可执行内容可以是以一些预定语言(例如但不局限于结构化定义语言,例如XML)描述应用程序实体的离散单元或模板。在终端100的容器框架206(参见图3)中评价内容,并且可由工作流程脚本307作为全局符号324(参见图3)的库使用。该库有助于针对适当服务304的代理访问或获得所请求的数据。工作流程寻址应用程序107的外部非可执行实体的处理被称为代理重定向,如下面进一步所述的。在终端100上提供的应用程序107还可以通过本地符号表322(参见图3)来访问本地实体。
通用终端
参考图2,终端100可以无限制地包括移动电话(或者其他无线设备)、PDA、笔记本和/或桌面计算机、双向寻呼机或双模通信终端。终端100包括经由连接218与终端基础设施204相连的网络连接接口200,例如无线收发机或有线网络接口卡或调制解调器。在终端100的工作期间,连接接口200可与网络104相连,例如通过无线链路(例如RF、IF等)与无线网络102相连(参见图1),使终端100能够经由网络104互相通信并与外部系统(例如服务器106,参见图1)进行通信,并且能够协调终端100和服务器106、110之间的请求/响应消息105。网络104支持在终端100和与网络104相连的外部系统之间在请求/响应消息105中传输应用程序107。网络104还可以支持终端100和位于网络104外部的终端之间的电话呼叫的语音通信。无线网络102可以使用无线数据传输协议,例如但不局限于DataTAC、GPRS或CDMA。
再次参考图2,终端100还具有通过连接222与终端基础设施204相连的用户接口202,以便于与用户(未示出)进行交互。用户接口202可以包括例如但不局限于QWERTY键盘、小键盘、轨迹球、手写笔、鼠标、麦克风的一个或多个输入设备以及例如LCD屏幕显示器和/或扬声器的一个或多个用户输出设备。如果屏幕是触摸敏感的,则还可以将显示器用作由终端基础设施204控制的用户输入设备。
再次参考图2,由终端基础设施204启用终端100的操作。终端基础设施204包括计算机处理器208和相关存储模块210。计算机处理器208通过执行由操作系统和位于存储模块210中的客户端应用程序107提供的相关指令,操纵通信终端100的网络接口200、用户接口202以及框架206的操作;计算机处理器208可以包括一个或多个处理单元,处理单元可以包括一个或多个通用处理器和/或专用处理器(例如ASIC、FPGA、DSP等)。此外,可以认识到,终端基础设施204可以包括与处理器208相连的计算机可读存储介质212,用于向处理器提供用于加载和执行客户端应用程序107的指令。计算机可读介质212可以包括硬件和/或软件,例如(仅作为示例)磁盘、磁带、例如CD/DVD ROM的光可读介质和存储卡。在每一种情况中,计算机可读介质212可以采用小盘、软盘、磁带、硬盘驱动器、固态存储卡或设置在存储模块210中的RAM的形式。应该注意,可以单独或组合地使用上面列出的示例计算机可读介质212。
处理框架
参考图2,由处理框架216提供客户端运行时间环境。潜在地存在可以由给定终端100的处理框架206使用的多个这种运行时间环境。终端100的框架206通过连接220与基础设施204相连,并且是与基础设施204的处理器208和相关操作系统的终端100功能的接口。优选地,终端100的客户端运行时间环境能够产生、主持、并执行终端100上的客户端应用程序107;如果多个运行时间环境可用,选择特定一个与给定应用程序107一起使用。一旦应用程序107被加载到终端100上,可以由设备100上的组件框架206执行应用程序107,组件框架206将组件应用程序107变换为本地代码(native code),由设备基础设施204中的处理器208执行。可选地,可以作为本地代码来执行应用程序107,或由终端100上的另一个软件模块或操作系统来解释应用程序107。在任何情况下,在终端100所提供的终端运行时间环境中运行应用程序107;客户端运行时间可以是从一组可用客户端运行时间环境中选择出的一个。再次参考图1,由终端100提供的一个或多个客户端运行时间环境可以被配置用于使终端100作为网络服务(网络服务118)的网络客户端来工作。可以认识到,客户端运行时间环境还可以使终端100作为由服务118提供的任意其他通用方案定义服务的客户端。框架206主持(host)并评价应用程序107,并且提供服务304以解释工作流程组件、评价非可执行应用程序实体并将应用程序引用解析为非可执行内容或内置功能。
优选地,框架206的一个或多个终端运行时间环境对于驻留可执行版本的客户端应用程序107(参见图2),支持下面的基本功能,例如但不局限于:
具有本地符号表322(参见图3)以及全局符号表324(参见图3)的预定知识。在应用程序107和框架206之间共享全局符号表324的内容的知识;
提供经由网络104向服务器106发送消息105的通信能力;
在终端100的输入设备上提供用户数据输入能力,以提供用于将消息105输出到服务器106的数据部分;
提供响应消息105(输入消息)的数据呈现或输出能力或者服务器106的无关联通知;
提供数据存储服务,以在终端100的存储模块210(参见图2)中保持本地客户端数据;以及
为用于协调应用程序107的工作的脚本语言提供执行环境。
此外,客户端运行时间环境的特定功能包括(而不局限于)语言的服务支持、协调存储定位、联网、I/O操作期间的数据管理、在终端100的输出设备上协调图形、以及提供对面向核心对象类和支持文件/库的访问。由终端100实施的运行时间环境的示例可以包括但不局限于微软的公共语言运行时(CLR)和Sun微系统的Java运行时间环境(JRE)。
再次参考图3,处理框架206通过全局符号表324来实现扩展应用程序107的基于脚本的命令的能力,下面进一步进行描述。处理框架206可以提供与应用程序107分离的通用服务模块304功能。此外,框架206还可以具有其他模块,例如但不局限于:应用程序管理器306、解释模块308、脚本解释器310、供应管理器311和代理重定向器312。可以认识到,由多个应用程序107共享分离的服务功能。服务模块304包括例如但不局限于持续模块314、通信模块316、屏幕(呈现)模块318和设备访问模块320。
再次参考图3,通用服务模块304通过全局符号表324与应用程序107进行交互。通过与模块304所操作的功能和/或非可执行组件326、328、330、332的交互,可以增强或扩展应用程序107的脚本307的命令的功能。通信服务316管理组件应用程序107和外部系统10之间经由网络104的连接性,包括在执行应用程序107期间按照需要与服务器106进行通信。持续管理器314允许将应用程序107的更新数据内容存储在存储模块210中。屏幕管理器318与用户接口202(参见图2)进行交互,以获得来自用户的输入并向终端100的用户显示或呈现输出。屏幕管理器318负责向和从接口202通信以终端100的本地格式表达的数据。设备访问模块320监控各种应用程序107和驻留在终端100上的其他功能实体(例如模块304)之间的交互。可以认识到,按照希望,除了示出的,具有用于扩展应用程序脚本307的功能的各个服务314、316、318、320的模块304的其他配置和功能的划分也是可以的。
再次参考图3,框架206具有供应管理器311,用于管理终端100上软件应用程序107的供应。应用程序供应可以包括存储、检索、下载和删除应用程序107,以及配置应用程序107用于访问可访问全局符号表324的服务304。可以将应用程序管理器306用于与用户接口202(参见图2)进行交互、管理应用程序的存在时间等。解释模块308管理对工作流程自身本地符号322和外部全局符号324的引用。脚本解释器310以应用程序107的工作流程的语言执行脚本307。脚本解释器310被示出为解释模块308的组件;然而,在其他实施方式中脚本解释器310可以是独立组件。代理重定向器312处理对任意全局符号324集合的请求,并将请求定向到适当的服务模块304,用于随后的脚本功能扩展。表324的全局符号是从脚本307的可执行工作流程内对容器框架206提供的组件326、328、330、332的引用。这些全局符号324隐式地包含应用程序107所需的功能细节。表322的本地符号是从脚本307的可执行工作流程内对在应用程序107中其他地方定义的实体(例如但不局限于非可执行实体)的引用。与通过服务模块304提供扩展能力的表324的全局符号相比,表322的本地符号表示应用程序107提供的本地功能。
可以认识到,按照希望,除了示出的,具有用于实现符号表322、324的各个服务306、308、310、312的处理框架206的其他配置也是可以的。这种可选配置可以无限制地包括可选的功能分布在服务中和/或与其他服务中功能的组合。
代理处理
参考图4,在混合内容应用程序107的情况下,典型地不可能单独在一个范围(scope)内执行整个应用程序107。而是方便地在分离空间400中构造应用程序107的一些方案的模型,并且允许离散可执行单位的脚本307通过表324或其他数据结构来寻址和操作空间400。在脚本307的脚本语言的语义学中,表324与提供给代理重定向器312(参见图3)并且可由脚本解释器310(参见图3)使用的全局符号组相连。该方法允许脚本307的离散和非连续可执行分段一致地寻址和操作基于框架206的组件326、328、330、332,整体影响应用程序107的行为。例如,图4示出了按照运行时间分布的应用程序空间400的可视表示。如图所示,应用程序工作流程107对在非可执行应用程序实体(作为云400示出)的云状空间400中定义的符号324进行引用404。通过由容器框架206提供的服务304(参见图3),针对满足引用所需的终端100的实际本地执行空间402,代理406这些访问。本地执行空间402包括对可以驻留在终端100的框架206上的服务模块304的外部(相对于应用程序107)组件326、328、330、332的访问。
外部组件
再次参考图3,经由全局符号324,通过相应的服务模块314、316、318、320访问外部组件326、328、330、332。组件326可以代表数据组件,用于定义由脚本307引用的数据实体。数据组件326的示例可以包括订单、用户和金融交易。数据组件326可以定义描述数据实体需要何种信息,并且以什么格式表达该信息。例如,在特定示例中,数据组件326可以定义由以下内容组成的订单:格式化为数字的订单的唯一标识符、格式化为串的项列表、具有日期时间格式的订单创建时间、格式化为串的订单状态以及根据另一数据组件326的定义进行格式化的下订单的用户。此外,参考图1,因为根据网络服务118编写规则,数据部分(单元)通常从消息105被传送到消息105,优选地存在数据组件326的持续性(persistence)。可以认识到,可以根据网络服务118编写定义(如果有的话),动态地产生数据组件326,或者由应用程序设计者根据复合类型定义和/或消息相关信息来定义数据组件326。
再次参考图3,外部组件328可以代表消息组件404,消息组件404可以定义组件应用程序107用于与终端100上其他驻留应用程序107和/或例如网络服务118的外部系统(参见图1)进行通信的消息的格式。例如,消息组件328之一可以描述(在特定示例中)用于发出订单的消息,该消息包括:订单的唯一标识符、订单的状态以及与订单相关的注释。一些示例中可以以结构化定义语言写出消息组件328,并且在一些示例中消息组件328可以唯一地代表(并且映射到)WSDL消息,并且可以在运行时间动态地产生该组件。因此,可以按照用于表达网络服务接口的定义语言(例如但不局限于WSDL和BPEL),根据标准网络服务118元数据,动态地产生客户端应用程序消息105(参见图1)的组件定义以及相关数据内容。
再次参考图3,外部组件330可以代表呈现组件。呈现组件330可以按照用户接口202(参见图2)的显示来定义组件应用程序107的外观和行为。呈现组件330可以指定GUI屏幕和控制以及当用户使用用户接口202与组件应用程序107进行交互时要执行的动作。例如,呈现组件330可以定义屏幕、标签、编辑框、按钮和菜单以及当用户在编辑框中键入或按下按钮时要采取的行为。多数网络服务118消费者使用网络服务操作结果的可视呈现,并因此在其能够显示用户接口屏幕的终端100上提供运行时间环境。
代理引用
参考图3和4,代理引用是脚本解释器310可以通过其满足对于基于框架206的组件326、328、330、332的请求404的处理,典型地基于框架206的组件326、328、330、332在工作流程307的语言中不可用。代理重定向器312依赖于应用程序107启动时由应用程序管理器306提供的符号组。这些符号324可以与应用程序107自身定义的组件(即本地符号322)相对应,或者可以与框架206提供的功能(即全局符号324)相对应。在任何情况下,符号组对于解释模块308是完全任意的。可以认识到,全局符号库324的可能内容是在脚本307的开发者和功能模块304的开发者之间共享的固定知识,所述功能模块304提供了经由全局符号324链接的外部引用功能。
代理引用方案示例
参考图3和4,为了示出如何将代理方案500(参见图3)应用于所述应用程序107的类型,考虑使用脚本语言(例如ECMAScript)来定义脚本307的工作流程单元并且允许以某种结构语言(例如XML)表达屏幕330、消息328和数据326组件的示例应用程序107组。可以认识到,用于提供对组件330、328、326的访问的相应功能模块318、316、314可以是基于本地运行时间语言的,或者可选地一个或多个语言。
屏幕330
屏幕330描述了向用户呈现并显示的可视组件。屏幕330指定怎样处理与用户的交互。作为其定义的一部分,屏幕330指定了构成其的所有数据收集字段和怎样呈现信息。屏幕330由其名称(例如scrName(全局符号324))引用,并且支持对其各种数据字段中的任何字段的访问,并且还提供内置功能,例如但不局限于:
·check();以及
·display()。
消息328
消息328由自和向应用程序107运送的各种字段组成。消息328由名称(例如msgName(全局符号324))引用,并且支持但不局限于send()功能。可以通过名称寻址消息328的所有字段。
数据326
数据326由可寻址字段组成,并且由名称(例如DataName(全局符号324))引用。数据326可以是例如但不局限于load()’ed和save()’ed。load()操作指定了唯一地识别数据326的参数。
工作流程
脚本307的工作流程单元可以以适当的脚本和/或编码语言例如ECMAScript写出,并且由名称(workflowName(全局符号324))寻址。
下面给出示例的工作流程。该工作流程示出了具有对与框架206相关的外部符号324的嵌入引用的典型脚本语言。这些符号是:
·scrOrderEntry和scrCompanyInfo,两个都是表示典型屏幕330全局对象324的变量;
·DataCompany,表示数据326全局对象324的变量;以及
·msgGetsubsidiaries,表示消息328全局对象324的变量。
此外,通过访问非可执行内容(纯文本)的字段或功能(斜体字)进一步改进这些引用404中的每一个:
Workflow:getcompanyinfo{
scrOrderEntry.check(“itemId”);
companyName=scrOrderEntry.partVendor;
company=dataCompany.load(companyName);
if(company.hasSubsidiaries){
msgGetsubsidiaries.send();
}
scrCompanyInfo.display();
}
参考图5,方案500示出了图3的各种模块怎样协同工作以实现引导(vector)对这些全局符号324的请求的目标。
用于执行该工作流程307的步骤序列如下:
1.在应用程序管理器306评价应用程序107期间,在一些点处做出用于执行工作流程脚本307.getCompanyInfo的请求;
2.应用程序管理器306指示501解释模块308的脚本解释器310加载工作流程307;
3.应用程序管理器306将符号库322、324提供502给满足对消息328、屏幕330和数据326组件的所有外部引用的代理重定向模块312。
4.然后,应用程序管理器306指示脚本解释器开始执行503脚本307。脚本307被解释为(由脚本307)定义(保留的)、声明为本地符号322的语言或未知的语言(即外部符号324)的符号322、324序列。
5.将对未知符号324(例如屏幕scrCompanyInfo或者msgGetSubsidiaries)的引用404传递504给代理重定向模块312。
6.代理重定向模块312根据应用程序管理器306所提供的全局符号库324来辨别符号;以及
7.代理重定向模块312通过将它们分别寻址506、508、510到适当的框架服务316、314、318,来处理引用,提供所请求的字段或执行例如消息send()等请求。
上述描述涉及一个或多个典型系统和方法。各种变化对于本领域的技术人员是显而易见的,并且这些变化包括在本申请的范围内。
例如,尽管在提供的示例中使用XML和ECMAScript的子集,按照希望,可以使用其他语言和语言变体来定义组件326、328、330和脚本307。此外,使用该方法,系统10整体上可以扩展应用程序107执行以超出脚本307的脚本语言的能力。可以将复合处理或更复杂的逻辑移动到框架206,由此可以更有效地(即本地地)进行处理并且由多个应用程序107共享。
应用程序107可以对于应用程序107所寻址到的框架206类型是完全中性的。此外,在框架206导出可以在稍后改进的任意全局符号324组时,该方法便于系统10的进一步扩展。按照这种方式,通过修改将脚本307的各个脚本单元链接到共享服务模块304的引用406(参见图4),以及通过修改组件326、328、330、332的内容,在扩展开发商使用的编程能力的同时,脚本307的脚本语法可以保持不变。
Claims (41)
1.一种用于扩展由终端执行的应用程序的能力的方法,所述应用程序包括基于脚本的工作流程和非可执行内容,所述方法包括步骤:
加载由脚本解释器解释的工作流程,工作流程被配置为具有多个可执行单元;
提供由可执行单元引用的全局符号结构,全局符号结构包括用于使选定的可执行单元与相应外部组件相连的寻址,由终端的本地运行时间环境提供外部组件,用于执行由选定的可执行单元指定的动作;以及
依次执行可执行单元,从而通过全局符号结构的相应全局符号,将选定的执行单元的执行重定向到各个外部组件;
其中,由运行时间环境和应用程序的工作流程共享全局符号结构的内容的预定知识。
2.根据权利要求1所述的方法,还包括步骤:将可执行单元引用到从包括全局符号结构和本地符号结构的组中选择出的任意结构。
3.根据权利要求2所述的方法,其中,全局符号结构被配置为包含可执行单元和外部组件之间的引用,所述外部组件由构成了服务框架的多个服务模块提供。
4.根据权利要求3所述的方法,其中,本地符号结构被配置为包含可执行单元和在应用程序中其他地方本地定义的本地组件组之间的引用。
5.根据权利要求4所述的方法,其中,本地符号结构和全局符号结构包括由脚本解释器引用的任意结构。
6.根据权利要求2所述的方法,还包括步骤:采用代理重定向模块,用于协调对全局符号的引用,并将相应请求定向到适当的外部组件。
7.根据权利要求6所述的方法,其中,由服务模块提供外部组件,服务模块是用于访问外部组件中的消息组件的通信服务。
8.根据权利要求7所述的方法,其中,消息组件定义了应用程序用于与其他应用程序进行交互的消息格式。
9.根据权利要求6所述的方法,其中,由服务模块提供外部组件,服务模块是用于访问外部组件中的数据组件的持续服务。
10.根据权利要求9所述的方法,其中,数据组件定义了由可执行单元引用的数据实体。
11.根据权利要求6所述的方法,其中,由服务模块提供外部组件,服务模块是用于访问外部组件中的呈现组件的呈现服务。
12.根据权利要求11所述的方法,其中,呈现组件定义了当呈现在终端的用户接口上时应用程序的呈现和行为。
13.根据权利要求2所述的方法,其中,以平台中性脚本语言表达工作流程。
14.根据权利要求13所述的方法,其中,由服务模块提供外部组件,针对工作流程的可执行单元的表达之外的修改,配置服务模块。
15.根据权利要求13所述的方法,其中,针对工作流程的可执行单元的表达之外的修改,配置外部组件。
16.根据权利要求2所述的方法,还包括执行执行单元,作为包括用于以预定语言描述应用程序实体的模板的非可执行内容。
17.根据权利要求16所述的方法,其中,所述语言是结构化定义语言。
18.根据权利要求17所述的方法,其中,所述结构化定义语言是基于XML的。
19.根据权利要求2所述的方法,还包括步骤:由多个应用程序共享外部组件。
20.根据权利要求2所述的方法,其中,由方案定义服务通过与终端相连的网络服务器提供应用程序,所述终端是从包括有线设备和无线设备的组中选出的。
21.一种终端,配置用于扩展由本地运行时间环境执行的应用程序的能力,所述应用程序包括基于脚本的工作流程和非可执行内容,所述终端包括:
脚本解释器,用于解释工作流程,所述工作流程被配置为具有多个可执行单元;
全局符号结构,配置用于由可执行单元引用,全局符号结构包括用于使选定的可执行单元与相应外部组件相连的寻址,由终端的本地运行时间环境提供外部组件,用于执行选定的可执行单元指定的动作;
代理重定向模块,用于在执行工作流程期间重定向选定的执行单元,通过全局符号结构的相应全局符号,将选定的执行单元重定向到各个外部组件;
其中,由运行时间环境和应用程序的工作流程共享全局符号结构的内容的预定知识。
22.根据权利要求21所述的终端,还包括引用到从包括全局符号结构和本地符号结构的组中选出的任意结构的可执行单元。
23.根据权利要求22所述的终端,还包括构成了服务框架的多个服务模块,其中,全局符号结构被配置为包含可执行单元和服务框架所提供的外部组件之间的引用。
24.根据权利要求23所述的终端,其中,本地符号结构被配置为包含可执行单元和在应用程序中其他地方本地定义的本地组件组之间的引用。
25.根据权利要求24所述的终端,其中,本地符号结构和全局符号结构包括由脚本解释器引用的任意结构。
26.根据权利要求22所述的终端,还包括:代理重定向模块,协调对全局符号的引用,并将相应请求定向到适当的外部组件。
27.根据权利要求26所述的终端,其中,由服务模块提供外部组件,服务模块是用于访问外部组件中的消息组件的通信服务。
28.根据权利要求27所述的终端,其中,消息组件定义了应用程序用于与其他应用程序进行交互的消息格式。
29.根据权利要求26所述的终端,其中,由服务模块提供外部组件,服务模块是用于访问外部组件中的数据组件的持续服务。
30.根据权利要求29所述的终端,其中,数据组件定义了由可执行单元引用的数据实体。
31.根据权利要求26所述的终端,其中,由服务模块提供外部组件,服务模块是用于访问外部组件中的呈现组件的呈现服务。
32.根据权利要求31所述的终端,其中,呈现组件定义了当呈现在终端的用户接口上时应用程序的呈现和行为。
33.根据权利要求22所述的终端,其中,以平台中性脚本语言表达工作流程。
34.根据权利要求33所述的终端,其中,由服务模块提供外部组件,针对工作流程的可执行单元的表达之外的修改,配置服务模块。
35.根据权利要求33所述的终端,其中,针对工作流程的可执行单元的表达之外的修改,配置外部组件。
36.根据权利要求22所述的终端,执行单元具有作为包括用于以预定语言描述应用程序实体的模板的非可执行内容。
37.根据权利要求36所述的方法,其中,所述语言是结构化定义语言。
38.根据权利要求37所述的方法,其中,所述结构化定义语言是基于XML的。
39.根据权利要求22所述的方法,其中,由多个应用程序共享外部组件。
40.根据权利要求22所述的方法,其中,由方案定义服务通过与终端相连的网络服务器提供应用程序,所述终端是从包括有线设备和无线设备的组中选出的。
41.一种计算机程序产品,用于扩展由终端的本地运行时间环境执行的应用程序的能力,所述应用程序包括基于脚本的工作流程和非可执行内容,所述计算机程序产品包括:
计算机可读介质;
脚本解释模块,存储在计算机可读介质上,用于解释工作流程,工作流程被配置为具有多个可执行单元;
全局符号结构,存储在计算机可读介质上,配置用于由可执行单元引用,全局符号结构包括用于使选定的可执行单元与相应外部组件相连的寻址,由终端的本地运行时间环境提供外部组件,用于执行选定的可执行单元指定的动作;
代理重定向模块,与全局符号结构相连,用于在执行工作流程期间重定向选定的执行单元,通过全局符号结构的相应全局符号,将选定的执行单元重定向到各个外部组件;
其中,由运行时间环境和应用程序的工作流程共享全局符号结构的内容的预定知识。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US50820303P | 2003-10-02 | 2003-10-02 | |
US60/508,203 | 2003-10-02 | ||
PCT/CA2004/000197 WO2005031566A2 (en) | 2003-10-02 | 2004-02-13 | System and method for extending capabilities and execution efficiency of script based applications |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1867897A true CN1867897A (zh) | 2006-11-22 |
CN1867897B CN1867897B (zh) | 2011-05-18 |
Family
ID=34393247
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200480029912.6A Expired - Lifetime CN1867897B (zh) | 2003-10-02 | 2004-02-13 | 扩展基于脚本的应用程序的能力和执行效率的系统和方法 |
Country Status (5)
Country | Link |
---|---|
US (2) | US7380237B2 (zh) |
EP (1) | EP1680740A2 (zh) |
CN (1) | CN1867897B (zh) |
CA (1) | CA2540361C (zh) |
WO (1) | WO2005031566A2 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102289365A (zh) * | 2010-06-21 | 2011-12-21 | 中兴通讯股份有限公司 | 脚本驱动软件构建方法和装置 |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8069407B1 (en) * | 1998-12-08 | 2011-11-29 | Yodlee.Com, Inc. | Method and apparatus for detecting changes in websites and reporting results to web developers for navigation template repair purposes |
CA2540361C (en) * | 2003-10-02 | 2011-07-19 | Research In Motion Limited | System and method for extending capabilities and execution efficiency of script based applications |
US7698383B2 (en) * | 2004-02-27 | 2010-04-13 | Research In Motion Limited | System and method for building component applications using metadata defined mapping between message and data domains |
US20050283531A1 (en) * | 2004-06-17 | 2005-12-22 | International Business Machines Corporation | Method and apparatus for combining resource properties and device operations using stateful Web services |
US20060069774A1 (en) * | 2004-06-17 | 2006-03-30 | International Business Machine Corporation | Method and apparatus for managing data center using Web services |
US7467373B2 (en) * | 2004-10-18 | 2008-12-16 | Microsoft Corporation | Global object system |
US7770159B2 (en) * | 2004-10-20 | 2010-08-03 | Microsoft Corporation | Virtual types |
US8418226B2 (en) | 2005-03-18 | 2013-04-09 | Absolute Software Corporation | Persistent servicing agent |
US8438577B2 (en) * | 2005-04-18 | 2013-05-07 | Research In Motion Limited | Method and system for extending scripting languages |
US8205013B2 (en) * | 2005-05-02 | 2012-06-19 | Samsung Electronics Co., Ltd. | Method and system for aggregating the control of middleware control points |
US7971194B1 (en) | 2005-06-16 | 2011-06-28 | Sap Portals Israel Ltd. | Programming language techniques for client-side development and execution |
US8291377B2 (en) | 2006-01-25 | 2012-10-16 | Microsoft Corporation | External configuration of processing content for script |
US8914770B2 (en) * | 2006-01-26 | 2014-12-16 | International Business Machines Corporation | Generating compatible partner processes in BPEL |
US8028283B2 (en) * | 2006-03-20 | 2011-09-27 | Samsung Electronics Co., Ltd. | Method and system for automated invocation of device functionalities in a network |
US20070239505A1 (en) * | 2006-03-30 | 2007-10-11 | Microsoft Corporation | Abstract execution model for a continuation-based meta-runtime |
US20070279389A1 (en) * | 2006-05-31 | 2007-12-06 | Samsung Electronics Co., Ltd. | Method of task-oriented universal remote control user interface |
US8375362B1 (en) * | 2006-11-28 | 2013-02-12 | Emc Corporation | Wizard for web service search adapter |
US7743076B2 (en) * | 2007-01-26 | 2010-06-22 | Microsoft Corporation | Extensible action sequences coordinating independently created components |
US8589874B2 (en) * | 2007-06-11 | 2013-11-19 | Microsoft Corporation | Visual interface to represent scripted behaviors |
US8424004B2 (en) * | 2007-06-23 | 2013-04-16 | Microsoft Corporation | High performance script behavior detection through browser shimming |
US7917887B2 (en) * | 2007-06-28 | 2011-03-29 | Microsoft Corporation | DDEX (data designer extensibility) default object implementations for software development processes |
KR20110080448A (ko) * | 2010-01-06 | 2011-07-13 | 삼성전자주식회사 | 애플리케이션 구축 시스템 및 그 방법 |
US8996604B2 (en) * | 2010-03-04 | 2015-03-31 | International Business Machines Corporation | Distributed symbol table with intelligent lookup scheme |
US9275355B2 (en) * | 2012-09-24 | 2016-03-01 | International Business Machines Corporation | Business process model analyzer and runtime selector |
US20150085871A1 (en) * | 2013-09-25 | 2015-03-26 | RIFT.io Inc. | Dynamically scriptable ip packet processing engine |
CN104951290B (zh) * | 2014-03-31 | 2018-05-01 | 国际商业机器公司 | 优化软件的方法和设备 |
CN107678531B (zh) * | 2017-09-30 | 2020-12-01 | Oppo广东移动通信有限公司 | 应用清理方法、装置、存储介质及电子设备 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5734837A (en) * | 1994-01-14 | 1998-03-31 | Action Technologies, Inc. | Method and apparatus for building business process applications in terms of its workflows |
US5675804A (en) * | 1995-08-31 | 1997-10-07 | International Business Machines Corporation | System and method for enabling a compiled computer program to invoke an interpretive computer program |
US6141793A (en) * | 1998-04-01 | 2000-10-31 | Hewlett-Packard Company | Apparatus and method for increasing the performance of interpreted programs running on a server |
AU2002351577A1 (en) * | 2001-06-29 | 2003-03-03 | Convergys Cmg Utah Inc. | Method for creating application programming interfaces for internal applications |
US7555538B2 (en) * | 2002-12-26 | 2009-06-30 | Research In Motion Limited | System and method for building and execution of platform-neutral generic services' client applications |
CA2540361C (en) * | 2003-10-02 | 2011-07-19 | Research In Motion Limited | System and method for extending capabilities and execution efficiency of script based applications |
-
2004
- 2004-02-13 CA CA2540361A patent/CA2540361C/en not_active Expired - Lifetime
- 2004-02-13 WO PCT/CA2004/000197 patent/WO2005031566A2/en active Application Filing
- 2004-02-13 CN CN200480029912.6A patent/CN1867897B/zh not_active Expired - Lifetime
- 2004-02-13 EP EP04710755A patent/EP1680740A2/en not_active Ceased
- 2004-02-27 US US10/787,949 patent/US7380237B2/en active Active
-
2008
- 2008-05-16 US US12/121,931 patent/US8499282B2/en active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102289365A (zh) * | 2010-06-21 | 2011-12-21 | 中兴通讯股份有限公司 | 脚本驱动软件构建方法和装置 |
WO2011160359A1 (zh) * | 2010-06-21 | 2011-12-29 | 中兴通讯股份有限公司 | 脚本驱动软件构建方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
US20050076344A1 (en) | 2005-04-07 |
WO2005031566A3 (en) | 2005-10-20 |
WO2005031566A2 (en) | 2005-04-07 |
US7380237B2 (en) | 2008-05-27 |
CA2540361C (en) | 2011-07-19 |
US20080270999A1 (en) | 2008-10-30 |
EP1680740A2 (en) | 2006-07-19 |
CA2540361A1 (en) | 2005-04-07 |
US8499282B2 (en) | 2013-07-30 |
CN1867897B (zh) | 2011-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1867897A (zh) | 扩展基于脚本的应用程序的能力和执行效率的系统和方法 | |
US11762634B2 (en) | Systems and methods for seamlessly integrating multiple products by using a common visual modeler | |
US11445008B2 (en) | Data processing methods, electronic devices, and storage media | |
EP2260460B1 (en) | Associating command surfaces with multiple active components | |
US8402432B2 (en) | System and method of creating and communicating with component based wireless applications | |
CN1684034A (zh) | 用以执行命令绑定的数据绑定机制的应用 | |
CN1661555A (zh) | 使用ui储存库的公共ui组件执行无线应用程序的系统和方法 | |
CA2511912A1 (en) | System and method for building and execution of platform-neutral generic services' client applications | |
WO2009086316A1 (en) | Systems and methods for efficient processing of data displayed by a window | |
CN1835507A (zh) | 用于用户与web浏览器交互的服务器端处理的方法与系统 | |
CN1573749A (zh) | 使用外部计划主题的Web网页绘制机制 | |
CN1658608A (zh) | 用于提供可修改通用应用内容的系统和方法 | |
CN1922572A (zh) | 为组件应用程序建立混合模式执行环境的系统和方法 | |
CN1662011A (zh) | 使用元数据定义映射来构建组件应用程序的系统和方法 | |
CN1661553A (zh) | 交互式无线应用程序系统和方法 | |
CN1514353A (zh) | 基于动态内核实现跨地址空间创建构件对象的方法 | |
US9922020B2 (en) | Providing content using dynamic action templates | |
CN1853167A (zh) | 具有可扩展预配置的动态内容处理的系统和方法 | |
CN107479870A (zh) | 一种第三方类库调用方法、装置、移动终端及存储介质 | |
CN1871584A (zh) | 在无线设备上灵活主持应用程序的系统和方法 | |
JP2014123360A (ja) | 仮想マシンのタグ分類システム及び方法 | |
US10789048B2 (en) | Namespace and class utilities for managed packages | |
US20180124260A1 (en) | Providing content and attachment printing for communication | |
CN114791984A (zh) | 导航树显示方法、导航树显示装置和电子设备 | |
CN1945533A (zh) | 一种启动应用程序中子模块的方法及装置 |
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 | ||
CX01 | Expiry of patent term | ||
CX01 | Expiry of patent term |
Granted publication date: 20110518 |