CN111133415B - 跨平台定制函数 - Google Patents
跨平台定制函数 Download PDFInfo
- Publication number
- CN111133415B CN111133415B CN201880061017.4A CN201880061017A CN111133415B CN 111133415 B CN111133415 B CN 111133415B CN 201880061017 A CN201880061017 A CN 201880061017A CN 111133415 B CN111133415 B CN 111133415B
- Authority
- CN
- China
- Prior art keywords
- custom function
- custom
- function
- application
- implementation
- 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.)
- Active
Links
- 230000006870 function Effects 0.000 title claims abstract description 347
- 238000000034 method Methods 0.000 claims abstract description 32
- 230000009471 action Effects 0.000 description 12
- 238000004891 communication Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 230000006399 behavior Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 3
- 238000012552 review Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 239000000284 extract Substances 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 239000002243 precursor Substances 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
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/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/76—Adapting program code to run in a different environment; Porting
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- 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/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/50—Service provisioning or reconfiguring
-
- 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
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- 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]
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Stored Programmes (AREA)
Abstract
用于支持应用内的定制函数的系统、方法和计算机可执行指令。接收包括定制函数和定制函数位置的应用插件。该应用是跨多个平台可用的。该定制函数也是跨多个平台可用的。使用该定制函数位置在该应用内注册该定制函数。在该应用内接收用于调用该定制函数的请求。从该定制函数位置下载定制函数实现。执行该定制函数实现。从该定制函数实现接收返回值。该返回值可以在该应用内被显示。
Description
背景技术
一些应用允许开发方和用户经由插件来扩充应用的功能,所述插件可以包含定制函数。定制函数可以是在应用内运行以提供另外的功能的代码。如今,应用可以跨不同平台运行。例如,应用可以具有台式机版本、手机版本、以及基于web的版本。目前,插件不能够容易地支持应用的所有不同平台,这会限制插件的效用。
附图说明
图1是根据相应示例的用于向终端用户提供定制函数的系统的框图。
图2是根据相应示例的用于向终端用户提供定制函数的系统的组件图。
图3是根据相应示例的访问网络资源的定制函数的流程图。
图4是根据相应示例的不利用分批的定制函数的流程图。
图5是根据相应示例的利用分批的定制函数的流程图。
图6是根据相应示例的使用流式传输的定制函数的流程图。
图7是根据相应示例的用于注册和缓存定制函数的系统的组件图。
图8是可以结合本文所描述的技术使用的示例计算系统。
具体实施方式
诸如之类的应用(app)可以在不同平台上运行。例如,该应用可以在Windows操作系统(OS)、Linux OS、Mac OS、在移动设备上、在web上运行,等等。在各种示例中,该应用尝试跨所有不同的平台都提供相同的一组功能。在理想情况下,可以跨所有平台提供相同的一组功能。然而,可能由于各种技术限制而无法跨所有平台提供相同的一组功能。例如,在之前的应用中,可以已经在一些平台(例如,台式机平台)但并非全部平台(例如,web平台)上提供插件和定制函数。
应用可以支持由终端用户或开发方所编写的定制函数,所述定制函数对原始应用的功能加以扩展。例如,可以提供这样的定制函数,其从网络资源获取信息,以在原始应用中不支持的方式计算数值,或者比在原始应用中更加有效地计算数值。
本文描述了跨应用运行的所有平台可用的定制函数和插件。所述定制函数因此可以是针对应用的插件的一部分。所述插件可以通过按钮和定制用户界面(UI)组件来提供与应用的用户交互。该UI组件可以具有与原生UI组件相同或相似的外观和感觉。该外观和感觉可以通过在资源文件和/或层叠样式表中定义的属性来实现。此外,所述插件可以提供针对应用的原生交互模型的访问。此外,插件可以被封装并且被提供给应用的终端用户,而并不需要该终端用户手动地定义所述插件和定制函数。
在示例中,可以使用JavaScript来实现插件和定制函数的多个部分。例如,应用插件可以包括诸如可扩展标记语言(XML)文档之类的清单文档,其包含对插件所提供的定制函数的引用。例如,该引用可以采用包含所述定制函数的文档的资源位置的形式,例如统一资源标识符(URI)。该清单可以被直接提供给终端用户,或者可以经由组织或作为店铺的一部分被部署。
在示例中,定制函数实现文件可以被清单文档所引用。该实现文件可以在web上获取并且由不同终端用户使用web或其他网络所访问。定制函数实现文件可以包含针对函数的注册代码以及针对定制函数自身的代码。此外,可以使得与定制函数相对应的超文本标记语言(HTML)文件可用。
图1是根据相应示例的用于向终端用户提供定制函数的系统的框图。开发方可以开发并提供包含定制函数110的插件。开发方可以封装该插件并且发布112其清单文档。这允许终端用户接收并使用该开发方的插件130。如下文更详细描述的,终端用户可以下载该清单文档。该应用接着使用该清单文档来获取并注册定制函数。终端用户还可以通过与他人共享该清单文档来共享132插件并且因此共享定制函数。开发方还可以编写、创建、和开发不是具体插件的一部分的定制函数120。定制函数可以针对用户和/或用户群组被启用122。一旦定制函数被注册或者具有定制函数的插件被安装,则定制函数就可用于在应用内使用。例如,终端用户可以以与访问内建功能相同的方式来访问电子表格应用中的定制函数,例如=customFunctionName()。
图2是根据相应示例的用于向终端用户220提供定制函数的系统的组件图。箭头图示了经过该系统的功能代码和数据流程。定制函数可以在应用230内安装并运行。具有定制函数的插件可以从企业部署202或者从诸如办公商店204之类的应用商店下载。该插件可以作为如上文描述的清单文档被下载。该插件可以被下载到应用230中。应用230可以包括插件管理器206,其管理应用230内的所有插件。插件管理器206可以审阅清单文档并且确定该插件内有一个或多个定制函数。
在示例中,插件管理器206可以经由源指示符而从该清单文档获取定制函数定义,例如描述定制函数的元数据。定制函数定义接着可以被缓存210。对定制函数的缓存在下文更详细地进行描述。应用230可以包括函数注册器212,其提供注册定制函数的功能。在示例中,函数注册器212可以以JavaScript来实现。在示例中,定制函数定义可以以定制函数源代码提供,所述定制函数源代码还提供定制函数。作为注册过程的一部分,应用内的注册功能可以从定制函数请求定义。例如,定制函数可以以JavaScript来实现。定制函数可以具有描述该定制函数的元数据,例如定制函数定义。元数据可以包括该功能的名称、参数、返回值、描述、帮助统一资源位置(URL),等等。在示例中,定制函数的元数据被加入到应用230内的阵列或集合。该阵列可以用来在下拉列表中提供能够使用的定制函数的列表。此外,该阵列可以被应用使用以调用定制函数。
定制函数的元数据还可以包括呼叫功能,其在该定制函数被呼叫时被调用。此外,所述元数据可以指示:该定制函数是否使用网络资源,提供其针对操作次序的优先级,该定制函数是否支持分批,以及该定制函数是否支持流式传输。当应用230打开时或者当应用230内的文档打开时,可用的定制函数可以被加载。如下文更详细描述的,定制函数可以从位于本地文件系统208上的本地缓存被加载。定制函数元数据可以被存储为对象,并且应用230可以保存可用定制函数的阵列。
一旦定制函数的元数据被加载,用户220就可以在应用230内呼叫定制函数。例如,可以以与可呼叫应用230的内建功能相同方式来调用定制函数,例如=customFunctionName()。定制函数接着可以由计算引擎所调用。当应用230执行定制函数时,应用230可以使用异步函数分派器214。异步函数分派器214可以获取定制函数并且在定制函数运行时间216内执行定制函数。在示例中,定制函数运行时间216是JavaScript运行时间。在其他示例中,定制函数运行时间216可以以Python、C#等来实现。定制函数运行时间216接着可以访问各种web服务器218。例如,定制函数可以访问能够在web或其他网络上获得的资源。作为示例,定制函数可以访问能够在web上获得的股票报价。该股票报价接着可以被定制函数返回并且被插入到应用230内的文档中。
图3是根据相应示例的访问网络资源的定制函数的流程图。如上文所提到的,定制函数340可以访问各种在线资源。应用330可以调用310定制函数340。定制函数340可以将promise 312返回至应用330。该promise随后可以通过定制函数的结果或者错误指示而被解析。定制函数340可以调用超文本传输协议(HTTP)请求314。HTTP请求314可以去往服务器350。例如,服务器350可以是由定制函数340的开发方所运行的服务器。服务器350利用数据进行响应316。定制函数340接收该响应,并且可以对从服务器350返回的数据进行分析或解析。定制函数340接着可以分解(resolve)promise 318以指示该HTTP响应以及对定制函数340的运行成功。此外,定制函数340可以基于该响应而返回数据。例如,定制函数340可以解析针对股票报价的响应。该股票报价接着可以作为对promise 318的分解的一部分而被返回。
在示例中,定制函数可以在单个文档内被多次使用。例如,定制函数可以被复制到电子表单中的几十、几百、几千等的单元格中。在示例中,定制函数的每个实例都被单独执行。在另一个示例中,定制函数的实例可以被分批在一起以改进性能。
图4是根据相应示例的不利用分批的定制函数的流程图。应用340可以具有已安装并且可供用户调用的定制函数450。定制函数450可以被呼叫多次412A、412B和412C。例如,定制函数450可以被复制到电子表单内的多个单元格中。定制函数450可能不支持分批。当不分批时,每个定制函数呼叫412A、412B、和412C都经由定制函数API 440被单独呼叫。定制函数API 440接着针对每次呼叫来呼叫定制函数。在该示例中,定制函数API 440可以将每次定制函数呼叫传递到合适的定制函数上。定时函数接着在每个参数414A、414B和414C上运行。每个定制函数调用返回结果416A、416B和416C,它们接着可以由应用430所显示。如果存在针对相同定制函数的多个呼叫,例如数十个、数百个等,则所述呼叫可以被分批以提高效率。
定制函数的开发方可以支持分批呼叫,其中针对定制函数的单个呼叫在多个参数集上操作。将多个定制函数呼叫分批会带来更高的效率。此外,可以支持分批以使得终端用户无需为了使用分批以任何特定方式来调用定制函数。换句话说,用户可以在不知道将会进行对定制函数的分批的情况下调用定制函数。
图5是根据相应示例的利用分批的定制函数的流程图。应用430可以以如图4所示的相同方式调用定制函数430。例如,定制函数430可以被调用多次412A、412B和412C。分批控制器510可以用于将多个定制函数呼叫进行分批。分批控制器510可以使用计时器来确定何时将定制函数分批。当计时器超时时,分批控制器510可以针对需要被呼叫的定制函数来审阅该文档。在另一示例中,可以遍历重新计算依赖树以确定哪些叶节点需要被计算。该遍历可以确定仍然需要被计算的定制函数。无论定制函数是否支持分批,定制函数的调用412A、412B和412C都可以是完全相同的。因此,应用430的用户并不需要知晓定制函数是否支持分批,该用户也不必为使用分批而提供任何指示。
分批控制器510可以确定该三次定制函数调用412A、412B和412C可以被分批,并且定制函数支持分批。分批控制器510可以基于定制函数注册所提供的注册元数据来确定定制函数支持分批。分批控制器510可以将被分批的定制函数的参数以及对定制函数的指示提供至定制函数API 440。定制函数API 440可以将所述参数转换成阵列或集合512。定制函数450接着可以利用该参数阵列被调用一次而不是三次单独的呼叫。定制函数450提取所述参数并且接着计算三个对应的结果数值514。所述结果数值可以作为结果数值的阵列经由定制函数API 440而被提供至分批结果分派器518。分批结果分派器518从该阵列提取结果并且将所述结果提供至合适的定制函数呼叫。该阵列中的结果处于与参数被如何送至定制函数中相对应的顺序。也就是说,第一结果与第一参数集合相对应。定制函数的结果接着被显示516A、516B和516C。在示例中,定制函数可以返回promise的阵列,其可以在任何时间被分解。
定制函数可以返回随时间变化的数据。例如,例如,定制函数可以返回当前股票价格、当前温度、工厂输出数值等。在示例中,应用可以每次呼叫一个内建或定制的函数。在该示例中,经更新的数据对应用不可用。为了解决该问题,定制函数可以支持将经更新的数据流式传输至该应用。经流式传输的定制函数随时间反复地向文档中诸如单元格的部分输出数据,而不等待应用或用户请求重新计算。
图6是根据相应示例的使用流式传输的定制函数640的流程图。应用630可以提供针对定制函数640的访问,以使得定制函数640可以被应用630的用户所调用610。定制函数640访问612服务器650并且获取数据614。该数据被送回至应用630。应用630随后可以设置结果616。这是与标准定制函数相同的数据流。
然而,定制函数640将定期更新其数据。例如,定制函数640可以通过访问服务器650从温度计获取温度。在第一结果被传递回应用630之后,定制函数可以设置超时以呼叫其更新函数。在以下示例中,setTimeout方法在经过时间间隔之后呼叫getNextTemperature方法。在经过该间隔后,定制函数640再次访问服务器650以获取经更新的数据,所述经更新的数据被传递回应用630。应用630接着可以更新结果620。来自服务器的第三更新622可以在经过另一个时间间隔之后进行。应用630接着可以再次更新定制函数的数值624。该过程可以重复,直到被应用630或定制函数640停止为止。
以下示出了使用流式传输的示例定制函数。
在另一个示例中,从定制函数640到服务器650的连接被打开。服务器650可以将数据流式传输回定制函数640。当定制函数640在计时器到期后苏醒或者对数据可用中断进行处理时,定制函数640可以将流式传输的数据提供回应用630。
在另一个示例中,应用630在计时器而不是定制函数640到期之后调用定制函数640。在该示例中,可以向定制函数640提供状态标识符。另外,定制函数640可以返回状态标识符,其在下一次调用时被传递回定制函数640。
在另一个示例中,如在以下代码中所示,定制函数incrementValue每秒钟向结果增加一个数字,并且该应用可以自动显示每个新数值。
在以上示例中,最终参数setResult没有在注册期间被指定。此外,该参数在它们进入该函数时可能没有向用户示出。相反,setResult函数是用来更新该数值的回呼函数。在该示例中,setResult基于参数1000而每隔1000毫秒被呼叫一次。为了该应用传递setResult函数,定制函数通过将参数stream设置为真(true)而指示定制函数在该函数的注册期间支持流式传输。
在示例中,定制函数能够由应用的用户以与内建函数相同的方式所使用。例如,定制函数名称可以以与内建函数被自动完成相同的方式而被自动完成。用户可以开始键入定制函数的名称,并且完整的定制函数名称、参数、描述等可以出现以供用户选择定制函数和/或接收有关定制函数的进一步信息。因此,自动完成特征可用于所有定制函数。某一层级的缓存可以被用来避免必须要针对应用内的文档加载/运行所有可能的定制函数。这允许定制函数针对诸如自动完成之类的特征可用,但是仅动态地加载由文档所使用的定制函数。
图7是根据相应示例的用于注册和缓存定制函数的系统的组件图。用户可以在应用730内安装插件750,其可以包含定制函数740。定制函数740可以生成元数据752,其被提供至应用730的注册函数754。注册函数754可以存储定制函数元数据。所述元数据可以包括定制函数的名称、描述,以及参数和描述。所述元数据还可以包括可选参数和描述、帮助URL、开发方信息URL等。注册缓存710可以用于缓存定制函数的元数据。注册缓存710可以独立于应用、应用文档并且独立于该插件而被存储。注册缓存710可以被存储在本地机器上或者被存储在通过网络700可获得的漫游设置中。将缓存存储在漫游设置中允许该缓存能够由用户跨多个设备可。该漫游设置能够由多个设备通过网络可访问。因此,用户可以在一个设备上注册定制函数并且使得定制函数在其他设备上可用。一旦被注册,定制函数740就可以在应用730的文档内运行756。
该用户或另一个用户可以使用应用730打开第二文档758。在没有缓存的示例中,该第二文档将从定制函数740请求元数据。然而使用缓存,可以从注册缓存获取所述元数据。定制函数740可以使用从注册缓存710所获取的元数据而被注册以便在第二文档760内使用。一旦在第二文档中被注册,定制函数740就可以在第二文档内运行762。
缓存允许应用730提供与在文档内可用的所有可能的定制函数相关的信息,而不要求获取每个定制函数的元数据。因此,应用730可以快速且高效地提供诸如自动完成、参数列表、帮助链接等之类的特征,而不必访问与定制函数相关联的网络资源,例如开发方的网站。
在电子表单应用的示例中,插件可以包含定制Javascript函数,其包含以下组件:Manifest.xml——该文件如同常规插件一样使用,并且包含针对定制函数(在Manifest分段中描述)的引用。Functions.html——该文件可以由开发方在web上托管。当该文件作为CustomFunctions动作的一部分加载时,该页面被隐藏。当该文件加载时,该文件保持打开直到工作手册关闭。SourceLocation.html作为CustomFunctions动作的一部分加载的具体时间在以下的Persistence和Activation分段中被定义。Functions.html将引用JavaScript以注册并执行诸如Function.js之类的函数。Function.js——该文件由例如第三方的开发方所编写,并且可以在web上提供。该文件可以包括函数的注册代码以及函数代码本身。Function.js的样本在下文描述。Function.js在Manifest中被直接引用以用于仅Javascript执行(JavaScript-only execution),并且还可以在Functions.html中被引用。Spreadsheetfunctions.js——这由例如微软的应用开发方所编写的。该文件可以包含使得定制JavaScript函数在应用内正确运行的库。其可以与Function.js封装在一起。
以下示出了Manifest文档的一个分段的示例。针对JavaScript函数,该分段可以包含指定JavaScript文件的SourceLocation(源位置)元素。以下是样本Manifest摘录,其被添加在Manifest的<VersionOverrides>/<Hosts>/分段中。
Script元素具有SourceLocation,其可以被用于JS运行时间执行(JS-runtime-execution)。Page元素也具有SourceLocation,其可以跨平台被使用。
JavaScript注册
在示例中,定制函数以JavaScript来实现。在该示例中,插件通过JavaScript注册函数。实现样本参见以下的样本分段。
首先,在JavaScript运行时间中定义函数及其元数据。函数元数据可以作为每个函数的一个CustomFunction对象而被添加至CustomFunctions对象,如以下表格中所示:
表1
新的Rich API对象利用以下所描述的功能而被支持,例如,workbook.CustomFunctions,其是CustomFunctionCollection对象。开发方可以呼叫的Rich API方法是对注册定制函数的registerAll()。以下在表中2-7中描述了API对象。
CustomFunctionCollection属性
属性 | 类型 | 描述 |
Items | CustomFunction[] | CustomFunction对象的集合,只读 |
表2
CustomFunctionCollection方法
表3
CustomFunction属性
表4
CustomFunction选项
表5
CustomFunctionParameter属性
表6
CustomFunction方法
方法 | 返回类型 | 描述 |
delete() | 空 | 将函数取消注册。 |
表7
JavaScript函数行为类型
函数可以是function.js中由插件所定义的实际JavaScript函数。电子表单应用可以每当该应用计算需要新数值时直接触发这些函数。所述函数可以返回值或者JavaScript promise对象,插件接着可以将其进行分解为数值。在示例中,取决于针对函数所定义的Behavior属性,有三种类型的调用和更新行为。这些行为在以下表格中被描述:
表8
以下是计算Fibonacci数的JavaScript的样本实现。这里是Function.js的样本内容:
/>
表9
以下是支持分批的示例函数
/>
表10
以下是以异步方式获取web数据的示例JavaScript函数。
表11
以下是流式传输JavaScript函数的示例。
/>
/>
表12
定制函数可能随应用而要求新的动作(Action)。以下表格描述了该动作与其他常见的插件动作相比较的情况。
/>
表13
当SourceLocation页面作为CustomFunctions动作而不是作为正常任务窗格打开时,查询字符串可以包括查询串参数customfunctions=ture(真)。
注册缓存的一个目的是在不必首先运行JavaScript代码的情况下为用户提供自动完成选项。在示例中,每当插件注册定制函数时(特别地,在注册之后的每个文件保存动作时),每个定制函数都连同以下信息一起被缓存在针对该用户的机器上:
插件信息
解决方案ID
目录ID
CustomFunctions(定制函数)对象(参见以上的对象定义)
函数名称
函数描述
函数参数和描述
可选的参数
帮助URL
然而,所执行的实际JavaScript函数不被存储。在针对该用户的每次应用工作手册引导/加载时,该应用可以针对该“盘注册”来检查机器缓存。如果该注册可用,则该应用可以注册那些函数(利用临时回呼)。
插件自身接着可以在定制函数针对该工作手册被首次调用时启动。在web浏览器上,本地存储设备可以用于机器缓存。在其他示例中,缓存可以通过漫游设置而跨用户的设备被留存。
在示例中,关于文档的内容可以有五种可能的留存状态。这些状态在以下表格中被描述。
表14
在示例中,该表格根据不同的留存状态(第一行)和用户动作(左侧列)示出了functions.html和函数运行时间何时启动。每当运行时间针对插件被启动,其都针对该插件关闭任何先前的函数运行时间。第一行示出了初始状态并且每一行示出了动作的结果:
表15
图8是可以结合本文所描述的技术使用的示例计算系统。在可替换实施例中,计算设备800可以作为独立设备进行操作或者可以连接(例如,联网)至其他计算设备。在联网部署形式中,计算设备800可以以服务器-客户端网络环境中的服务器通信设备、客户端通信设备或者其二者的能力进行操作。在示例中,计算设备800可以充当端对端(P2P)(或其他分布式)网络环境中的对等计算设备。计算设备800可以是个人计算(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、移动电话、智能电话、web家电、网络路由器、交换机或网桥,或者能够(顺序地或以其他方式)执行指定该计算设备所要采取的动作的指令的任何计算设备。另外,尽管仅图示了单个计算设备,但是术语“计算设备”还应当被理解为包括单独或联合执行指令集合(或多个集合)以实行在本文中所讨论的任何一种或多种方法的计算设备的任何集合,例如云计算、软件即服务(SaaS)、其他计算机集群配置。
计算设备800可以包括硬件处理器802(例如,中央处理器(CPU)、图形处理器(GPU)、硬件处理器核心,或者它们的任意组合)、主存储器804、和静态存储器806,它们中的一些或全部可以经由链路(例如,总线)808互相通信。计算设备800还可以包括显示单元810、输入设备812(例如,键盘)和用户界面(UI)导航设备814(例如,鼠标)。在示例中,显示单元810、输入设备812和UI导航设备814可以是触摸屏显示器。在示例中,输入设备812可以包括触摸屏、麦克风、相机(例如,全景或高分辨率相机)、物理键盘、轨迹球,或者其他输入设备。
计算设备800还可以包括存储设备(例如,驱动单元)816、信号生成设备818(例如,扬声器、投影设备,或者任意其他类型的信息输出设备)、网络接口设备820,以及一个或多个传感器821,例如全球定位系统(GPS)传感器、罗盘、加速度计、运动检测器,或者其他传感器。计算设备800可以包括输入/输出控制器828,诸如串行的(例如,通用串行总线(USB))、并行的,或者用于经由一个或多个输入/输出端口进行通信或控制一个或多个外围设备(例如,打印机、读卡器等)其他有线或无线(例如,红外(IR)、近场通信(NFC)等)连接。
存储设备816可以包括计算机可读(或机器可读)存储介质822,其上存储实施本文所描述的一种或多种技术或功能或者由其所利用的数据结构或指令824(例如,软件)的一个或多个集合。在一个示例中,软件的至少一部分可以包括操作系统和/或实施本文所描述一种或多种功能的一个或多个应用(或app)。指令824还可以在其被计算设备800执行的期间完全或至少部分地处于主存储器804内、静态存储器806内,和/或处于硬件处理器802内。在示例中,硬件处理器802、主存储器804、静态存储器806或存储设备816中的任一个或者它们的任意组合可以构成计算设备(或机器)可读介质。
尽管计算机可读存储介质822被图示为单个介质,但是“计算机可读存储介质”或“机器可读存储介质”可以包括被配置为存储一个或多个指令824的单个介质或多个介质(集中或分布式数据库,和/或相关联的缓存和服务器)。
在示例中,计算机可读存储介质或机器可读存储介质可以包括能够存储、编码或承载指令以便由计算设备800执行并且使得计算设备800实行本公开的任意一种或多种技术,或者能够存储、编码或承载由这样的指令所使用或与之相关联的数据结构的任何介质。非限制性的计算机可读存储介质的示例可以包括固态存储器以及光学和磁性介质。计算机可读存储介质的具体示例可以包括:非易失性存储器,例如半导体存储器设备(例如,电可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM))和闪速存储器设备;磁盘,例如内置硬盘和可移除盘;磁-光盘;随机访问存储器(RAM);和光学介质盘。计算机可读存储介质是非瞬态的,其中存储介质并不构成瞬态的传播信号。
利用多种传输协议(例如,帧中继、互联网协议(IP)、传输控制协议(TCP)、用户数据报协议(UDP)、超文本传输协议(HTTP)等)中的任一种,指令824可以经由网络接口设备820使用传输介质而通过通信网络826被传送或接收。示例的通信网络可以包括局域网(LAN)、广域网(WAN)、分组数据网络(例如,互联网)、移动电话网络(例如,蜂窝网络)、老式电话(POTS)网络,以及无线数据网络(例如,被称为的电气电子工程师协会(IEEE)802.3标准族,被称作/>的IEEE802.16标准族)、IEEE 802.15.4标准族、长期演进(LTE)标准族、通用移动电信系统(UMTS)标准族、端对端(P2P)网络,诸如此类。网络接口设备820可以使用传输协议而使用瞬时传播信号来传送数据。
在示例中,网络接口设备820可以包括一个或多个物理插口(例如,以太网、同轴线缆或电话插口)或者一个或多个天线以连接至通信网络826。在示例中,网络接口设备820可以包括一个或多个无线调制解调器,例如蓝牙调制解调器、Wi-Fi调制解调器,或者在本文所提到的任意通信标准下操作的一种或多种调制解调器或收发器。在示例中,网络接口设备820可以包括多个天线以使用单输入多输出(SIMO)、多输入多输出(MIMO)或多输入单输出(MISO)中的至少一种来进行无线通信。在一些示例中,网络接口设备820可以使用多用户MIMO技术来无线通信。在示例中,传输介质可以包括能够存储、编码或承载指令以便由计算设备800来执行的任意有形介质,并且包括数字或模拟通信信号等通信介质从而促成这样的软件的通信。
用于实施所公开的技术的任何计算机可执行指令以及在所公开实施例的实施期间被创建和使用的任何数据都可以被存储在一个或多个计算机可读存储介质上。计算机指令例如可以是专用软件应用或者经由web浏览器或其他软件应用(例如,远程计算应用)访问或下载的软件应用的一部分。这样的软件例如可以在单个本地计算机(例如,任何合适的商业可获得的计算机)上执行,或者使用一个或多个网络计算机在网络环境中(例如,经由互联网、广域网、局域网、客户端-服务器网络(例如,云计算网络)或者其他这样的网络)执行。
以上描述旨在是说明性而非限制性的。例如,以上所描述的示例(或者其一个或多个方面)可以与其他示例相结合地使用。其他实施例例如可以由本领域技术人员在回顾以上描述时所使用。另外,以下权利要求由此被整合到具体实现中,其中权利要求自身代表单独的实施例。本文所公开的实施例的范围要参考所附权利要求连同这样的权利要求所享有的等同形式的完整范围一起来确定。
Claims (15)
1.一种用于支持应用内的定制函数的方法,所述方法包括:
接收包括定制函数、定制函数源位置以及定制函数元数据的应用插件,所述定制函数元数据包括定制函数名称;
在所述应用内注册所述定制函数,其中,注册包括存储所述定制函数元数据;
在第一平台上在所述应用内接收用于使用第一文档的单元格中的所述定制函数名称来调用所述单元格内的所述定制函数的请求;
从所述定制函数源位置下载定制函数实现;
第一次执行所述定制函数实现;
从所述定制函数实现接收第一返回值;
自动地第二次执行所述定制函数实现;
从所述定制函数实现的第二次执行接收第二返回值;以及
利用所述第二返回值来更新所述第一文档的所述单元格。
2.根据权利要求1所述的方法,还包括:在第一次执行所述定制函数实现之后,基于所述第一返回值来更新所述第一文档的所述单元格。
3.根据权利要求2所述的方法,其中,所述定制函数是经流式传输的定制函数。
4.根据权利要求3所述的方法,还包括接收状态id连同所述第一返回值。
5.根据权利要求4所述的方法,其中,所述状态id在定制函数被第二次执行时被传递至所述定制函数。
6.根据权利要求1所述的方法,还包括:
从所述定制函数源位置请求所述定制函数元数据,所述定制函数元数据还包括定制函数参数列表;
接收所述定制函数元数据;
缓存所述定制函数元数据;
接收输入,所述输入包括所述定制函数名称的部分完成;
确定所述定制函数名称的所述部分完成与所述定制函数名称之间的匹配;以及
将所述部分完成自动完成为所述定制函数名称。
7.根据权利要求6所述的方法,其中,所述定制函数元数据被存储在漫游简档中,并且其中,所述方法还包括:
在不同于所述第一平台的第二平台上接收用于调用所述应用内的第一文档内的所述定制函数的请求;
在所述第二平台上从所述应用的所述定制函数源位置下载所述定制函数实现;以及
执行所述定制函数实现。
8.根据权利要求1所述的方法,还包括:
接收用于调用所述应用内的第二文档内的所述定制函数的请求;以及
在所述第二文档内执行所述定制函数实现。
9.根据权利要求1所述的方法,其中,所述定制函数实现是采用JavaScript形式的。
10.根据权利要求1所述的方法,其中,所述定制函数是分批定制函数,并且其中,所述方法还包括:
确定所述定制函数要针对所述第一文档的多个部分被调用两次或更多次,其中,所述定制函数包括参数,并且其中,要被调用的每个定制函数包括参数值;
基于所述定制函数是所述分批定制函数而组合所述参数值,其中,经组合的参数值当被执行时被传递至所述定制函数实现,并且其中,所述定制函数实现被执行一次。
11.根据权利要求10所述的方法,其中,所述第一返回值包括与对所述定制函数的调用中的每个调用相对应的多个返回值,并且其中,所述方法还包括基于所述多个返回值来更新所述第一文档的多个部分。
12.一种用于支持应用内的定制函数的系统,所述系统包括:
一个或多个电子处理器,其被配置为:
接收包括定制函数、定制函数源位置以及定制函数元数据的应用插件,所述定制函数元数据包括定制函数名称;
在所述应用内注册所述定制函数,其中,注册包括存储所述定制函数元数据;
在第一平台上在所述应用内接收用于使用第一文档的单元格中的所述定制函数名称来调用所述单元格内的所述定制函数的请求;
从所述定制函数源位置下载定制函数实现;
第一次执行所述定制函数实现;
从所述定制函数实现接收第一返回值;
自动地第二次执行所述定制函数实现;
从所述定制函数实现的第二次执行接收第二返回值;以及
利用所述第二返回值来更新所述第一文档的所述单元格。
13.根据权利要求12所述的系统,其中,所述一个或多个处理器还被配置为:在所述定制函数实现的第一次执行之后,基于所述第一返回值来更新所述第一文档的所述单元格。
14.根据权利要求13所述的系统,其中,所述定制函数是经流式传输的定制函数。
15.根据权利要求14所述的系统,其中,所述一个或多个处理器还被配置为接收状态id连同所述第一返回值。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762562142P | 2017-09-22 | 2017-09-22 | |
US62/562,142 | 2017-09-22 | ||
US15/889,918 | 2018-02-06 | ||
US15/889,918 US10572274B2 (en) | 2017-09-22 | 2018-02-06 | Cross platform custom functions |
PCT/US2018/039195 WO2019059993A1 (en) | 2017-09-22 | 2018-06-25 | PERSONALIZED INTER PLATFORM FUNCTIONS |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111133415A CN111133415A (zh) | 2020-05-08 |
CN111133415B true CN111133415B (zh) | 2023-11-03 |
Family
ID=65807513
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880061017.4A Active CN111133415B (zh) | 2017-09-22 | 2018-06-25 | 跨平台定制函数 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10572274B2 (zh) |
EP (1) | EP3685261A1 (zh) |
CN (1) | CN111133415B (zh) |
WO (1) | WO2019059993A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112748915B (zh) * | 2020-12-30 | 2022-10-25 | 浪潮通用软件有限公司 | 一种基于StimulSoft的动态扩展业务函数的方法及设备 |
US11966690B2 (en) | 2022-08-29 | 2024-04-23 | Microsoft Technology Licensing, Llc | Enhanced integration of spreadsheets with external environments |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102682014A (zh) * | 2011-03-14 | 2012-09-19 | 腾讯科技(深圳)有限公司 | 在浏览器上实现的开放式插件管理平台及插件管理方法 |
CN103823697A (zh) * | 2014-02-27 | 2014-05-28 | 百度在线网络技术(北京)有限公司 | 应用的跨平台实现方法、系统以及插件管理器 |
CN106371864A (zh) * | 2016-08-23 | 2017-02-01 | 上海创景计算机系统有限公司 | 快速部署插件架构方法 |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5437006A (en) * | 1993-01-27 | 1995-07-25 | Microsoft Corporation | Spreadsheet command/function capability from a dynamic-link library |
US6201539B1 (en) * | 1994-01-04 | 2001-03-13 | International Business Machines Corporation | Method and system for customizing a data processing system graphical user interface |
US5706456A (en) * | 1995-04-18 | 1998-01-06 | Unisys Corporation | Application specific graphical user interface (GUI) that is window programmable and capable of operating above a windows operating system GUI |
US6167404A (en) | 1997-07-31 | 2000-12-26 | Avid Technology, Inc. | Multimedia plug-in using dynamic objects |
US6519571B1 (en) * | 1999-05-27 | 2003-02-11 | Accenture Llp | Dynamic customer profile management |
US8793584B2 (en) * | 2006-05-24 | 2014-07-29 | International Business Machines Corporation | Customizable user interface wrappers for web applications |
US8584004B2 (en) | 2008-04-23 | 2013-11-12 | Microsoft Corporation | Asynchronous user defined functions |
US8108466B2 (en) | 2008-05-01 | 2012-01-31 | Microsoft Corporation | Automated offloading of user-defined functions to a high performance computing system |
US8745213B2 (en) * | 2008-12-19 | 2014-06-03 | Openpeak Inc. | Managed services platform and method of operation of same |
US8245223B2 (en) | 2008-12-23 | 2012-08-14 | Microsoft Corporation | Networked deployment of multi-application customizations |
BR112012008979A2 (pt) | 2009-10-16 | 2017-12-05 | Real Innovations Int Llc | sistema e método para fornecimento de dados em tempo real. |
US9645992B2 (en) * | 2010-08-21 | 2017-05-09 | Oracle International Corporation | Methods and apparatuses for interaction with web applications and web application data |
US8407461B2 (en) * | 2010-12-17 | 2013-03-26 | Oracle International Corporation | Plug-in system for software applications |
US9092412B2 (en) | 2011-09-30 | 2015-07-28 | Cirro, Inc. | Spreadsheet based data store interface |
US9389891B2 (en) * | 2012-01-09 | 2016-07-12 | Microsoft Technology Licensing, Llc | Custom browser-side spreadsheet functions |
US9171099B2 (en) | 2012-01-26 | 2015-10-27 | Microsoft Technology Licensing, Llc | System and method for providing calculation web services for online documents |
US20140136937A1 (en) | 2012-11-09 | 2014-05-15 | Microsoft Corporation | Providing and procuring worksheet functions through an online marketplace |
US9170808B2 (en) | 2013-11-07 | 2015-10-27 | Sap Se | Dynamic containerization |
US9529628B2 (en) | 2014-03-21 | 2016-12-27 | Vmware, Inc. | Binary editing of applications executed by virtual machines |
US20160001187A1 (en) * | 2014-07-04 | 2016-01-07 | Trendy Entertainment | Multi-platform system and methods |
CN104503955B (zh) | 2014-12-03 | 2018-07-20 | 中建材国际贸易有限公司 | 一种生成个性化excel表单据的方法 |
CN106257887B (zh) | 2015-06-18 | 2019-06-18 | 中国科学院声学研究所 | 一种基于WebSocket的获取客户端硬件信息的方法 |
US10838920B2 (en) * | 2017-05-05 | 2020-11-17 | Esoptra NV | Plug-in function platform and methods |
-
2018
- 2018-02-06 US US15/889,918 patent/US10572274B2/en active Active
- 2018-06-25 CN CN201880061017.4A patent/CN111133415B/zh active Active
- 2018-06-25 WO PCT/US2018/039195 patent/WO2019059993A1/en unknown
- 2018-06-25 EP EP18749610.4A patent/EP3685261A1/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102682014A (zh) * | 2011-03-14 | 2012-09-19 | 腾讯科技(深圳)有限公司 | 在浏览器上实现的开放式插件管理平台及插件管理方法 |
CN103823697A (zh) * | 2014-02-27 | 2014-05-28 | 百度在线网络技术(北京)有限公司 | 应用的跨平台实现方法、系统以及插件管理器 |
CN106371864A (zh) * | 2016-08-23 | 2017-02-01 | 上海创景计算机系统有限公司 | 快速部署插件架构方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2019059993A1 (en) | 2019-03-28 |
EP3685261A1 (en) | 2020-07-29 |
CN111133415A (zh) | 2020-05-08 |
US10572274B2 (en) | 2020-02-25 |
US20190095226A1 (en) | 2019-03-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10831858B2 (en) | Mobile enablement of existing web sites | |
US9075663B2 (en) | Cloud-based web workers and storages | |
RU2503056C2 (ru) | Веб-канал, базируемый на языке xml, для веб-доступа удаленных источников | |
US20130091197A1 (en) | Mobile device as a local server | |
US10069940B2 (en) | Deployment meta-data based applicability targetting | |
US20070220083A1 (en) | Estimation of initial dynamic rendering control data | |
AU2013213683B2 (en) | A method and system of application development for multiple device client platforms | |
CN111133415B (zh) | 跨平台定制函数 | |
AU2016101498A4 (en) | Data Interchange System | |
Namee et al. | The Integration of File Server Function and Task Management Function to Replace Web Application on Cloud Platform for Cost Reduction | |
US9680967B2 (en) | Method of using application, gateway using the method, terminal using the method, and terminal system using the method | |
CN109871560B (zh) | 一种运行目标模型的方法和装置 | |
US20130332568A1 (en) | Method of data processing by a navigation module | |
Gonsai et al. | Enhance the interaction between mobile users and web services using cloud computing | |
CN115525305A (zh) | 数据处理、应用启动方法、装置、计算机设备和存储介质 | |
Singh et al. | Enhancing Interaction between Smartphones and Web services on Cloud for improved Bandwidth and latency | |
US20180357588A1 (en) | Skill detection and determination | |
Wirasingha et al. | A survey of websocket development techniques and technologies | |
US20150295776A1 (en) | Apparatus and method of content containment | |
Frécon | Web (-like) Protocols for the Internet of Things | |
Patni et al. | API management and API client | |
Rajitha | Performance of Web Services on Smart Phone Platforms | |
CN117667084A (zh) | 页面展示方法、装置、设备及存储介质 | |
Ye et al. | Towards lightweight application integration based on mashup | |
Wojcieszyn et al. | Cross Domain and Push Communication |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |