CN102498483B - 事件触发的服务器端宏 - Google Patents

事件触发的服务器端宏 Download PDF

Info

Publication number
CN102498483B
CN102498483B CN201080041591.7A CN201080041591A CN102498483B CN 102498483 B CN102498483 B CN 102498483B CN 201080041591 A CN201080041591 A CN 201080041591A CN 102498483 B CN102498483 B CN 102498483B
Authority
CN
China
Prior art keywords
grand
user
computer system
trustship computer
application
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
Application number
CN201080041591.7A
Other languages
English (en)
Other versions
CN102498483A (zh
Inventor
M·W·哈姆
M·勒莫尼克
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Priority to CN201510834068.4A priority Critical patent/CN105487922A/zh
Publication of CN102498483A publication Critical patent/CN102498483A/zh
Application granted granted Critical
Publication of CN102498483B publication Critical patent/CN102498483B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Information Transfer Between Computers (AREA)
  • Stored Programmes (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

公开了管理计算机宏的计算机实现的方法。该方法包括:在互联网可访问的托管计算机系统存储计算机宏的代码而且将所存储的代码和托管计算机系统上的用户账号关联。该方法还包括无论和用户账号关联的用户目前是否在托管计算机系统上活动,自动用托管计算机系统识别定义为指向宏的触发事件。此外,该方法还包括使用托管计算机系统上运行的应用执行宏来产生宏结果,并把宏结果存储在托管计算机系统上。

Description

事件触发的服务器端宏
相关申请的交叉引用
本申请根据35U.S.C.§119(3)要求2009年8月13日提交的题为“EVENT-TRIGGEREDSERVER-SIDEMACROS”的美国申请序列号12/540,846的优先权,在此通过引用将其公开内容并入本申请。
技术领域
本发明涉及基于网络的电子内容传送。
背景技术
宏是可在一个或多个计算机应用内执行以提供与这些应用的增强且自动交互的一组指令,其中,至少一部分宏代表可另由应用的用户手动执行的步骤。例如,可以写一个宏来根据台式计算机上的电子表格应用中的某些数计算一个值并将该值复制到相关文字处理应用。用户可以给宏分配一个“热键”组合,从而用户可以通过简单地按下热键组合来运行宏。又例如,可以写一个宏以使得某些电子消息(例如来自配偶、客户或上司的消息)的重要性提高,从而计算装置的用户可以更容易地看到这些消息。一个熟知的基于宏的系统是用于微软OFFICE产品套件应用的VisualBasic。
发明内容
本文讨论用于在通常称为“云”的托管计算系统中创建并使用宏的系统和技术。可以从宏服务器子系统而不是从客户机设备存储并执行宏,由于只要合格的用户可以上网并提供他们的证书,所有的合格用户就可以从许多位置访问宏,因而允许在用户之间轻易地共享宏。
此外,宏可以容易地访问由托管计算系统或来自独立于托管计算机系统的第三方系统的多个应用和服务。这些服务可包括提供有关多个用户位置的信息(例如根据用户移动装置上的GPS确定的信息)的服务、提供新闻和天气供给的服务以及其他这种服务。这些应用可包括例如电子邮件和其他消息传送应用、如电子表格和文字处理器的生产应用、地图应用以及可以用单个呈现方式一起呈现的各种应用的混合(可由用户访问,甚至由用户开发,以提供来自宏的自定义输出)。
可由用网络浏览器显示的一个或多个网页把应用呈现给用户。系统还可提供宏的记录,其中用户可以调用宏记录器,记录器可跟踪用户在计算机上的动作并将这些动作变成宏代码,从而以后用户运行宏时可以自动重复这些动作。
即便在用户未和特定宏处理的应用交互时,包括用户未登录托管系统的情况,也可由出现的事件调用某些宏。具体而言,如果宏在服务器子系统上存储并执行,可将服务器子系统设置用于监控宏处理的整个系统中的特定事件。然后,这些事件可以触发宏的调用,宏可在服务器子系统上执行。
宏可访问系统上的服务或第三方服务。系统上的服务可授权访问对应于注册到该系统的特定用户的数据存储,同时对访问施加某些用户可配置的安全措施。例如,可响应于进入用户账号的电子邮件消息调用宏,进而把信息从消息复制到分配给该用户账号的电子表格(例如,这样用户可自动编译显示他们的所有到来消息的标题行的电子表格)。该宏还可检查一个或多个服务,例如位置服务、天气相关网站的数据,或者该宏可采取使用托管系统或托管系统外部的系统的资源的动作,以为宏收集数据并用宏作出决策。然后,该宏可在用户不在系统活动的情况下(例如未登录到托管系统,或者在用户的客户计算设备)采取动作,例如把消息信息放入电子表格、打电话给对应于用户账号的号码或其他这类动作。
宏可访问的第三方服务可包括SOAP服务或可从与提供该服务的域分离的域访问的、且提供用于通过互联网共享信息的公知机制的其他类似服务。例如,第三方服务提供者可编译最新天气数据,并根据请求使该数据为其他服务可用。
一个实现方式中,公开了管理计算机宏的计算机实现的方法。该方法包括:在互联网可访问的托管计算机系统存储计算机宏的代码;将所存储的代码和托管计算机系统上的用户账号关联;并且,无论和用户账号关联的用户目前是否在托管计算机系统上活动,自动用托管计算机系统识别定义为指向宏的触发事件。该方法还包括:使用托管计算机系统上运行的应用执行宏来产生宏结果,并把宏结果存储在托管计算机系统上。该方法还可包括产生消息给和用户账号关联的通信地址,通知用户宏结果。
一些方面中,触发事件包括定向到用户账号的到来数字通信。而且,触发事件可包括确定和账号所有人关联的计算机设备用户的位置。该方法还可包括把宏和托管计算机系统的登记用户关联,并且根据登记用户确立的访问限制使宏为托管计算机系统的其他用户可用。此外,可响应于来自多个不同用户账号的触发事件访问宏。
一些其他方面中,该方法还包括:从托管计算机远程的多个不同客户计算机上运行的多个应用接收执行宏的请求;在托管计算机系统上为来自该位置的每个请求自动执行宏,并且响应于执行宏把执行宏的结果提供给多个应用的每个相应应用。执行宏可包括调用托管计算机系统提供的多个不同托管服务。而且,执行宏可包括调用独立于托管计算机系统的第三方信息提供者提供的网络服务。该方法还可包括把运行在托管计算机系统上的第一应用产生的信息转换成不同格式并把转换后的信息提供给托管计算机系统上运行的第二应用,而且自动把执行宏的结果提供给在托管计算机系统登记的多个不同用户的多个不同账号。
另一实现方式中,公开了用于在托管计算机系统上执行宏的计算机实现的系统。该系统包括:可从托管计算机系统操作的多个托管应用;存储多个宏的宏数据存储,每个宏被分配给托管计算机系统上的用户账号,而且每个宏定义要由多个托管应用中的至少一个执行的一系列动作;以及操作调度(scheduling)模块的处理器,调度模块识别系统中的触发事件并且响应于和多个宏中的一个对应的所识别的触发事件开始执行多个宏中的该宏。系统还可包括操作接口的处理器,该接口被编程以产生给和用户账号关联的通信地址的消息,通知用户宏结果。
一些方面中,触发事件包括定向到用户账号的到来数字通信。系统还可包括跟踪系统的账号所有人位置的位置服务,而且,其中触发事件包括确定和代表他执行宏的第一账号所有人关联的第二账号所有人的位置。可响应于来自多个不同用户账号的触发事件访问宏,而且系统还可包括与系统的多个账号所有人关联的多个文档,其中多个文档包括指向宏数据存储中存储的宏的指针。此外,系统可包括位置服务,用于响应于来自宏的调用提供与在托管计算机系统登记的用户位置有关的信息。而且,只有在系统确定宏正在其账号运行的用户和要提供其位置信息的用户关联时,位置服务才可提供关于位置的信息。
另一实现方式中,用于在托管计算机系统上执行宏的计算机实现的系统包括:可从托管计算机系统操作的多个托管应用;存储多个宏的宏数据存储,每个宏被分配给托管计算机系统上的用户账号,而且每个宏定义要由多个托管应用中的至少一个执行的一系列动作;以及用于响应于识别到和特定账号所有人关联的触发事件执行多个宏的装置,其中触发事件的出现与特定账号所有人是否登录到系统中无关。
下文的附图和说明书阐述了一个或多个实施例的具体内容。根据说明书和附图以及权利要求,其他特征和益处是显而易见的。
附图说明
图1是示出托管计算系统中的宏操作的概念图。
图2是可以操作共享宏的托管计算机系统的示意图。
图3A是在托管计算系统上执行宏的过程的流程图。
图3B是管理事件触发的宏的过程的流程图。
图4A是执行从网页上运行的应用调用的宏的过程的流程图。
图4B是用于在托管系统上记录并执行宏的过程的泳道流程图。
图5示出宏系统中的对象的示例结构。
图6示出宏构建系统的示例截屏。
图7示出可用于执行本文所述动作的通用计算机装置的示例。
各附图中的类似参考标记指示类似的元素。
具体实施方式
图1是示出托管计算系统100中的宏操作的概念图。该操作可以和如下客户机设备或服务器上的宏操作相比,其中,在创建宏和/或把宏复制到宏的存储位置的用户从他们的台式计算机、上网本计算机或者从诸如网吧中的计算机的公用计算机运行应用的同时试图访问宏时,通过从各种客户机启动宏操作来将该客户机设备或服务器定向至单个客户端设备(例如,通过远程桌面连接服务或者VPN)。而且,可以通过第一用户限定对宏的访问限制而轻易的在用户之间共享宏,访问限制允许其他用户(例如,和初始用户从同一域访问系统的用户)在使用自己的应用时运行宏。而且,即便在用户不在线时也可为用户执行宏,例如当用户和用户计算机以外的输入触发宏执行时。此外,托管系统具有彼此相关的多个注册用户时(例如他们为同一商业组织工作),托管系统中运行的宏可以产生复杂的工作流程,这些工作流程分布在对应于多个这种用户的应用和/或数据存储上。
如所指出的,可以通过外部事件触发宏,例如通过收到电子邮件消息。宏可以运行在与用户的客户端系统以及运行其他服务或应用的任何子系统分离的宏服务器子系统上。例如,其他子系统上的服务可包括宏访问以获得信息的任何服务,包括主系统的内部服务(例如位置服务和电子邮件服务)和第三方服务(例如,来自商业的在线商店或拍卖站点、天气预报站点等)。
和系统关联的宏服务器子系统可允许写宏代码的用户以统一一致的方式写宏,这使编程体验对终端用户来说是容易的。例如,可以为展示给终端用户的不同服务定义对象模型,服务例如操作电子表格和日历、获得网络内容、发送电子邮件、访问他们的日历、翻译文本等。对象模型例如使用Java对象代表。每个Java对象可以包装访问底层服务的方法。电子表格和语言翻译服务可使用内部直接网络调用(例如远程过程调用),网络内容获取例如可使用SOAP或类似服务。很多这些服务不需直接展示给终端用户。
系统100可通过在底层Java对象周围创建几层“包装”或“装饰”来消除把内部服务展示给终端用户的风险。例如,系统100可包括限额强制层,其限制给定用户可调用给定服务的次数。系统100可包括允许细粒度的访问控制的安全层(例如允许对底层数据进行读访问但不允许写访问),安全层可使用基于能力的安全策略。系统100还可包括日志层,其可捕获所有用户调用并提供用户会话的记录。统一地而不是特别对于所有服务应用限额和安全策略,从而可减少程序员错误的机会(即最终的安全漏洞)。
系统100可包括用于管理计算机宏的各种计算机实现的机制,其中宏的代码存储在可通过互联网访问的托管计算机系统内的位置处,并且宏是可操作的以执行下述功能。接收到例如来自运行在托管计算机系统远程的客户计算机上的应用的执行宏的请求后,可以在托管计算机系统上执行宏。例如,宏可以直接在宏管理器或其通信耦合部件内运行。可以把执行宏的结果提供给运行在客户计算机上的应用(例如,运行在用户计算机的浏览器中的电子表格应用)。这种情况下,可以从编程宏以操作的文件外存储和访问宏代码。例如,虽然代码可以在托管服务服务器上执行,但宏代码更新的电子表格可以位于用户的笔记本电脑上或托管服务的其他位置处,在这些地方可以自由地指向宏并且从代表注册托管服务的任何多个用户运行的任意多个应用访问宏。
一些实现方式中,每个宏可以和托管计算机系统的注册用户关联,而且可以根据注册用户确定的访问限制使宏成为托管计算机系统的其他用户可用的(具体而言,使宏对其他用户的账号上运行的应用可用)。例如,“拥有”宏的用户可通过其他用户的用户ID或者通过这些用户所属的组确定被授权使用他的宏的其他用户。其他情况下,用户可提供到宏的链接或URL并包括和运行宏关联的某些权限。
可以由托管计算机系统为注册用户分配的一个或多个组定义访问限制。例如,用户可以授权名为“MyOnlineFriends(在线好友)”的组对宏的访问,并把权限分给该组内的所有人,这可代表该用户在他的社交网站上(例如Facebook、Orkut等)识别的“好友”。
一些实现方式中,可以接收执行宏的请求,这些请求来自托管计算机远程的多个不同客户计算机上运行的多个应用。例如,应用可生成或启动“事件”,在宏的定义中,这些事件设计用于开始宏执行,或者在等待状态后恢复或继续宏执行。系统100可在托管计算机系统上为来自该位置的每个请求自动执行宏。系统100还可响应于执行宏把执行宏的结果提供给多个应用中的每个相应应用。一些实现方式中,多个应用对应于单个账号所有人。例如,请求执行宏的每个应用可接收结果。一些实现方式中,多个应用对应于多个不同账号所有人(例如,系统100的多个注册用户)。
执行宏可包括调用托管计算机系统提供的多个不同托管服务。例如,宏可调用日历服务、联系服务、位置提供服务(例如指示用户位置或用户好友位置的服务)等。作为替代,或者作为附加,执行宏可包括调用独立于托管计算机系统的第三方信息提供者所提供的网络服务(例如,与托管计算机系统位于不同的域,和由与托管计算机系统不同的组织操作)。
还可以把托管计算机系统上执行的第一应用所产生的信息从第一格式转换成第二格式,所转换的信息可以被提供给托管计算机系统上运行的第二应用。例如,可以由文字处理应用创建逗号划界格式的数据,然后可以把数据提供给电子表格应用,以使用电子表格应用特有的格式粘贴到电子表格单元格。
执行宏的结果也可以自动提供给在托管计算机系统注册的多个不同用户的多个不同账号。例如,可以把宏执行结果提供给若干计算机系统上的若干用户,例如更新他们系统的每个上的共同的电子表格单元格。一些实现方式中,响应于加载网页的客户计算机上的浏览器而接收运行宏的请求,所加载的网页具有指向托管计算机系统中的宏执行子系统上的JavaScript宏的指针。例如,通过传递链接或URL给宏来共享宏时,可以链接或URL形式提供执行宏的请求(例如使用JavaScript或者任何其他相关语言)。
现在更具体地参看图1,作为实现上述全部或部分功能的示例,系统100包括一个或多个应用102(每个应用访问宏钩子104,这在访问宏时引起宏的执行)、一个或多个外部事件105、宏服务器子系统106、社交网络108、位置服务110和宏代码112。
应用102可包括可由用户激发运行或执行的任何可应用的应用,例如电子邮件应用、电子表格应用、文字处理应用、照片共享应用、文稿演示包、财务计划应用等。一些情况下,用户可以通过选择要运行的应用明确地开始应用,例如,通过双击桌面上或者应用的下拉式列表中的应用名称。也可以隐含地开始其他应用,例如用户点击电子邮件附件时(例如文本文件或电子表格),或者用户点击未知文件时,这两种情况中的任何一个都会自动开始执行和文件关联的相应应用,例如基于文件的扩展名或者其他定义的关联。用户还可以通过导航到定向到应用的URL来开始应用,例如托管的应用。
开始或执行应用的另一示例中,可以发生事件105,例如接收电子邮件消息,事件105可开始或恢复执行某个应用。例如,事件105(例如接收的电子邮件消息)可触发宏(例如,更新电子表格,增加标题行)。可以用托管系统上运行的、跟踪在系统进行注册的每个用户的事件的事件句柄检测事件的发生。可以报告每个事件,然后事件可以和特定动作关联,例如执行宏的动作,然后可以触发动作。
每个应用102都可访问宏钩子104。最简单的实现方式中,宏钩子可以简单地是指向系统100上存储的且在系统100上可执行的宏代码的URL。例如,钩子104可以是指向JavaScript代码的URL,可以包括在网页中,这样,加载网页或者发生和操作网页关联的某个事件时,可以访问并运行代码。除了有助于定义应用102中的宏外,或者替代地,宏钩子104可以执行事件跟踪并提供外部事件105和宏服务器子系统106之间的连接。例如,宏钩子104可允许用户定义与电子邮件应用102中接收的电子邮件有关的事件相关联的宏。宏可以识别与电子邮件应用102可提供的对象不同的对象。此外,宏的宏代码112的语言可以和电子邮件应用102中的宏本身的语言不同。宏钩子104也可以跟踪与宏有关的任何事件,并且可以适时地与宏服务器子系统106交互。宏钩子104可以通过用户选择记录宏或执行已有宏的选项来实例化或实现。
外部事件105可包括用于触发宏执行的多种事件,包括接收到电子邮件消息(例如,在电子邮件应用中)、确定(例如由应用确定)某个条件存在(例如超过限额,拒绝用户访问、过程已完成等)等等。可以用事件句柄跟踪这样的事件,可以用事件句柄为希望系统100中出现特定事件时执行一个或多个宏的每个用户注册要跟踪的特定事件。
一些实现方式中,事件可以嵌入在代码中,例如一行代码确定满足某个条件时(例如,变量达到某个值,或者晚上完成记账更新等)。外部事件105还可包括对消息的检测,例如文本消息、博客条目、到来的RSS订阅等。外部事件105可包括检测在线拍卖站点上发布特定物品,例如通过拍卖物品的标题或描述(例如老式梵蒂冈牌照)来确定。
外部事件105的触发条件可包括不同条件组合。例如,触发和电子邮件应用有关事件所用的条件可包括电子邮件标题行、发件人ID(例如老板、配偶、孩子等)、收件人(例如使用“发送”、“抄送”和“密送”的组合、收件人个数(例如,我是唯一收件人时通知我等)、是否有附件、发送电子邮件的位置、消息正文关键字或者电子邮件是否有可能是垃圾邮件。和文字处理应用对应的条件可包括文档大小、文档源、文档创建日期和/或最近修改日期、文档作者等。对于电子表格应用,可用于触发事件的条件包括特定电子表格单元格的值、单元格的值是否改变、电子表格中实际数据的行数或列数、电子表格作者、电子表格大小等。适用于其他类型文档的条件可包括文档是否刚刚改变等。可由网络上的源或服务产生其他触发事件,例如在线天气服务站点发布的向特定城镇的龙卷风警报。这种情况下,关心天气的用户可能已经构建了宏来截取与天气有关的外部事件并向其家人或邻居发送文本和/或致电。
事件也可以是多个不同源的组合。例如,最初可由从特定用户接收电子邮件触发初始事件,但是,只有在发生该事件且使用位置跟踪服务确定发送或接收电子邮件的用户处于特定位置时才执行宏。也可以利用使用来自其他服务的信息的附加或替代条件。
宏服务器子系统106可监控系统100中的特定事件,例如应用102传播的事件(例如电子邮件消息等)。除了可用作到宏服务器子系统106的指令的事件外(例如延缓和服务器XYZ、应用ABC或用户约翰多伊的通信,直到收到进一步的通知),宏服务器子系统106感兴趣的特定事件可包括可用宏处理的任何相关事件。
各种服务可以事件触发器、响应于触发器而运行的宏的输入或者宏输出的形式和系统100交互。例如,社交网络108可向系统100提供对确定如何处理事件有用的信息。举例来说,宏可定义成在接收到发送给贝蒂的电子邮件时执行操作,但是只有在邮件来自贝蒂的一个好友(例如,如一个或多个社交网络中所定义的)时才执行操作。在另一个示例中,宏可设计成向贝蒂的所有“好友”(如社交网站或社交组所定义的)发送自动电子邮件或其他通知。运营社交网络108的组织可以和运营子系统106的组织不同,前一系统108的运营商可通过API提供对一些信息的访问,以及提供对已经给了子系统106的运营商这样访问的内容的访问。
在另一个示例中,位置跟踪服务110可以在用户邀请时跟踪和用户关联的移动设备的位置,例如这样用户可以找到他们的好友,反之亦然。例如,宏可定义成发送电子邮件或文本给用户,电子邮件或文本的目的地可取决于用户当时所处位置。例如,如果用户持有蜂窝电话或其他移动设备(例如基于GPS的设备),那么位置跟踪服务110可以跟踪或知道用户位置。根据用户位置,通过执行宏而传播的电子邮件可被发送给用户的移动设备或者家里的设备(例如,如果用户离家近,或者位置服务110确定用户可能在去往该方向)。
除了例如用户支持GPS的设备发送的“我在哪?”位置信息外,用户还可通过位置跟踪服务110接收到“我该向哪去?”信息。该信息例如可包括GPS坐标或简单的文本消息(例如,“在此转弯,然后上山到10107”)。
子系统106可存储、跟踪、访问、共享并执行宏代码的各种实例。构成宏的宏代码112可采用任何适当的语言,但是典型地用系统100使用的优选宏语言(例如JavaScript等)编写或编程。由于宏是以熟悉方式执行的,宏服务器子系统106可解析(或搜索)宏代码112的、关于函数或关于宏的片断,例如“得到名称”函数114、“检查名称”函数116、“得到位置”函数118或者宏服务器子系统106要考虑的任何其他函数或宏。嵌入在宏代码112中的任何函数或操作可引起宏服务器子系统106执行不同类型的处理,例如检查用户访问文件的授权等。
宏代码112可存储在各种位置,例如中央宏仓库或者可通过互联网访问的托管服务器系统。一些实现方式中,宏代码112的整个集合可分布式存储并通过一个或多个网络在逻辑上绑定在一起。一些实现方式中,宏代码112敏感时(例如其包括或更新用户的个人信息)或者由于国防原因进行分类时(例如,机密、最高机密等),宏代码112可明确地存储在独立的位置,例如位于安全服务器上。
一些实现方式中,可使用“监听器”进行事件跟踪。例如,在服务器上加载电子表格并将其HTML发送给浏览器时,可以触发指示已经打开了新电子表格的服务器端事件。然后,监听该事件的电子表格服务器上的监听器可以查看它是否有该电子表格的脚本列表。如果没有脚本列表,监听器可以打电话(例如,给脚本服务器),主要说,“有用于该电子表格的任何脚本么?”,并且传递电子表格关键词,然后保存脚本列表。然后,电子表格服务器上的事件句柄可以检查是否存在名为“onOpen”的任何脚本方法。如果存在该脚本方法,服务器可以发送消息(例如给Google应用脚本服务器)执行该方法。该流程也可用于其他情况,例如编辑事件等。
在又一示例中,宏可以和电子邮件应用关联,该电子邮件应用设置用于执行例如取决于标题行、电子邮件发件人、电子邮件消息是否有非常大的电子表格附件、是否有(任何类型)的附件等的某种消息路由。以这种方式定义的宏还可以使用位置信息,例如由位置跟踪服务110提供的位置信息。例如,如果发送给用户工作电子邮件的电子邮件消息有大的电子表格附件,并且确定用户在家(由于来自用户的移动设备的GPS信号对应于登记成用户家的位置),则宏可被建立成转发副本到用户的家庭电子邮件。这种情况下,附件可能是与工作有关的电子表格,需要为第二天工作中用的演示或项目进行审阅。备选地,在发现用户不在家附近的这些情况下,可以把宏建立成发送小的消息给用户的支持电子邮件的移动设备,提醒用户该邮件的存在。
这两种情况下,宏代码112可以从引起宏执行的任何电子邮件应用102上删去并存储在宏服务器子系统106上。对接收到的每个到来的电子邮件消息,电子邮件应用102可以通过用钩子104指向宏代码来触发宏。然后,宏可以识别消息的各方面,例如特定发件人是否是账号所有人社交网络的成员。如果社交网络检查结果是肯定的,宏可以进一步检查位置跟踪服务110以确定账号所有人或发件人的地理位置,并且可以基于这样位置引起某些动作的执行。例如,某些情况下,宏服务器子系统106可以基于账号所有人(或用户)的位置通知账号所有人。其他情况下,宏服务器子系统106可使账号所有人被呼叫(例如通过使用VOIP的全球通话路由系统),并/或引起SMS消息的发送,或者宏定义的其他动作。
宏可以经由一个或多个经认证的API、通过访问系统100上运行的各种应用来获得并提供这种信息。子系统106可具有多个不同的API转换服务,这样,作者可以为子系统106写单个宏语言,但是仍可以用于不同应用。
宏在独立于用户客户计算设备的宏服务器子系统上托管可带来若干益处。例如,可以在许多不同应用上使用宏。而且,可以在用户从各种接入点在线时触发宏,接入点例如为他们的台式计算机、他人的计算机、上网本或者智能电话,而且即便用户不在线或在他们的计算机上时也可触发宏。这种宏可被定义成截取一类应用(例如电子邮件)的事件并更新其他应用中的数据(例如电子表格,其中自动在电子表格中编译用户的到来电子邮件消息的标题行)。
另一益处是可以无需手工复制宏而在用户之间完全共享宏的能力。相反,可以对每个宏设置一个或多个安全级别,允许如创建或首先保存宏的用户所确定的其他用户的访问。例如,用户可以像例如在线照片共享站点的公共网页属性所做的那样设定宏的访问安全级别并把宏的URL提供给另一人。
某些情况下,在宏服务器子系统上托管的宏的益处还在于提供了针对来自各种用户的数据运行宏的能力,或者把运行宏的结果提供给各种用户的能力。例如,共享的宏可用于把多个作者的贡献组合成较大的书卷,例如多人所写的诗歌或文章。每个贡献者的文档可以保存在预定位置,如果贡献者提供了访问该位置的权限,宏就可以访问该位置。然后,可以把组合后的书卷作成每个贡献者以及可能更多用户可用的单个文档。如另一示例,可以使用托管子系统上的宏创建商业流程应用,其中文档一直本地保存在服务器系统上,例如传送文档进行审批。
图2是可以操作共享的宏的托管计算机系统200的示意图。一般而言,系统200提供示出用户可以创建宏并且在托管系统上保存、共享、访问并执行该宏的一个示例的各个部件。
该系统200中,宏服务器子系统202提供在脚本信息存储数据存储206上以一致方式保存宏代码的位置,其中所保存的信息可包括宏库名称、脚本内容以及宏所有人的标识符(例如,使用模糊的用户ID或其他标识符)。运行宏时,可以向宏服务器子系统202发送命令以执行给定宏。然后,可以从脚本信息存储数据存储206获得代码,而且可以在脚本引擎或脚本执行器208中创建实例。
可以构建代表不同服务器端应用的编程API的Java对象,并且可以包装在基于能力的安全包装中,并且成为程序员可见的经包装服务(或“程序节(bean)”)。经包装的服务210可以包括宏服务器子系统202可以例如向和宏执行有关的经包装服务的消费者提供的所有相关服务。经包装的服务210可以是一组其他对象的任何相关对象,经封装以使得它们容易被传递。
经包装的服务可包括展示和后端服务交互的公共方法的Java业务代理。公共方法可包括在用于封装方法、类、字符串、电子表格、应用编程接口(API)和各种计算机语言(例如Java等)提供的其他工具的封装或其他机制中。公共方法可展示(或使其成为公共的)例如可用于定义并执行宏的资源。公共方法的实现方式的某些细节可以保密,这可提供适当级别的信息隐藏和抽象。公共方法在多个不同类型的对象之间看来是类似的,向宏用户展示某种程度一致的外观和感觉,因而提供一种级别的多态性。结果,这组经包装的服务可有助于面向对象、事件驱动环境中的用户的宏的使用。
该示例系统200中,这些经包装的服务或程序节可以附加到顶层Java对象,该对象具有每个属性的公共成员(例如电子表格、日历等)。该顶层Java对象用标准的预定标签插入到脚本执行器的环境范围内。一些实现方式中,脚本执行器把公共成员(而且仅仅是公共成员)反映给脚本环境。
因而,用户的JavaScript代码执行以下代码时,
vardoc=google.spreadsheets.create(″mynewdoc″);(1)调用顶层对象的“spreadsheets”字段中Java对象上的“create”Java方法。该方法的Java实现使用“CREATE”命令和对应于新标题的自变量(例如“mynewdoc”)以及脚本运行者的模糊标识符向电子表格服务器进行远程过程调用。电子表格服务器响应于远程过程调用创建新的电子表格并返回其关键词。宏服务器创建代表包括新关键词的新创建的电子表格的新Java对象。Java对象包括用于多个电子表格操作的方法,例如“rename”、“insertSheet”等。该对象还包装在基于能力的安全包装中并且被返回。脚本执行器把该对象内部包装在NativeJavaObject包装中并将其返回给上述变量“doc”。
包装对象的一些实现方式中,任何适当的服务(例如电子表格、日历、电子邮件等)可返回包装在Java动态代理中的对象。可存在不同代理,例如用于安全、日志和限额。每个代理可接合或使用展示哪个服务的描述(例如,Java接口,例如“Spreadsheet”、“SpreadsheetRange”、“EmailService”等),这可定义公共方法。接口上可存在注解,适用于不同包装。
例如,电子表格服务上的“create”方法可以创建新的电子表格。该方法可具有一个如下注解,声明该方法是WRITE方法,提供例如用于警告用户脚本会试图向他们的电子表格文档组写入(而且如果用户没有授权给脚本WRITE特权,则运行时脚本会失败)的机制。基本上,安全包装有助于保证给定方法声明的所需权限(WRITE等)在用户的授权令牌中。如果方法被授权,就把调用传递给下一层。
还可以通过限制特定用户能够访问关于宏的操作的次数来提供安全。为了执行该功能。“create”方法上可存在限额注解,说明应根据终端用户“createspreadsheet”限额计数该方法的调用。限额包装可以调用或使用限额服务来跟踪给定用户引起操作执行的次数。例如如果用户超过限额,该方法会出错,如果没有超过限额,就再次将其传递给下一层。可以在设定的时间段内计算用户限额,例如一天、一周或一个月,而且限额可以在时间周期点重置或递减。
记录所提供的自变量以及所调用的每个方法的字符串版本的日志层还可以提供宏执行记录。
包装服务创建器212可以创建顶层包装服务,其程度取决于宏及其环境。例如,包装服务创建器212可以检查运行宏的终端用户明确赋予宏的能力,并且可以创建对应于宏状态的顶层程序节。状态例如可包括当前文档(如果存在)(例如电子邮件、文本文档、画图、电子表格等)以及用户认证。包装服务创建器212可以产生能力基于环境的顶层包装服务,并且可以把经包装的服务210注入到脚本执行器208的执行环境中,在该环境中用户例如可以定义并执行宏。某种意义上来说,可以认为包装服务创建器212是程序节的生产商或工厂,或“程序节工厂”。
可以创建的经包装的服务210的类型例如包括电子表格应用、日历应用等的包装能力的示例。可以把该Java对象插入执行范围。可以用对象的源来识别对象(例如,用标记“TopLevel”)。因而,例如″TopLevel.spreadsheets″可成为对包装能力对象的参考(例如SpreadsheetApplicationApi对象)。对象的公共方法可以作为Java对象反映在JavaScript编程环境中并且可使之成为宏可用的。
例如,如下JavaScript代码可打开已有的电子表格(例如,称为“MyOtherDoc”的电子表格)并且把当前电子表格单元格A1的值复制到新的电子表格的单元格B2。
vardoc=google.spreadsheets.getActiveSpreadsheet();
varotherDoc=google.spreadsheets.openByName(″MyOtherDoc″);
varvalue=doc.find(″A1″).getValue();
otherDoc.find(″B2″).setValue(value);(3)和所有其他对象一样,如“find”方法返回的Range对象的Java对象是能力包装的,如果验证的用户没有权限访问相关电子表格则该对象会出错。例如,前述复制/粘贴单元格的示例,成功执行所需的访问是对活动电子表格的读访问(例如getValue所需)和对目标电子表格(例如电子表格“MyOtherDoc”)的写访问(例如setValue所需)。
脚本执行器208可以负责为宏创建上下文并执行顶层经包装的服务210的实际插入。可以为每个宏执行创建新的顶层范围,例如防止一个执行的脚本“毒害”其他脚本的全局范围的可能性。可以通过实现类开闭器或过滤器来加载宏上下文,类开闭器或过滤器防止创建任何未批准的Java类(例如,不在允许类的白名单上)。此外,脚本执行器208可创建用于阻止失控脚本的指令计数器,以检测脚本何时进入了无限循环。一些实现方式中,可以用脚本管理器204提前中断失控脚本。
脚本执行器208可负责各种功能,包括解析、检查句法、函数调用、宏执行和恢复。解析功能可检查脚本并返回在如脚本信息数据存储206的数据存储中的脚本存储中发现的函数和宏列表。例如,参看图1,作为解析功能的结果所检测到的函数和宏可包括得到名称函数114、检查名称函数116、得到位置函数118或可嵌入在脚本或宏代码(例如宏代码112)中的任何其他函数、宏等。
系统支持的其他功能可用于帮助管理服务器端系统200的一组宏。例如,存储脚本之前,句法检查功能可以确定脚本中是否有错误(例如句法错误、语言编译错误、关键词误用等)。如果检测到句法错误或其他错误,可以通信该错误,提醒用户或脚本程序员。
调用功能可以“调用”(或开始执行)宏中的函数。该调用功能可以是执行宏的限制版本,诸如授予(例如电子表格中的)单元格内的函数调用特权的版本。例如,宏的限制版本可以仅限于返回值,而不允许创建副作用。
宏执行和恢复功能可用于开始和恢复宏。例如,宏执行功能可以开始宏的初始执行。一些情况下,宏的执行需要用户的额外输入。这种情况下,等待用户进行输入的时候,可以暂缓宏的执行,或者进入等待状态。一旦提供用户输入后,恢复宏功能可以继续执行暂停了的宏。
脚本信息仓库206可以用作数据存储,提供并/或支持如脚本/宏创建、存储、检索、更新、删除等操作。存储在脚本信息仓库206中的脚本可以被组织成用户库、单个脚本或应用(例如,用于电子邮件、电子表格、文字处理文档的应用等)。可以对整个用户库执行操作,或者对库中的单个元素执行操作。例如,一个操作可以用用户库的ID检索用户库(例如基于库名称的主键查找)。另一操作可以检索链接到给定文档的所有用户库,例如代表宏或脚本的文档。
脚本信息仓库206提供的检索操作可包括以下操作:检索给定用户对给定用户库的授权、检索给定用户拥有的所有用户库、用ID检索继续记录等。
脚本信息仓库206提供的创建/更新操作可包括如下操作:创建/更新用户库、创建从库到抽象对象的关键字(例如文档ID)的关联、创建/更新给定用户对给定库的授权、创建新的继续记录(例如用给定用户的序列化的二进制数据)和库,以及其他创建/更新操作。
脚本信息仓库206提供的执行删除的操作可包括如下操作:删除继续记录、删除从库到抽象对象的关联以及删除库、移除所有子对象,所有子对象包括和授权以及链接继续关联的子对象。下文参考图5描述脚本信息仓库206的示例逻辑结构。
脚本管理器204可将命令派遣到底层部件206-219。具体示例命令的描述遵循用标号从1到6标注的一系列进程过程,且到底层部件206-219的派遣控制路径被标记为上述过程,这些标号是按时间标注的,但是可能的情况下某些动作可以其他顺序发生。
脚本管理器204可执行的一个命令(例如通过派遣)是存储用户库。命令执行例如基于用户特权或其他安全策略而受限。例如,如果用户库表示(例如协议缓冲器)包括库ID,脚本管理器204可保证允许执行用户修改库。如果存在授权,那么脚本管理器204可将其写入存储层,并返回库的新表示。如果没有ID存在,那么可以创建新ID,可以返回包括新产生的ID的表示。存储库可包括例如解析库中的函数(例如使用脚本执行器208)、向库DAO对象增加函数、检测句法错误(例如使用脚本执行器208)、存储库内容和存储所有人。参看图2,存储用户库所涉及的部分可例如用过程1、2和6指示。
例如,协议缓冲器用于用户库表示时可包括可以在线上序列化或者以二进制形式存留于数据库中的数据结构。该数据结构可使用强类型的字段以强制执行通信协议。
脚本管理器204可执行的另一命令是导入库。该命令可创建库到给定文档(例如电子表格、电子邮件日历或者任何其他可附上下文)的链接或其他关联。例如,电子邮件消息可以和用户的给定邮件账号关联。链接的目的是底层文件可以快速辨明自己和哪个宏关联,例如,以在“运行”菜单中显示。例如,库导入命令可以在数据存储中创建“链接”表条目。参看图2,导入库所涉及的部分例如可以用过程1和2指示。
脚本管理器204可执行的另一命令是复制命令,该命令复制已有的库,制作其内容的复本。例如,可以把库中包括的所有脚本和宏复制到一个新库名下。复制动作制作库的内容的复本,但是没有复制关联。将新创建的库的所有人设为当前所有人。复制操作完成后,返回新库的ID。例如,复制命令可以在数据存储中创建新的“UserLibrary”表条目,而不复制任何链接、继续或授权。参看图2,复制库所涉及的部分例如可以用过程1和2指示。
例如,删除库命令可以检查权限,然后如果允许的话,该命令可从数据存储中(例如在脚本信息206中)删除库。例如,删除库命令可以从“UserLibrary”表格和所有子表格中移除条目。前端可以负责例如给出任何“你确定吗?”这样的询问。删除库所涉及的部分例如可以用过程1和2指示。
用户得到库的命令可以根据用户ID返回给定用户拥有的库。例如,命令可以返回脚本信息206中保存的、用户字段是当前用户的用户库(例如,在UserLibrary或其他表格中)条目。参看图2,获得用户的库所涉及的部分例如可以用过程1、2和4指示。
通过文档得到库的命令可以返回给定文档导入的任何库。例如,得到库命令可以扫描Link表格中匹配的“documented”字段并返回父“UserLibrary”。参看图2,获得文档的库所涉及的部分例如可以用过程1、2和4指示。。
分类库命令可以向如“样本”的“虚拟”文档增加关联。例如,分类库命令可以在Link表格中创建具有给定名称(样本等)的条目。参看图2,分类库所涉及的部分例如可以用过程1和2指示。
得到分类库命令可返回具有给定分类的所有库。例如,得到分类库命令可和得到文档库命令类似。参看图2,通过分类搜索库所涉及的部分例如可以用过程1和2指示。
评估功能命令可从库中检索函数并将函数传递给脚本执行器208进行执行。参看图2,评估功能所涉及的部分例如可以用过程1、2、3、5和6指示。
给评估宏命令提供输入参数(例如库ID、宏名称以及有关当前文档的上下文信息(如果存在))时,该命令可创建具有包装的编程程序节并将包装服务传递给脚本执行器208进行执行。参看图2,评估宏所涉及的部分例如可以用过程1、2、3、5和6指示。
给定宏库ID和继续ID时,继续宏命令可调用脚本执行器208上的继续操作。例如,该命令可使暂停执行的宏继续活动执行。参看图2,继续宏所涉及的部分例如可以用过程1、2、3和6指示。
更新授权命令可以更新(或增加)给定的宏库以及给定用户的一组授权在数据存储中的条目。参看图2,更新授权所涉及的部分例如可以用过程1和2指示。一些实现方式中,“得到库”和其他命令可典型地仅在脚本存储层工作,而不调用脚本执行器208。
现在参看系统200的另一部分,命令servlet216可使得响应于来自宏控制器(例如JavaScript宏控制器“MacroController.js”)的请求而执行宏命令。响应可作为重定向而出现,例如对用户透明且自动的重定向。一个重定向技术示例中,浏览器客户机发出到特定URL的请求时,重定向规则可把请求定向到宏服务器,例如宏服务器子系统202。命令servlet216可处理的请求类型包括例如名称为GET_ADMIN_PANEL、SET_SCRIPT等的几个请求。
例如,GET_ADMIN_PANEL请求可返回宏管理面板的完整HTML,宏控制器(例如MacroController.js)可把HTML插入封闭对话中。SET_SCRIPT请求可把脚本内容和用户库ID发送给命令servlet216。命令servlet216可调用脚本管理器204以创建/更新用户库,这会造成返回HTML(例如由GXP生成)用于面板左手侧(包括分类和库名称)。macrocontroller.js可在左手侧面板的div(部分)中呈现HTML。
GET_SCRIPT可从脚本管理器获取给定库的脚本内容,并返回用于编辑脚本的内容窗格(由GXP生成)。macrocontroller.js可把HTML置于面板的内容div中。
IMPORT_LIB请求可用导入库命令调用脚本管理器。请求可通过gxp呈现面板的左手侧并将其返回给macrocontroller.js。
COPY_LIB请求可以和IMPORT_LIB命令类似,但是使用复制命令而不是导入命令。DELETE_LIB请求可以和IMPORT_LIB类似,但是使用删除命令,例如以通过gxp返回整个管理面板HTML。CATEGORIZE_LIB请求可用作“增加到样本”特征。和IMPORT_LIB一样,CATEGORIZE_LIB可用分类库命令调用脚本管理器并返回面板的左手侧进行重绘。
RUN_MACRO请求可使用宏名称、库ID和文档状态的序列化表示(例如当前选择等)并调用脚本执行器208以执行给定宏。如果发生错误,把错误消息发回给macrocontroller.js以显示给用户。如果用户必须给宏授权,可以把消息发回给macrocontroller.js以提示用户。
宏服务器子系统202通过网络224和应用220以及位置服务器222交互。应用220可以是用户采用用户装置226执行的应用,例如为用户笔记本电脑上运行的网络浏览器。用户装置226可以显示例如网页226a(例如使用电子表格服务器)。用户网络浏览器可采用宏控制器226b以控制宏在用户的用户装置226上的执行。
来自第三方进程和网页228的外部事件可作为在宏服务器子系统202上定义的宏的触发机制。可以通过如互联网的网络230接收外部事件。这里的外部事件可对应于参考图1所述的外部事件105。
除了内部事件外,如位置接收器218接收的位置信息的外部事件也可以由事件servlet214跟踪并报告。事件servlet214可以实现基于服务器的事件注册表,其用作系统200中出现的事件的通信集线器。
可以用系统上运行的如宏相关进程的所感兴趣进程或订阅进程来访问事件注册表,而且事件注册表可向这些进程提供提醒从而出现某些事件时这些进程可被实例化。为此,事件注册表提供可由事件消费者调用的方法。事件注册表可展示各种方法,例如“监听(listen)”方法、“不监听(unlisten)”方法以及可用于管理事件的其他方法。
监听方法用作系统内事件监控和跟踪的基础,可具有自变量和参数,例如用户名、事件过滤器和目标。因而,监听方法调用的一个示例格式可如下:
listen(userName,eventFilter,target);
调用监听方法会通知事件注册表代表经验证的用户(例如通过“username”识别的用户)去监听特定事件,并将在出现这些事件时将其路由到一个或多个特定目标(例如通过“target”参数识别的目标)。例如,可以用事件过滤器(例如“eventFilter”参数)识别特定事件。事件过滤器可包括服务标识符(例如电子邮件服务、日历服务等)和其他服务特有的过滤器(例如“电子邮件收件人”、“文件夹创建”等)。目标例如可以是远程过程调用(RPC)回拨。例如,发生或出现事件时,事件注册表可把事件细节发送给该端点(例如目标)。一些实现方式中,目标可以是宏服务器子系统202的部件,其具有标识事件触发时运行哪个宏的标识符。
对应的“不监听”方法可用于取消接收有关事件的通知的请求。调用不监听方法的调用形式可如下:
unlisten(userName,eventFilter,target);
调用不监听方法可等价于取消或停止“监听器”。同样地,该命令的参数与最开始用于开始监听事件的参数相反。
还可以通过事件servlet214应用复合事件条件。例如,可以定义事件过滤器从而只有在到来的电子邮件到达并且电子邮件的发件人或收件人位于某个位置时才触发通知。这种复合标准可以用单独的宏实现,例如,由这样的宏实现,该宏由电子邮件到达而触发,然后检查位置服务以得到收件人或发件人的位置,只有在位置和特定值匹配时才继续执行。标准还可通过事件servlet214实现,例如通过提供servlet214可执行的进程,从而在通知订阅服务开始执行宏之前收集信息以确定是否已经满足复合条件。
某些情况下,事件条件可以彼此联合,如采用级联或串联方式那样。例如,事件出现可通过事件servlet214发送消息给脚本管理器204来触发宏的启动。然后,该宏可运行并提供涉及由事件servlet214定义的其他事件的输出。作为响应,事件servlet214可发送另一消息给脚本管理器204,以使脚本管理器204启动不同的宏。使用类似方式,单个事件可同时触发两个不同宏的执行。例如,用户可能希望响应于用户账号接收到任何电子邮件而运行一个宏(例如,从电子邮件提取标题信息并将该信息放入电子表格),而且还希望在收到来自社交网络系统(可独立于操作子系统202的系统和组织)中定义成第一用户的好友的用户的邮件的任何时刻且当该好友位于第一用户的特定距离内时运行另一宏。因而,来自该位置的该好友的电子邮件到达时,可以并行地同时触发并执行两个宏。
可用几种不同方式启动事件通知。例如,可利用程序启动事件通知。一些实现方式中,可以创建“安装器”脚本或其他程序代码,其利用程序在事件注册表内注册事件类型。例如,企业内的包裹跟踪应用可在部署或初始安装时在邮件列表上注册事件监听器,其是可操作的以通知客户包裹已到达、包裹已寄出、已收到运费、货物已到达X处等。然后,当在邮件列表上检测到活动时,可以自动运行脚本库(例如包裹跟踪脚本库)内的其他动作。利用程序启动的该示例中,很少需要、甚至无需终端用户干预来“建立”事件监听器,这是由于已经事先确立监听,例如作为包裹跟踪应用安装的一部分。一些实现方式中,可以提供另外的用户接口以调整监听器或者定义新的监听器。
启动事件通知的另一示例机制中,提供事件的目标应用可以创建并展示自己的接口以允许用户把事件类型和特定脚本调用绑定。例如,一些电子邮件应用(例如苹果的Mail.app)可使用用户可采用的自定义过滤器,例如在发生特定事件时指定运行某个应用(例如AppleScript)。其他应用(例如Gmail等)可包括允许用户定义电子邮件属性准则(例如包括字符串ABC的电子邮件、电子邮件来自/发送给特定地址等)以及被执行的动作(例如,把电子邮件存档、给邮件加标志、转发给地址XYZ等)的过滤器。类似地,Gmail可允许用户可选择地增加例如“运行脚本XYZ”作为满足特定过滤器准则时要执行的动作之一。其他应用可使用类似特征,例如Google电子表格中的改变通知服务,其是可操作的以发送有关电子表格改变的摘要的电子邮件(给用户)。一些实现方式中,替代发送邮件,或者除了发送邮件之外,还可以提供调用宏的其他选项。
还有管理事件、用户和用户账号、事件过滤器以及和事件注册表关联的目标的其他方法。例如,用户可使用getRegisteredListenersForUser方法获得与其账号目前监听的所有事件有关的信息(例如其监听器列表)。例如可在管理面板或者其他用户界面显示该信息。其他事件管理方法可包括向特定用户名,事件过滤器或者目标或其组合提供信息的方法。
事件servlet214实现的事件注册表可维护用户/监听器对的数据库。接收到“监听”方法或命令时,例如事件注册表可以解开服务过滤器并发送消息给对应的服务。
每个服务可用类似的包括用户证书和事件过滤器的“监听”方法展示RPC端点。服务的目标可以是事件注册表自身。例如,服务在内部检测到条件满足事件过滤器时,该服务可发送事件给事件注册表。该过程这一部分(通过每个服务器的)内部实现可以留给特定服务器负责,从而不需要求系统该部分的任何特定内部实现。因而,事件广播器可以适合自己的方式实现该合约。
事件注册表注册(或检测到)事件时,事件注册表负责从其数据存储中解开目标信息并把事件通知发送给所有相关目标。通知可包括事件自身的标识以及目标可能需要的任何其他相关信息。一些实现方式中,主要目标可以是宏服务器子系统202。一些实现方式中,可以使用其他目标,例如包括通知服务、日志服务、网络服务及其他。
一些实现方式中,系统可设计成使得对不同部分的设计考虑彼此解耦(decoupling)。例如,事件注册表可知道目标,而事件广播服务则不知道。此外,事件广播服务可以知道如何应用事件过滤器(例如“邮件已发送”、“电子表格单元格已更新”、“项目放在文件夹内”),而事件注册表则不知道。例如,事件注册表可以仅知道如何定位服务端点(例如用于目标)。该解耦设计可提供的益处为,允许未来的参与者(如第三方)自由实现他们的系统端而不需担心到N个可能目标的路由细节。
有关传输机制,实现方式可使用用于API调用、网络传输协议等的任何合适机制。例如,事件注册表的一些第三方参与者可使用各种网络服务(例如“SOAP”)用于许多外部API调用。其他参与者可使用表示状态转移(REST)或其他适当的API。如提供子系统202的组织的其他参与者可在内部使用专有网络传输协议。这些机制中的每一个或者此处未罗列的机制可保存事件流的内容和语义。
一些实现方式中,用于用户认证的方法例如可包括OAuth或用于允许一个应用访问另一应用上的用户数据的任何其他适当的开放标准。例如,可以无需用户提供密码或其他具体证书而允许访问。具体而言,使用OAuth或类似方法时,用户可允许事件注册表在各种打开的应用中调用事件子系统。调用可使用每个服务可识别的令牌。作为结果,认证可限于事件系统,例如,同时禁止访问其他服务,例如代表用户发送电子邮件(例如未经用户许可等)。
每个事件的内容(或“事件数据”)可包括例如一组属性/值对。例如,可为所有应用定义通用的一组标准属性(例如“用户”和“服务”)。此外,每个应用可定义其服务专有的额外属性。例如,电子表格应用可定义属性“电子表格单元格”,该属性对非电子表格应用无用。
一些实现方式中,一些或所有过滤器可出现在事件注册表中,而不是仅在参与服务中或者混合出现在二者之中。这种情况下,参与的服务可以不加辨别地将所有事件推给事件注册表,事件注册表会基于其存储的监听器执行事件过滤。虽然基于注册表的过滤会简化或消除参与服务的过滤,但是,一些情况下,这种方法会使系统过饱和。
这里,系统还可允许用户如下记录宏:实例化宏记录器、执行宏记录器跟踪的多个动作并保存这些动作的表示,用户以后可进行调用该表示以自动执行该动作。该实现方式中,典型在服务器端进行宏记录。用户执行可记录命令时(例如,设定单元格值、插入工作表等),可以向电子表格服务器发送命令。该服务器可以注意自己是否处于“记录”模式,是的话,服务器可查找命令并在与具有同样效果的脚本代码对应的运行字符串缓冲器内写入文本。
例如,考虑如果用户在电子表格的单元格A1中敲入“hello”。可以向电子表格服务器发送命令,命令ID的意思是“设定范围”,值为“hello”,行为0,列为0,工作表ID为0(例如,如果是第一页工作表)。注意,这不仅是给记录器的;这是在电子表格服务器上实际进行改变单元格的命令,因而无论是否出现记录都要发送该命令。因而,记录器基本上等同于进行电子表格操作的已有命令流上的窃听装置。
记录器可查找命令ID并发现这是“设定范围”命令。记录器知道要产生的正确代码是对“范围”对象的“setValue”调用,因而记录器可查找并使用行和列来产生相应文本。然后,记录器查找并使用工作表标识符,确定该工作表的变量是否已经存在。结果,宏记录器可产生如下文本:
sheet.getRange(′a1′).setValue(′hello′);(2)
因而,通过这些结构,计算机用户可登录到托管计算机服务并访问多个不同应用和服务。用户可明确地选择执行宏,或者可自动触发宏,宏可在该应用中以及如果其他相关应用被宏引用的话可自动实例化的该其他相关应用中运行。结果,用户可访问大量的数据和编程机制以产生稳定在线服务。
图3A是用于在托管计算系统上执行宏的过程300的流程图。过程300例如可用于在系统100和200上运行宏。一般而言,所示过程包括识别相关宏代码、创建对象以执行代码以及执行代码来和托管计算机系统上的一个或多个应用交互。
本示例中的过程300从框302开始,在此接收到运行宏的命令。命令可以是如参考图1所述的外部事件105的结果,或者用户可以手动选择要运行的宏。例如,前一种情况下,外部事件105可以是接收到电子邮件,命令要运行的宏可以是响应于接收到电子邮件执行操作的宏,例如用电子邮件的标题行更新电子表格。宏钩子104可以参与检测外部事件105,然后,还负责触发要运行的宏,例如通过和宏服务器子系统106通信。
在框304,识别、检索并执行宏代码。例如,参看图2,脚本管理器204可以向脚本信息206识别要执行的宏代码。然后,脚本信息206可以返回所请求的宏代码给脚本管理器204,然后,脚本管理器204可启动宏代码执行。
作为执行宏代码的一部分,(在框306)创建具有代表用于宏与之交互的应用的编程API的Java对象的实例。API可对应于宏代码与之交互的应用。例如,如果宏代码设计用于更新电子表格,那么创建的实例包括代表用于相应电子表格应用的编程API的Java对象。
在框308把对象包装在安全包装内。例如,安全包装可以是围绕宏代码自身的额外代码,例如,除非用户采取肯定动作否则就不允许宏代码运行。一些实现方式中,动作可以是点击“OK”,或者明确准许宏的一些其他方式。
安全包装可以各种方式保护终端用户,例如免受特洛伊木马攻击、免受网络钓鱼攻击以及免遭其他恶意代码的攻击。一些实现方式中,可以在向用户递送对话框后构建安全包装。对话框中包括的消息可把宏识别成可能不能信任的宏,并且进一步识别如果运行宏的话会发生什么。一些实现方式中,对话框可以识别该宏特有的可能危害行为列表,该列表基于对宏的扫描。例如,扫描宏可有助于部分基于宏中的文本字符串或者与过去的恶意宏的内容相对应的一些其他信息识别具体的可能危害效果。
用户可同意或不同意宏可能拥有的访问。用户同意可用于构建上文所述的基于能力的安全包装,例如允许宏具有读特权,但是不允许宏更新某些文件。这种情况下,用户授权宏的、在安全包装中反应的特权或权限限于用户批准的那些类型的动作。
一些实现方式中,用于产生安全包装的过程可检测试图误导检测恶意代码的机制的恶意代码。例如,不是在宏代码中使用“delete”,可以连接子字符串“de”和“lete”以试图隐藏真实的删除操作意图(例如“delete”)。此处所述过程可被编程以识别这种情况并防止用户未给宏授予删除权限时的删除。
在框310,调用宏定向到的每个应用的相关服务器。调用涉及执行包括与宏所交互的应用关联的方法或其他程序API的对象。例如,调用可包括执行更新电子表格、转发电子邮件、复制文件等的宏代码。
然后(在框312)用来自每个应用的反馈进行交互并访问服务。例如,交互可包括与宏刚刚操作的应用的用户交互。例如,用户可读由于宏从另一用户转发电子邮件而刚刚接收的电子邮件(并执行与邮件的其他交互)。
这样,可以跨中央系统中的独立子系统上运行的多个应用在中央系统上执行宏。宏可包括安全机制,并且可用多种方式触发。此外,宏可从多个不同服务获得信息,可以从系统内或者通过如互联网的网络从其他系统访问这些不同服务。
图3B是用于管理事件触发宏的过程的流程图。一般而言,该过程包括两个阶段:第一阶段中实体订阅事件注册表以表明希望以后得到与某些标准匹配的事件的通知,第二阶段中发生事件而且事件注册表通知适当的实体。这两个阶段可在过程中基本连续发生,实体进行注册新的订阅,同时其他实体被通知了有关指向之前所注册的订阅的事件。
该过程从框320开始,这里事件注册表从实体接到要订阅事件的通知。通知可以多种形式到来,例如形式为用于管理宏执行的应用(例如图2中的脚本管理器204)和事件注册表之间的远程过程调用。如上所述,通知可包括用户名、事件过滤器和目标。用户名可对应于操作事件注册表的托管计算机系统中的用户账号的标识符,目标可代表事件注册表识别到触发事件时要向其发送通知的地址(例如URL),事件过滤器可代表向目标提供通知之前事件必须满足的一个或多个条件。提供通知的实体可以为任意多个实体,包括脚本管理器204,脚本管理器204在用户确立要由特定事件触发的宏时可提供包括定向到特定宏的目标的通知给事件注册表,这样,出现事件时会运行宏。
在框322,注册表注册订阅实体并保存事件的通知参数。注册可包括保存和在通知中接收的参数有关的信息,并可包括把这些信息与系统的注册用户关联,从而用户可访问并改变与事件注册表条目有关的信息。所剩信息可保存在易于为事件注册表所用的位置,这样,发生事件时可搜索所剩信息以确定特定事件和哪个条目关联。
一些情况下,事件注册表可订阅和注册表中的条目关联的事件产生的服务。例如,事件注册表可向如电子邮件应用的基于服务器的应用提供用户标识,告诉该应用它应该报告与特定用户账号相关的某类事件。例如,事件注册表可通知电子邮件应用报告和到来的给用户约翰多伊的消息有关的事件。这样,应用可以知道何时报告事件,而且无需将其遇到的所有事件提供给事件注册表。
进程的第二阶段从框326开始,这里,事件注册表从事件产生的服务接收到通知。例如,电子邮件应用可以到来的给特定用户的电子邮件的形式指示事件。指示可简单地为订阅电子邮件应用时事件注册表提供的标识号的形式,事件注册表可使用该号在底层注册中查找要求了哪个通知。也可以传递其他信息,例如原始注册时定义的信息,而且事件注册表可把这种信息传递给如脚本管理器204的订阅实体,从而事件触发执行的宏可以容易地访问信息。备选地,宏可被编程为独立从应用直接获得信息。事件注册表可一直处于监听模式,等待这种通知,而且可以基本同时处理来自许多服务的许多这类通知,而且,可把通知报告给许多不同订阅实体,其中包括宏或宏管理服务。
在框328,事件注册表测试针对注册表的所有订阅的通知。通知是单个标识号的情况下,事件注册表可执行查找,该查找把上述号与包括像订阅实体原来提供给事件注册表的信息那样的信息的数据记录关联。然后,可使用该信息(例如目标地址)通知订阅实体(框350)。
这样,该过程可简便地向用户提供自动地且独立于客户机设备或用户状态(例如用户当前是否能和托管系统交互,以及用户当前是否登录到系统)执行宏的机制。
图4A是用于执行从网页上运行的应用调用的宏的过程400的流程图。一般而言,图4A所示过程和图3A所示过程类似,且示出可在多部件系统的不同部件之间共享过程的方式的示例。
示例过程400包括对应于浏览器401a和宏服务器401b之间的交互的步骤。例如,过程的浏览器端的交互可涉及采用运行电子表格应用的客户机设备的用户,而执行的宏可运行在如宏服务器401b的数据服务器系统上(并用它获得数据)。浏览器端示出的过程400步骤是可以在用户和电子表格应用(例如由电子表格服务器系统提供)之间出现的、与宏无关的普通交互以外的步骤。宏服务器端执行的过程400的步骤可以例如由宏服务器子系统202执行。过程400还可代表上述参考图1和图2所述的系统100和200上的宏执行。一般而言,宏服务器401b端过程400的步骤可用脚本管理器204控制。
在框402,出现执行宏的请求。例如,请求可来自在客户机设备上运行浏览器应用的用户。用户可执行键组合以触发宏的运行,或者可如下启动运行:在应用中打开特定文档、用户选择应用中的控件或者通过除用户与系统的交互以外的机制(如通过子系统收到外部信号)。
在步骤404,启动宏的执行。例如,启动可出现在宏服务器子系统202中。例如,可在子系统上加载由客户机设备传递或识别的地址所对应的宏代码,而且该宏代码可以普通方式开始执行。
在步骤406确定用户是否提供了执行宏的授权。该动作可出现在宏代码执行的开始。例如,用户授权可以是如上所述防止恶意代码运行的部分实践。
如果没有用户授权,那么在步骤410获取用户授权要求,在步骤412提示向用户提示授权。如果用户在步骤414提供授权,在步骤416保存用户授权,否则,过程400在步骤418结束。用户授权要求可包括例如如果允许宏执行的话会出现的恶意结果类型的列表。可在步骤412把列表呈现给用户。
如果存在用户授权,在步骤408创建包装服务。可以用例如包装服务创建器212创建包装服务(或”bean”)。该动作是可选的,可用于保护执行的代码免受上述恶意干扰。
在步骤420,在脚本执行器中执行脚本(或宏)。例如,参看图2,可用脚本执行器208执行脚本。例如,和在客户机本地发生的宏执行不同,执行出现在宏服务器子系统202中。脚本执行可以普通方式进行,用一部分子系统逐步执行脚本中的步骤并在满足每一步时进行其动作。在步骤422确定是否遇到继续。如果遇到继续,在步骤428存储继续。继续可实质上用于暂停脚本直到特定时间或出现特定事件。如果没有遇到继续,在步骤424恢复处理,这里,确定是否遇到出错。如果没有遇到出错,在步骤430成功地结束宏执行。如果在步骤424遇到出错,在步骤426提醒用户,然后在步骤430结束宏执行。因而,利用该过程,可以向用户提供由客户机设备上用户的动作(或其他事件)触发的宏提供的功能,而且宏可以在独立于客户机设备的子系统上执行。一些情况下,可在用户不在线时发生执行,宏执行的结果可为用户以及在系统注册的其他用户可用。
继续可用作脚本解释器的执行状态的“快照”,冻结执行从而稍后可恢复执行。从概念上讲这和调试器中断点如何操作类似,或者与标准浏览器端执行(例如JavaScript)中的“提醒”调用类似。继续可以用解释器内所有对象(例如所有局部变量和“bean”)的二进制序列化和指向当前执行点的指针实现。可以在脚本执行器208内实现继续,该脚本执行器208可支持作为公共可用特征的继续。可以由脚本执行器208例如使用Java序列化(这是Java的标准特征)来序列化所有对象(例如包括“bean”)。使用Java序列化,对象(及其所有子对象)可以被写出到包括对象标识符和所有字段的当前值的二进制流。恢复宏时,可给予脚本执行器208继续二进制数据,该数据可例如在解序列化时用于新的活动Java对象。
一些实现方式中,继续可存储在数据库中。例如继续存储在数据库中而不是服务器存储器中直到恢复宏。数据库存储的一个原因可以是由于服务器可在触发继续时和用户恢复执行之间的时刻(例如通过点击对话框上的“ok”按钮或一些其他恢复动作)重启。一些实现方式中,继续可具有预定生命周期(例如六小时),在此之后,可以丢弃继续。这样,继续不会像用户一直没有抽时间点击“ok”按钮那样持续占有磁盘空间。
图4B是用于在托管系统上记录并执行宏的过程431的泳道流程图。示例过程431包括浏览器、宏记录器、宏服务器和应用之间的交互。一般而言,该过程从服务器子系统向用户提供一组宏记录控件,由此用户可利用控件指示何时需要记录用户和系统进行的动作,然后,可以把这些动作重新格式化为宏的代码,在调用宏时重新执行这些动作。
过程从框432开始,这里,用户选择宏记录器。选择可以出现在浏览器中,例如用户选择控件开始记录宏时。在步骤434提供宏记录器服务。宏记录器可以执行在用户浏览器上,或者宏记录器可远程执行,例如在宏服务器子系统202上执行。可以例如在脱离于用户客户机设备上当前显示应用的窗口的无边框浏览器窗口中显示宏记录器。也可以其他方式提供记录器,例如作为显示应用的同一页一部分的iFrame或类似元素。
在步骤436,用应用显示宏记录器。例如,如果用户在其笔记本电脑上的浏览器中执行电子表格应用,可以出现弹出或其他显示代表宏记录器。宏记录器可以显示成具有各种用于控制记录器操作的控件,例如用户可选择的记录、暂停和停止按钮。在步骤438开始记录,意味着用户可以开始敲定义宏的键。该记录可由向通过显示记录器的代码为记录器提供服务的服务器子系统发送的消息触发,指示用户选择了记录器上的记录控件。
在步骤440,用户与应用交互,意思是用户执行在用户使用的应用中定义宏功能性的操作(敲键、选择等)。例如,用户可选择电子表格中的某个范围的单元格,可以在这些单元格上执行命令(例如,复制并粘贴单元格,在单元格中输入公式等),并可执行其他这种动作。
在步骤442,在用户和应用交互期间,宏记录器开始记录用户动作,这可包括在记录过程中在用户记录命令的同时显示命令。如上所述,记录器可以和应用以相同方式解释用户输入,然后把这些经解释的动作转换成以后宏可在运行时供应给应用的命令。记录器还可跟踪用户在其中执行命令的应用(例如浏览器窗口),这样,宏可知道其在运行时把命令提供给那些不同的多个应用。
用户和应用交互且记录动作时,在步骤444提供用户动作的标准执行。可以在用户与之交互的应用内进行执行。因而,可以并行地把用户动作提供给应用和宏记录器,这样,记录了动作,而且这样应用以适当方式对动作作出反应。
完成宏的定义后,从用户接收到保存命令,例如通过按下记录器的“停止”按钮、“完成”键或者其他控件。在步骤448,发送宏的信息。该信息可在用户执行命令进行记录时被解释成宏命令,或者可在宏记录停止后进行解释和转换。然后,宏记录器发把信息例如发送给宏存储,并且可以产生指向宏代码的一个或多个指针(例如URL),这样以后可容易地访问代码。例如,宏记录器可要求用户识别以后用于启动宏的键组合。
在步骤450,保存宏信息,这包括库名称(保存宏的库)、脚本或宏内容(如宏记录器所记录的)和用户ID。还可适当地保存和宏相关的其他信息。
以后,无论是片刻之后或者几天甚至几年后,用户决定运行宏时,用户可指定要运行的宏。例如可以通过从为用户当前与之交互的应用定义的宏列表中选择宏名称来完成宏的选择。例如,用户可访问的宏列表可以和用户账号联合存储,并且可以列表显示给用户(每个宏的制造者为宏提供了可理解的名称)。备选地,可以自动选择宏,例如通过执行另一个宏,通过系统上出现与特定用户的动作无关的事件或者以其他方式。用户也可以让其他用户使用保存的宏,例如通过被提示第一用户希望具有对宏的访问权限的其他用户的电子邮件地址或其他账号标识符。用户还可以提供一组其他用户,例如通过指向消息组(例如电子邮件列表)或者特定域或子域的所有用户(例如,从用户雇主处访问系统的所有用户)。
例如,可选地,可在步骤452a接收到例如来自用户的运行宏的输入。备选地,可在步骤452b出现运行宏的触发事件。利用两种机制的任一种,在步骤454接收并执行和宏对应的宏代码。
在宏执行的初始阶段,在步骤456为对应于和宏关联的应用的API创建对象。这些对象可代表执行宏所需的对象,并且可包括例如把命令从一种格式转换成另一种格式的对象、包装其他对象的对象、限额施加对象及其他这类对象。
在步骤458把对象包装在安全包装中。这种包装可用上述机制进行,可用于保护用户免于在系统上执行恶意代码。
在步骤460,用用户ID调用(或实行或执行)应用。可用宏服务器子系统202执行应用调用。调用中包括用户ID以检查授权,例如确保用户经授权可读、更新或删除特定文件等。
在步骤462,执行与调用的应用中要执行的步骤相关的动作。例如,动作可对应于所记录的宏中记录的单个指令或步骤。步骤执行在应用中进行,应用物理上可位于记录宏的浏览器远程的位置。事实上,一些示例中,宏可能由完全不同的用户在不同浏览器上记录并保存。这种情况下,不同用户可能是由原始记录宏的用户授权使用宏的好友或家庭成员。
在步骤464,返回进一步执行所需的键。这些键例如可包括用户提供的输入或者应用自身传递的参数。从目标应用(例如电子表格应用)返回的“键”可以识别其状态由于给定命令发生改变的任何项目。例如,命令INSERT_SHEET会使新的工作表成为“当前”工作表。宏可具有可用于反映当前的新工作表的其他命令(例如getActiveSheet)。其他命令(例如INSERT_ROW)可改变当前选择,改变哪个单元格是当前的活动单元格。可把当前状态和选择数据返回给宏进行存储,以备后续命令(例如getActiveSheet)需要该信息。
步骤460、462、464可以继续相对同时运行,直到宏完成。结束出现在步骤462遇到并执行最后指令时,或者宏执行中的事件停止宏执行时。
图5示出宏系统中对象的示例结构,具体而言,示出如图2的脚本信息仓库206中的结构的信息的逻辑结构。逻辑结构500用节点502到508表示。对于脚本信息仓库206中存储的任何一个宏,例如,至少存在一个结构500或其一部分。继续节点504、链接节点506/和用户授权节点508都和用户库节点502具有0..N关系,意思是对于每个用户库(或头)节点,可以存在任意多个(包括零个)继续、链接和用户授权。
结构的根节点是用户库节点502,其定义例如宏和/或库的名称(例如“丹的基于云的MacroLib”中的“Macro_XYZ”)、宏库所有者(例如“丹”)以及和宏关联的脚本(例如宏代码)。每个宏库可具有唯一标识符,例如64位的伪随机数,该标识符还可用作数据库主键。一些实现方式中,从数据库中检索宏时不使用如库名称和库中包括的一组函数的字段;这些字段是严格用于运行/显示宏库的。“所有者”字段例如可用作具有如“得到用户XYZ的所有宏”的操作的外键。链表例如可用于如“得到文档XYZ使用的所有宏”的操作。
继续节点504可包括继续ID、继续数据(例如来自另外的入口点,例如,用于在宏进入等待状态后用另外的输入恢复宏)以及用户名(例如创建继续节点504的用户)。给定的宏可存在多个继续节点504。可记录继续的“所有者”主要用于防止会话劫持,从而例如用户X不能作为用户Y恢复运行的宏。这样,操作可保证只有用户Y可恢复他启动的宏。可允许多个这种记录,这是由于一个用户可具有多个继续(例如不同窗口中打开的三个电子表格,每个带有活动的提示对话框)。多个用户还可同时运行他们自己的宏实例,每个都具有自己的对话提示。
链接节点504允许外部实体链接到宏。链接节点504可包括文档ID,其可以是URL或者“指向”宏的一些其他路径名。由于同一个宏可以有多个不同名称(以及到该宏的多个不同URL路径或其他路径),所以可以存在多个链接节点506。
用户授权节点508可包括允许对宏的限制访问的信息。例如,限制协议缓冲器(protobuffer)字段可使用值的协议模式控制访问,用户字段可基于用户ID控制访问。每个节点508中可使用任一种或两者都用。给定的宏可有多个用户授权节点508,每个节点标识不同的授权等级。用户授权节点508可以强制要求对于每个宏每个用户只有一个授权记录。强制要求可采用用户用于执行宏以及宏可做的事情的批准图章这样的表示。可以允许多个记录,这样的唯一原因是多个不同用户的每一个可能都有宏的授权,而且给每个用户授权执行不同的动作。用户X执行宏时,使用他的宏授权记录,忽略所有其他记录。
如果宏的要求改变了(例如如果作者增加了对博客应用的调用),这会改变运行宏所需的要求,那么已有的用户授权可被标记成失效。这样,增加了额外的要求后用户试图再执行宏时,会再提示用户需要授权。例如,提示可以为“该宏需要访问日历和博客应用”,而之前宏仅仅说“该宏要求访问日历”。如果删除了服务则不需要提示重新授权,只有要求增加时才提示。
图6示出宏构建系统600的示例截屏。例如,用户可使用该系统来确立宏参数和规则,随后宏可基于外部事件执行,或者可在用户进行选择时手动执行。一般而言,系统把宏结构组织成三个阶段,每个阶段用截屏的一列示出,而且每个阶段(包括每个阶段的子阶段)在被配置之前可随阶段改变。使用该系统,用户可快速识别宏的触发器、从和所选触发器有关的可用参数中识别操作宏的参数以及对应于所选参数的宏结果。
一个示例中,用户可构建基于电子邮件相关事件执行电子邮件功能的宏。另一示例中,可把宏构建成在非电子邮件相关的应用(例如电子表格、文字处理应用等)执行操作。在又一个示例中,用户可构建具有输出但是不取决于任何触发事件的宏。无论作为触发器或输出的应用的类型,简单地在屏幕上作出用户选择就可自动产生相应宏的构建。屏幕“后面”运行的软件应用例如可以处理图6截屏所示的界面上的用户输入和选择,而且可以自动构建宏,包括插入适当的宏句法、各种应用专有或语言专有的API调用以及运行宏所需的其他宏部件。所有这些都对用户透明,用户简单地在几个可理解的字段内输入几个输入。
截屏600包括宏名称字段601,其标识当前所构建的宏(例如,如用户最初定义的或以后更新的)。如上所述,宏定义可在三个常见区域进行:宏触发数据区域602、宏处理数据区域604以及宏输出数据区域606。宏触发数据区域602可包括用户可用于决定并识别触发宏的条件或事件的字段和控件。宏处理数据区域604可用于定义宏运行时会发生的处理。宏输出数据区域606可识别宏输出,例如宏将操作的应用数据类型以及对数据采取的动作(或操作)。可以存在除了数据区域602-606以外的其他数据定义区域,例如,如果同一个宏需要更新多个应用中的数据,可以有多个宏输出数据区域606。一些实现方式中,可以使用提交/退回技术,以保证进行了所有更新,或者没有任何更新,这有助于保持数据完整性。
三个数据区域602、604和606通常可设计成按顺序完成。一些实现方式中,用户在一个区域选择的值会影响该区域下面或右边的字段或控件上的显示。例如,在宏触发数据区域602中输入的数据可以影响其他区域(例如数据区域604和606)中显示(以及用户可选择)的字段和数据选择类型。例如,如果用户选择“电子邮件”作为宏的触发机制(例如,通过在属性字段608内指定或选择“电子邮件”),那么宏处理数据区域604内可用的选项可针对电子邮件属性定制。
如本例所述,宏触发数据区域602包括属性字段608、活动字段610、参数字段611。活动字段610内显示(而且可由用户选择)的值可取决于属性字段608中的用户选择。例如,通过选择属性字段608内的“电子邮件”,活动字段610内的值包括与电子邮件有关的选项(例如到来消息、收件箱大小、标签大小等)。选择不同属性(例如在线拍卖)会导致活动字段610内的不同条目列表(例如物品量、物品分类等)。参数字段611可用于给活动分配值。用户可在参数字段611内输入或选择的可能值可包括,例如:大小、颜色、美元量、时间段、语言、性别或者仅关于适于特定应用的任何定性或定量的值。一些实现方式中,参数字段611上的标签可以根据活动框610的值自动标注(例如大小、颜色、价格等)。
宏处理数据区域604包括条件字段612、检查服务字段614和服务值字段616。条件字段612显示用于识别会触发宏的某些动作(例如以某种方式转发到来的电子邮件)的条件的选项。条件字段612显示的具体值(例如“来自用户”或“来自组中的用户”等)可取决于例如属性字段608的用户条目(例如电子邮件)。如果用户在属性字段608选择不同的值(例如电子表格),条件字段612内可显示一组不同的值(例如和电子表格有关)。
检查服务字段614可在收集的用于运行宏的信息中识别由宏检查的宏和应用外部的服务。例如,通过选择检查服务字段614中的“定位器”,在宏执行时用户可正在定义宏应该检查发送者的位置、用户X的位置或者电子邮件的抄送行列出的特定用户的位置,或者其他选择。服务值字段616标识要从所提及的服务返回哪些特定值给宏。例如,本例中,位置可基于近似实时GPS位置、蜂窝电话三角测量跟踪的位置、街道地址、邮政编码或者任何其他适当的定位标准。
一些实现方式中,宏处理数据区域604可包括用于在宏中使用布尔运算符的各种机制。这些机制可以是条件字段612“与”检查服务字段614所隐含的“与”之外的机制。例如,条件字段612可以结合显示成单选按钮的一组Any/All(任何/所有)控件617使用,这可有助于明确指定与/或运算符和逻辑。例如,用户可选择Any/All控件617的“Any”(或者“All”),以指定宏要考虑检查服务字段614中勾上的任何(或所有)单个选项。
一些实现方式中,可以为宏构建系统600上的其他字段提供另外的布尔控件和字段等,例如字段名称的直接文本输入、字段值、布尔运算符和位置恰当的括号。这类更高级的控件可包括例如可通过选择高级布尔控件618获得的屏幕显示或其他界面。一些实现方式中,访问高级布尔控件618可允许用户看到整个宏的现有逻辑,而且可包括例如更新的用户选择和在数据区域602到606进行的输入所代表的当前逻辑。系统600可执行自动句法检查并验证用户输入(或从列表选择)的字段和检查的值一致。
宏输出数据区域606包括属性字段620、动作字段622和参数字段624。这些字段可例如用于指定宏的特定输出(例如做这个、发送那个、更新特定文件、字段或电子表格单元格)。图6所示示例中,属性620选择了“电子邮件”,使得在动作字段622中显示与电子邮件有关的条目。因而,该宏的输出会是把某种形式的电子邮件发送给某个或某些地址。
需要时(例如基于其上的选择和字段),参数字段624可用于给字段或选择分配值。一些实现方式中,可以在字段“后方”定义字段的值,这样,双击字段名会显示用于定义字段值的弹出窗口,或者在字段上悬停可显示字段的当前值。
图6所示的示例宏构建屏幕中,宏触发数据区域602定义为用于在电子邮件应用(例如通过属性字段608)接收到“到来消息时”(例如由活动字段610识别)触发宏。宏处理数据区域604包括指定具体用户、在电子邮件正文中包括具体单词以及基于用户X的位置的条件612。可以在例如其他参数字段(图6未示出)中定义这些条件的值。因而,如果满足这些条件宏会执行到完成。宏输出数据区域606示出“电子邮件”是当前宏输出的类型,要执行的动作是“给我发文本消息”(例如如动作字段622所定义的)。作为在数据区域602到606中输入的值的结果,检测到来自特定用户、标题行包括特定单词并基于用户X的位置的到来电子邮件消息这一触发事件后,宏使用消息传送应用发送文本消息给到来电子邮件的目标,通知他们收到了这样的电子邮件。示例宏构建屏幕的益处在于其以简明的GUI格式向用户提供了该消息,同时隐藏了执行功能的底层宏,用户甚至不需知道如何写宏或如何组织一个宏。该屏幕可用于构建完整的宏或者构建宏的一部分,其中用户可向宏增加屏幕不能提供的其他代码。
用于定义宏的用户界面可包括按钮或控件626,例如,“保存”输入或更新的宏、“撤销”对宏的一个或多个更新或改变、“显示”所得的宏或者不保存而“取消”编辑。“copyfrom(复制自)”字段628可允许用户通过复制已有宏而创建和定义新的宏,或者为已有宏复制参数,以把屏幕预先设定成初始状态,用户随后可改变该状态。描述字段630可允许用户记录宏的目的,或者提供宏名称不包括的某些级别的意义给宏。
一些实现方式中,宏定义可具有与之相关的时间元素,例如有效日期632用于说明宏第一次生效的时间,终结日期634说明宏不再执行的时间,而且,调度或“runon(运行于)”字段636可用于例如说明宏要执行的日期(工作日、周一、周末等)。日期字段可包括具体日期或日期范围和/或时间,或者可包括枚举类型(例如现在、从不、工作日等)。
一些实现方式中,系统600提供的用户界面可适于在显示屏较小的用户设备上执行,例如智能电话等。例如,可顺序提供数据区域602到606和其他字段。一些实现方式中,可为整个平面提供滚动条,允许用户一次导航到一个大致区域。
使用系统600构建的宏可结合上面系统100和200以及图1和图2所述的安全方面一起使用。具体而言,每个构建的宏可包装在基于能力的安全包装中。系统600可包括可协助安全的、与安全有关的字段(未示出),例如包括可能使用宏的其他用户的名字以及他们可以执行操作的程度(例如发送电子邮件、更新电子表格等)。
这种基于能力的安全可通过给用户要执行的代码授权时考虑用户的意图而带来益处。这种系统中,例如,执行用户创建称为能力的对象,这些对象封装用户希望允许的每个操作,并把这些对象传递给要执行的不信任代码。系统执行不信任代码时,这些对象成为载荷的一部分(例如包装的一部分),而且不能被不信任代码修改或创建。不信任代码试图访问底层的信任资源(例如通常为系统文件等)时,它只能通过用户创建的包装了信任资源的对象进行。能力可允许对要授予不信任代码的访问权限进行细粒度的控制,而且可用于构建坚持最少特权原则的执行环境。这意味着任何给定模块只能执行其可实现自己功能所必需的最少动作,而不能做更多。
描述了有关托管基于宏的系统的示例系统和过程后,下面的段落描述用于使用这些系统和过程的一系列示例,许多示例讨论系统如何使用基于能力的安全来处理这些情况的每个情况,以及,如何减少作为这种示例的一部分的一些风险。
例1:销售策略实施
考虑一个组织的销售部门在电子表格中创建给潜在客户的提案的情况。电子表格包括公司生产的所有产品和特色产品的价格。销售人员浏览工作表时,可把用特色产品旁边一栏中的1或0来标示特色产品为有效的或者无效的(即当前是否能出售)。工作表可包括用于计算报价的公式,包括各种折扣和价格增值项目。
例如包括互斥的一些特征的单项产品之间会有许多相关性。可把这些规则表示成宏。备选地,可以用规则语言表示规则,规则语言会被编译成附于工作表的宏以实施规则。其他规则可包括错误检查和其他一致性检查。此外,还有与促销或者基于区域或其他因素的触发事件关联的规则。
要考虑的有关这些规则的一件事是如何管理这些规则。例如,宏和/或规则处于工作表引用的共享库中是有益的,这样,管理员可容易地更新工作表中的值。而且,宏应该是系统管理员提供给各个小企业主的工具套件的一部分,而且可允许每个这些用户访问并执行宏。管理员可从托管系统上的中央位置对宏进行更新,用户都可以从该位置执行宏。
因而,可用共享模式发布宏,给访问宏的每个电子表格一个“位置(slot)”。另一用户可通过在他的电子表格中包括指向宏的URL而把宏导入在自己的电子表格中,而且可授予宏向该电子表格写入的权限。
例2:投资用户界面
考虑下面情况,投资公司在电子表格中有报价模型,希望从外部服务得到股票报价并将其注入电子表格以产生推荐(例如买入、持有等)。
脚本可能需要从电子表格读出并向电子表格写入,而且需要访问外部股票报价服务。作者给脚本的访问权限可使脚本仅限于特定的股票报价服务。如果作者要使位置空白,不仅要问询调用服务的用户是否要授予脚本联系服务的权限而且还问具体联系哪个服务。这样,用户可限制脚本可以做什么,脚本不能联系任何其他服务。
如果用户想要与其他用户共享该宏以包括在他们自己的电子表格中(例如,复制宏而不是引用宏),其他用户会需要他们自己的授权以访问外部股票报价服务。如果用户通过让其他人指向中央位置处的宏而共享宏,即便用户没有联系外部股票报价服务的权限他们也可以使用宏。这种情况下,可授予用户脚本自己具有的权限(虽然他们不能从自己的脚本访问服务)。
例3:事故报告
考虑公交公司希望对其事故报告进行自动化的情况。遇到事故的司机可以访问托管服务以在电子表格中填表,该表格记录如公交车位置等的信息。宏可用于把报告发送给各个监督人员进行审阅。
宏可能需要识别监督人员(例如通过宏可访问的另一电子表格、数据库查询等)、产生法律部门的正确电子邮件地址并和这些人共享文档,还发送电子邮件、访问其他电子表格(例如包括哪个事故报告待处理的记录的电子表格)。情况可能是这些人需要进一步编辑电子表格,然后触发让宏进一步运行的事件。宏可在继续模式运行,这样,每次特定用户处理宏的某个阶段时宏都暂停,然后等待下一用户继续。被事件唤醒后,宏可检查谁停止了文档(例如如文档自己记录的或者发送给宏的事件的信息记录的),并且可等到需要停止的每个人都停止了,这时,宏可通知另外的人并记录事情已全部处理过(例如在另一电子表格中)。一些实现方式中,如果两个事件同时到达,这两个事件可排队,这样,宏一次只处理一个继续。工作流程状态可简单地保存在宏的本地变量上下文中,还可部分记录在电子表格中。
相关情况下,可以查询没有完全处理且结束的事故报告(例如基于工作流程)。该查询要求访问包括有关事故报告的状态信息的电子表格(或简单地打开电子表格)。
例4:公交调度报告
考虑公交公司希望能够通知乘客某些公交线路出现延误的情况。公司可编辑电子表格以更新他们的公交的期望时间/位置,这些编辑可自动进行,例如通过接收有关公共汽车的位置数据并基于这些信息计算大致到达时间(例如,通过识别离开车站X的公共汽车,增加时间Y以计算到达车站X+1的时间)的宏。电子表格中的宏可识别某些公交线路意外延误,如果出现这种情况,宏可发送文本消息给订阅了通知的顾客。例如,用户可订阅接收,每当用户在闹市区且离他的正常公交站两个街区而且他的任何在途中的公共汽车(例如692路、698路公交等)有可能五分钟后到达拐角时的文本消息。用户移动设备上的应用可在用户位于适当位置时触发,以使托管服务激活用户记录上的标记,这样用户无需手动输入位置就可接收到定向到用户当前位置的更新(例如通过把用户的GPS坐标转换成最近的公交站位置)。
安全起见,宏的作者可授予发送文本消息给有限组用户(如管理员控制的另一电子表格上列出的用户)的能力,而且可把宏发布成仅对工作表是局部的,而不是可公开访问的。作者不授予宏写入工作表的权限。该情况带来了通过参考文档或者另一组消息中定义的组(例如电子表格或一些其他组定义)而指定能力范围的可能性。
例5:基于位置的事件触发
考虑一个用户更新电子表格中的一组音乐会推荐的情况,其中包括每个音乐会的地址和日期/时间。其他用户可在每当位于这些音乐会之一附近且音乐会快要开始时通过要求得到通知而订阅来自该电子表格的通知。这种情况下,通知例如可使用例如地图服务、社交网络服务(识别作出推荐的用户的好友)、位置服务(用于识别好友在特定位置)以及用于发送通知的文本消息服务。因而,托管宏特别适于该情况。
例6:调查
考虑下述情况:用户创建调查或其他数据条目表格、发送电子邮件表格给多个其他用户并向电子表格增加行指示每个用户如何填表。
应该授予宏从某个地址向用户提供的一组地址发电子邮件给一组人的能力。宏可以跟踪来自每个用户的表格数据的接收,例如通过访问托管服务中的用户标识特征或者识别响应中的用户ID(例如电子邮件地址)。然后,宏可访问电子表格,把用户ID输入到电子表格的一列中,把用户答案输入到电子表格的其他列中。这样,第一用户可快速发送表格给一个组(例如根据已有好友列表或电子邮件列表确定的组)并自动把来自组的评论制成表格。
例7:购物订单批准
考虑用户提出购物订单的情况(例如“我想要X千箱Q-tip,希望供应商为XYZ”)。用户提交购物订单(PO)时,宏可基于如货品、总价、部门等数据确定谁需要批准PO。例如,如果总价大于固定阈值,PO可能需要董事长批准。随着审批人员批准PO,宏可以沿工作流程移动,例如宏、数据库或电子表格中定义的用户列表;宏会保留本地状态以记住谁批准了PO以及谁尚未批准PO;所有审批人员都批准后,发出PO进行购买。
该宏能够在继续方面运行最好。宏可以具有给某些用户发送带有表格或URL的文档链接或附件的电子邮件的能力,用户可以点击表格或URL以批准或不准给定购物订单,宏可访问具有如部门主席等的信息的其他电子表格和数据库。
例8:邮件合并
考虑如下情况:用户具有包括名称、地址、电子邮件地址等的名称电子表格以及另外一个文档(例如电子邮件、电子表格等),而且希望用列表的字段代替后一文档中的字段并把合并后的文档用电子邮件发送给名称工作表中指定的收件人。
安全起见,这是可以完全在特定文档和名称列表上下文中运行的宏。能力是:“允许发送电子邮件给如该表的第一列指定的列表”以及访问模板文档。宏自身将从电子表格行和一些模板计算的数据发送电子邮件给列表中的人。用于邮件合并宏的具体表格是公知的。
例9:医生值班时间调度
考虑几个医生访问并编辑同一电子表格的情况。宏可以检查电子表格以确保每个医生遵从电子表格的格式和时间调度规则(例如时间段内班次的最大数和最小数)。每个用户可点击按钮运行宏以使表格和日历应用同步,例如,以进行更符合直觉的访问(例如创建重复时间调度)。也可进行双向同步。
可对宏进行扩展以能够和多个其他日历应用接口。宏还可帮助医生验证自己遵从规则,以帮助医生记录他们值了多少班次,并且让电子表格和日历应用同步。
例10:电子邮件插件
用户可定义宏以识别他们账号内每个到来的电子邮件示例并把电子邮件的发件人标识和标题行从电子邮件复制到与用户账号关联的电子表格的下一个空行。这样,用户可自动记录他们账号到来邮件的最新日志。
例11:博客插件
是某一服务的博客使用者的用户可开发宏用于处理对博客的用户评论。例如,可使用有关评论者的信息,例如在评论一旁显示评论者的位置(例如使用和来自用户的评论对应的IP地址)。此外,用户可把所有评论和例如亵渎性语言那样的触发单词的黑名单进行比较这样,每当有包括不恰当单词的评论发表时用户会接到文本消息提醒。然后用户可登录到博客清除这些评论。
例12:可计费工时
咨询人员用户可在日历应用内跟踪他或她的可计费工时。他们可使用宏周期性地(例如每周或每月)解析这些条目(例如识别表格x.x中的时间条目)。然后,宏可使用和条目关联的文本识别该时间应计费的项目编号(例如把关键词及客户名称与某些不同项目关联的列表),然后,可把数据增加到电子表格的单元格以执行计费操作。然后,宏可把电子表格的值(例如用每小时费率计费后)合并到文字处理程序生成的发票内,然后把生成的文档用电子邮件发送给客户。如果客户是托管系统的注册用户,然后宏可直接要求付款(包括经由包括可选择机制的表格,客户可使用该机制指示付款的意愿),客户随后可选择控件以把钱从客户账户转账到咨询人员账户。
例13:驾车方向邮件合并
托管系统的用户希望邀请他的或她的几个好友参加即将到来的聚会。因而用户可能准备聚会邀请的外壳(shell)。然后,用户可把宏指向好友及其地址列表(例如托管系统上联系人应用中的列表)以事实上将邮件执行合并到邀请中。然而,用户也可把他自己的地址(聚会位置)以及列表中当前准备邀请的好友的地址提供给地图服务,地图服务可根据标准API返回显示其上叠加有好友家和聚会地点之间驾车方向的地图的图像。宏可把图像包括在邀请中,然后把邀请连同自动且自定义生成的方向发送给好友。
图7示出上述技术可使用的通用计算机设备700和通用移动计算机设备750的示例。计算设备700用于代表各种形式的数字计算机,例如笔记本电脑、台式机、工作站、个人数字助理、服务器、刀片服务器、大型机和其他适当计算机。计算设备750用于代表各种形式的移动设备,例如个人数字助理、蜂窝电话、智能电话和其他类似计算设备。此处所示部件及其连接和关系、功能仅为示例之用,不用于限制本发明描述的及/或本文要求的实现方式。
计算设备700包括处理器702、存储器704、存储设备706、连接到存储器704和高速扩展端口710的高速接口708以及连接到低速总线714和存储设备706的低速接口712。每个部件702、704、706、708、710和712用各种总线互相连接,并且可安装在共同的主板上或以其他适当方式安装。处理器702可处理用于在计算设备700内执行的指令,包括存储器704或存储设备706中存储的用于在外部输入/输出设备(例如耦合到高速接口708的显示器716)上显示GUI的图形信息的指令。其他实现方式中,适当的话,可使用多个处理器及/或多个总线,以及多个存储器和多种存储器。而且,可以连接多个计算设备700,每个设备提供一部分所需操作(例如作为服务器阵列、一组刀片服务器或者多处理器系统)。
存储器704存储计算设备700内的信息。一个实现方式中,存储器704是易失性存储单元。另一实现方式中,存储器704是非易失性存储单元。存储器704还可是另一种形式的计算机可读介质,如磁盘或光盘。
存储设备706可为计算设备700提供大规模存储。一个实现方式中,存储设备706可以是或者可包括计算机可读介质,例如软盘设备、硬盘设备、光盘设备或磁带设备、闪存或者其他类似的固态存储设备、或者设备阵列,包括存储区域网络或其他结构中的设备。计算机程序产品可以有形地实现在信息载体中。计算机程序产品还可包括在执行时执行一个或多个像上所述方法那样的方法的指令。信息载体是计算机或机器可读介质,如存储器704、存储设备706、处理器702上的存储器或者传播的信号。
高速控制器708管理计算设备700的带宽密集的操作,同时低速控制器712管理较低带宽密集的操作。这种功能分配只是示例性的。一个实现方式中,高速控制器708耦合到存储器704、显示器716(例如通过图形处理器或加速器)以及高速扩展端口710,高速扩展端口710可容纳各种扩展卡(未示出)。一个实现方式中,低速控制器712耦合到存储设备706和低速扩展端口714。低速扩展端口可包括各种通信端口(例如USB、蓝牙、以太网、无线以太网)可耦合到一个或多个输入/输出设备,例如键盘、指示设备、扫描仪或者例如通过网络适配器耦合到网络设备,如交换机或者路由器。
计算设备700可用如图所示的各种不同形式实现。例如,可实现成标准服务器720,或者在一组这种服务器中实现多次。也可实现成机架式服务器系统724的一部分。此外,也可实现成如笔记本电脑722的个人计算机。或者,计算设备700的部件可以和如设备750的移动设备的其他部件(未示出)组合。每个这些设备可包括一个或多个计算设备700、750,而且,整个系统可由互相通信的多个计算设备700、750组成。
计算设备750包括处理器752、存储器764、如显示器754的输入/输出设备、通信接口766以及收发器768以及其他部件。设备750可具有用于提供额外存储的存储设备,例如微硬盘或其他设备。每个部件750、752、764、754、766和768用各种总线互连,几个部件可安装在共同主板上或者以其他适当方式安装。
处理器752可执行计算设备750中的指令,包括存储器764中存储的指令。处理器可实现成包括独立的多个模拟和数字处理器的芯片的芯片集。处理器可提供例如设备750的其他部件的协调,例如对用户接口、设备750运行的应用以及设备750的无线通信进行控制。
处理器752可通过控制接口758以及耦合到显示器754的显示接口756和用户通信。显示器754可以为例如TFTLCD(薄膜晶体管液晶显示器)或者OLED(有机发光二极管)显示器,或者其他适当的显示技术。显示接口756可包括用于驱动显示器754以把图形和其他信息呈现给用户的适当电路。控制接口758可以接收来自用户的命令并转换命令以提交给处理器752。此外,外部接口762可提供和处理器752的通信,以支持设备750和其他设备的近距离通信。一些实现方式中,外部接口762可提供例如有线通信,其他实现方式中,可提供无线通信,而且可使用多个接口。
存储器764存储计算设备750中的信息。存储器764可实现成一个或多个计算机可读介质、易失性存储单元或非易失性存储单元。还可提供扩展存储器774,并通过扩展接口772连接到设备750,扩展接口772例如可包括SIMM(单列直插存储模块)卡接口。这种扩展存储器774可为设备750提供额外存储空间,或者还可存储设备750的应用或其他信息。具体而言,扩展存储器774可包括用于执行或补充上述过程的指令,而且还可包括安全信息。因此,例如,扩展存储器774可提供为设备750的安全模块,而且可用允许安全使用设备750的指令编程。此外,可通过SIMM卡提供安全应用以及其他信息,例如以不可入侵方式把标识信息放在SIMM卡中。
存储器可包括例如如下所述的闪存和/或NVRAM存储器。一个实现方式中,计算机程序产品有形地实现在信息载体中。计算机程序产品可包括在执行时执行一个或多个像上述方法那样的方法的指令。信息载体是计算机或机器可读介质,如存储器764、扩展存储器774、处理器752上的存储器或者例如通过收发器768或外部接口762接收的传播的信号。
设备750可通过通信接口766无线通信,需要的话通信接口766可包括数字信号处理电路。通信接口766可根据各种模式或协议提供通信,例如GSM语音通话、SMS、EMS或者MMS消息传送、CDMA、TDMA、PDC、WCDMA、CDMA2000或GPRS以及其他模式或协议。例如,可通过射频收发器768进行这些通信。此外,可使用例如蓝牙、WiFi或其他这类收发器(未示出)进行近距离通信。此外,GPS(全球定位系统)接收器模块770可为设备750提供另外的导航和位置相关无线数据,设备750上运行的应用可适当地使用这些数据。
设备750还可用音频编解码器760进行音频通信,音频编解码器760可从用户接收声音信息并将其转换成可用的数字信息。同样地,音频编解码器760可以为用户产生可听见的声音,例如通过例如设备750的手持机的扬声器。这些声音可包括来自语音电话通话的声音,可包括录制的声音(例如语音消息、音乐文件等),而且可包括设备750上操作的应用生成的声音。
可用如图所示的多种不同形式实现计算设备750。例如,可实现成蜂窝电话780。还可实现成智能电话782、个人数字助理或其他类似移动设备的一部分。
设备750还可包括可感测运动的一个或多个不同设备。例如包括但不限于加速计和指南针。加速计和指南针或者可以检测运动或位置的其他设备可从任何供应商购得,而且可以多种方式感测运动。例如,加速计可检测加速度变化,而指南针可检测相对于磁南极和磁北极的方位变化。这些运动变化可被设备750检测并用于根据此处所述过程和技术更新相应设备750的显示。
此处所述的系统和技术的各种实现方式可用数字电子电路、集成电路、专门设计的ASIC(专用集成电路)、计算机硬件、固件、软件和/或其组合实现。这些各种不同实现方式可包括用一个或多个计算机程序实现,计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,可编程处理器可是专用处理器或通用处理器,其耦合到存储系统、至少一个输入设备以及至少一个输出设备以接收自或发送至上述设备的的传送数据和指令。
这些计算机程序(也称为程序、软件、软件应用程序或代码)包括用于可编程处理器的机器指令,而且可实现成高级的过程编程语言和/或面向对象的编程语言,和/或汇编/机器语言。此处所用的术语“机器可读介质”、“计算机可读介质”指用于向可编程处理器提供机器指令和/或数据的任何计算机程序产品、装置和/或设备(例如,磁盘、光盘、存储器、可编程逻辑器件(PLD)),包括接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指用于向可编程处理器提供机器指令和/或数据的任何传号。
为了提供和用户的交互,此处所述系统和技术可在具有用于向用户显示信息的显示设备(例如CRT(阴极射线管)或LCD(液晶显示器)监视器)以及用户用来给计算机提供输入的键盘和指示设备(例如鼠标或轨迹球)的计算机上实现。也可用其他类型的设备来提供和用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈(例如视觉反馈、声音反馈或者触觉反馈);而且,可以任何形式接收来自用户的输入,包括声音、语音或者触觉输入。
此处所述系统和技术可用包括后端部件(例如数据服务器)或者包括中间设备部件(例如应用服务器)或者包括前端部件(例如客户计算机,其具有用户可用来与此处所述的系统和技术的实现方式交互的图形用户界面或者网络浏览器)或者这些后端部件、中间设备部件或前端部件的任意组合的计算系统实现。系统的部件可用任何形式或介质的数字数据通信(例如通信网络)互相连接。通信网络的示例包括局域网(LAN)、广域网(WAN)和互联网。
计算系统可包括客户机和服务器。客户机和服务器通常彼此远离而且典型通过通信网络交互。客户机和服务器的关系由于各个计算机上运行的而且彼此具有客户机-服务器关系的计算机程序而存在。
已经描述了一些实施例。但是,应该理解,可以在不脱离本发明精神和范围下进行各种修改。例如,本文许多内容是针对触发宏执行的特定模式描述的,但是也可使用其他方法。
此外,图中所示逻辑流程不需要所示的特定顺序或连续顺序来获得预期结果。此外,所示流程中可具有其他步骤,或者可删除一些步骤,所述系统可增加或删除其他部件。因而,其他实施例落入下述权利要求的范围内。

Claims (12)

1.一种管理计算机宏的计算机实现的方法,包括:
在互联网可访问的托管计算机系统存储至少一个计算机宏的代码;
将所述宏和所述托管计算机系统的注册用户关联,而且根据所述注册用户确立的访问限制,使所述宏为在所述托管计算机系统登记的多个不同用户可用;
由所述托管计算机系统跟踪所述托管计算机系统上的用于执行至少一个计算机宏的多个用户账号的触发事件,其中可响应于来自在所述托管计算机系统登记的所述多个不同用户的所述多个不同账号的触发事件访问所述宏;
无论和用户账号关联的用户目前是否在所述托管计算机系统上活动,自动利用所述托管计算机系统识别定义为指向所述宏的触发事件;
从所述托管计算机系统远程的多个不同客户计算机上运行的多个应用接收执行宏的请求,在所述托管计算机系统上为每个所述请求自动执行宏,并且响应于执行宏,将执行宏的结果提供给所述多个应用的每个相应应用;
使用所述托管计算机系统上运行的应用执行所述宏来产生宏结果,并将所述宏结果存储在所述托管计算机系统上;
产生消息给和所述多个用户账号关联的通信地址,以通知所述用户所述宏结果;以及
自动将执行宏的结果提供给在所述托管计算机系统登记的多个用户账号。
2.根据权利要求1所述的方法,其中所述触发事件包括定向到所述用户账号的到来数字通信。
3.根据权利要求1所述的方法,其中所述触发事件包括确定和账号所有人关联的计算机设备用户的位置。
4.根据权利要求1所述的方法,其中执行宏包括调用所述托管计算机系统提供的多个不同托管服务。
5.根据权利要求4所述的方法,其中执行宏包括调用独立于所述托管计算机系统的第三方信息提供者提供的网络服务。
6.根据权利要求1所述的方法,还包括将运行在所述托管计算机系统上的第一应用产生的信息转换成不同格式,并将转换后的信息提供给所述托管计算机系统上运行的第二应用。
7.一种管理计算机宏的系统,包括:
一个或者多个计算机以及一个或者多个存储可操作的指令的存储设备,当所述指令由所述一个或者多个计算机执行时,使得所述一个或者多个计算机执行以下操作:
在互联网可访问的托管计算机系统存储至少一个计算机宏的代码;
将所述宏和所述托管计算机系统的注册用户关联,而且根据所述注册用户确立的访问限制,使所述宏为所述托管计算机系统的其他用户可用;
由所述托管计算机系统跟踪所述托管计算机系统上的用于执行至少一个计算机宏的多个用户账号的触发事件,其中可响应于来自在所述托管计算机系统登记的多个不同用户的多个不同用户账号的触发事件访问所述宏;
无论和用户账号关联的用户目前是否在所述托管计算机系统上活动,自动利用所述托管计算机系统识别定义为指向所述宏的触发事件;
从所述托管计算机系统远程的多个不同客户计算机上运行的多个应用接收执行宏的请求,在所述托管计算机系统上为每个所述请求自动执行宏,并且响应于执行宏,将执行宏的结果提供给所述多个应用的每个相应应用;
使用所述托管计算机系统上运行的应用执行所述宏来产生宏结果,并将所述宏结果存储在所述托管计算机系统上;
产生消息给和所述多个用户账号关联的通信地址,以通知所述用户所述宏结果;以及
自动将执行宏的结果提供给在所述托管计算机系统登记的多个用户账号。
8.根据权利要求7所述的系统,其中所述触发事件包括定向到所述用户账号的到来数字通信。
9.根据权利要求7所述的系统,其中所述触发事件包括确定和账号所有人关联的计算机设备用户的位置。
10.根据权利要求7所述的系统,其中执行宏包括调用所述托管计算机系统提供的多个不同托管服务。
11.根据权利要求10所述的系统,其中执行宏包括调用独立于所述托管计算机系统的第三方信息提供者提供的网络服务。
12.一种管理计算机宏的计算机实现的设备,包括:
用于在互联网可访问的托管计算机系统存储至少一个计算机宏的代码的装置;
用于将所述宏和所述托管计算机系统的注册用户关联,而且根据所述注册用户确立的访问限制,使所述宏为在所述托管计算机系统登记的多个不同用户可用的装置;
用于由所述托管计算机系统跟踪所述托管计算机系统上的用于执行至少一个计算机宏的多个用户账号的触发事件的装置,其中可响应于来自在所述托管计算机系统登记的所述多个不同用户的所述多个不同账号的触发事件访问所述宏;
用于无论和用户账号关联的用户目前是否在所述托管计算机系统上活动,自动利用所述托管计算机系统识别定义为指向所述宏的触发事件的装置;
用于从所述托管计算机系统远程的多个不同客户计算机上运行的多个应用接收执行宏的请求,在所述托管计算机系统上为每个所述请求自动执行宏,并且响应于执行宏,将执行宏的结果提供给所述多个应用的每个相应应用的装置;
用于使用所述托管计算机系统上运行的应用执行所述宏来产生宏结果,并将所述宏结果存储在所述托管计算机系统上的装置;
用于产生消息给和所述多个用户账号关联的通信地址,以通知所述用户所述宏结果的装置;以及
用于自动将执行宏的结果提供给在所述托管计算机系统登记的多个用户账号的装置。
CN201080041591.7A 2009-08-13 2010-08-13 事件触发的服务器端宏 Active CN102498483B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510834068.4A CN105487922A (zh) 2009-08-13 2010-08-13 事件触发的服务器端宏

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/540,846 US8713584B2 (en) 2009-08-13 2009-08-13 Event-triggered server-side macros
US12/540,846 2009-08-13
PCT/US2010/045507 WO2011020043A2 (en) 2009-08-13 2010-08-13 Event-triggered server-side macros

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201510834068.4A Division CN105487922A (zh) 2009-08-13 2010-08-13 事件触发的服务器端宏

Publications (2)

Publication Number Publication Date
CN102498483A CN102498483A (zh) 2012-06-13
CN102498483B true CN102498483B (zh) 2016-01-20

Family

ID=43586878

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201080041591.7A Active CN102498483B (zh) 2009-08-13 2010-08-13 事件触发的服务器端宏
CN201510834068.4A Pending CN105487922A (zh) 2009-08-13 2010-08-13 事件触发的服务器端宏

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201510834068.4A Pending CN105487922A (zh) 2009-08-13 2010-08-13 事件触发的服务器端宏

Country Status (7)

Country Link
US (3) US8713584B2 (zh)
EP (1) EP2465044B1 (zh)
JP (2) JP5648056B2 (zh)
KR (2) KR101668365B1 (zh)
CN (2) CN102498483B (zh)
AU (2) AU2010282359B2 (zh)
WO (1) WO2011020043A2 (zh)

Families Citing this family (127)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8301705B2 (en) * 2008-02-29 2012-10-30 Sap Ag Subject line personalization
US8837465B2 (en) 2008-04-02 2014-09-16 Twilio, Inc. System and method for processing telephony sessions
CN102027721B (zh) 2008-04-02 2015-05-13 特维里奥公司 处理电话会话的系统和方法
US8775454B2 (en) 2008-07-29 2014-07-08 James L. Geer Phone assisted ‘photographic memory’
US9128981B1 (en) 2008-07-29 2015-09-08 James L. Geer Phone assisted ‘photographic memory’
WO2010040010A1 (en) 2008-10-01 2010-04-08 Twilio Inc Telephony web event system and method
US8632003B2 (en) 2009-01-27 2014-01-21 Novell, Inc. Multiple persona information cards
CA2789942C (en) 2009-03-02 2017-05-23 Jeffrey Lawson Method and system for a multitenancy telephone network
US20100251353A1 (en) * 2009-03-25 2010-09-30 Novell, Inc. User-authorized information card delegation
US9210275B2 (en) 2009-10-07 2015-12-08 Twilio, Inc. System and method for running a multi-module telephony application
US9130975B2 (en) 2010-06-02 2015-09-08 Avaya Inc. Generation of macros
US20120208495A1 (en) 2010-06-23 2012-08-16 Twilio, Inc. System and method for monitoring account usage on a platform
US20120030556A1 (en) * 2010-07-29 2012-02-02 Activepath Ltd. Method for enabling interactive content within messaging application
US20120066694A1 (en) 2010-09-10 2012-03-15 International Business Machines Corporation Event overflow handling by coalescing and updating previously-queued event notification
US8694625B2 (en) * 2010-09-10 2014-04-08 International Business Machines Corporation Selective registration for remote event notifications in processing node clusters
US8934925B2 (en) * 2010-10-15 2015-01-13 Microsoft Corporation Mobile messaging message notifications processing
US20120117456A1 (en) * 2010-11-05 2012-05-10 Nokia Corporation Method and apparatus for automated interfaces
US8984119B2 (en) 2010-11-05 2015-03-17 International Business Machines Corporation Changing an event identifier of a transient event in an event notification system
US20120131645A1 (en) * 2010-11-18 2012-05-24 Harm Michael W User Scriptable Server Initiated User Interface Creation
US8667126B2 (en) 2010-12-03 2014-03-04 International Business Machines Corporation Dynamic rate heartbeating for inter-node status updating
US9286061B2 (en) * 2010-12-14 2016-03-15 Microsoft Technology Licensing, Llc Generating and managing electronic documentation
US8713365B2 (en) 2011-01-28 2014-04-29 Microsoft Corporation Re-establishing push notification channels via user identifiers
US8649268B2 (en) 2011-02-04 2014-02-11 Twilio, Inc. Method for processing telephony sessions of a network
US8634330B2 (en) 2011-04-04 2014-01-21 International Business Machines Corporation Inter-cluster communications technique for event and health status communications
US20140044123A1 (en) 2011-05-23 2014-02-13 Twilio, Inc. System and method for real time communicating with a client application
US9398622B2 (en) 2011-05-23 2016-07-19 Twilio, Inc. System and method for connecting a communication to a client
US9325378B2 (en) * 2011-06-14 2016-04-26 Broadcom Corporation Computing device multiple display topology detection over radio
TWI575978B (zh) * 2011-07-05 2017-03-21 宏達國際電子股份有限公司 無線服務提供方法
CN102880618A (zh) * 2011-07-15 2013-01-16 国际商业机器公司 用于网页文档搜索的方法及系统
US20150052212A1 (en) * 2011-07-19 2015-02-19 Iqtell.Com, Llc System and Method for Processing Electronic Mail
US10182147B2 (en) 2011-09-21 2019-01-15 Twilio Inc. System and method for determining and communicating presence information
US20130139113A1 (en) * 2011-11-30 2013-05-30 Microsoft Corporation Quick action for performing frequent tasks on a mobile device
US9495227B2 (en) 2012-02-10 2016-11-15 Twilio, Inc. System and method for managing concurrent events
EP2642395B1 (de) * 2012-03-21 2018-12-19 ServiceTrace e.K. Verfahren und Vorrichtung zum Ausführen von Workflow-Skripten
US9158563B2 (en) 2012-03-27 2015-10-13 Microsoft Technology Licensing, Llc Dynamic plugin(s) for cloud application(s)
US9015682B1 (en) * 2012-03-28 2015-04-21 Google Inc. Computer code transformations to create synthetic global scopes
US9602586B2 (en) 2012-05-09 2017-03-21 Twilio, Inc. System and method for managing media in a distributed communication network
US9247062B2 (en) 2012-06-19 2016-01-26 Twilio, Inc. System and method for queuing a communication session
US20130346274A1 (en) * 2012-06-25 2013-12-26 Liquid Holdings Group, Inc. Electronic financial trading platform with real-time data analysis and reporting
US8677332B1 (en) 2012-06-26 2014-03-18 Google Inc. Executing multiple child code blocks via a single compiled parent code block
US9690748B1 (en) * 2012-07-02 2017-06-27 Amazon Technologies, Inc. Delivering notifications to background applications
CN104520836B (zh) * 2012-07-17 2017-08-08 良好科技控股有限公司 用于促进应用之间的服务提供的系统和方法
US8737962B2 (en) 2012-07-24 2014-05-27 Twilio, Inc. Method and system for preventing illicit use of a telephony platform
WO2014021878A1 (en) * 2012-07-31 2014-02-06 Hewlett-Packard Development Company, L.P. Computing device with automatic download and installation of a new plug-in
US9946557B2 (en) 2012-07-31 2018-04-17 Hewlett-Packard Development Company, L.P. Computing device with script execution application
KR102004986B1 (ko) * 2012-09-17 2019-07-29 삼성전자주식회사 어플리케이션 실행 방법 및 시스템, 단말과 그 기록 매체
CN102868596B (zh) * 2012-09-20 2015-07-29 腾讯科技(深圳)有限公司 一种网络社交互动方法及相关设备、系统
EP2888656A4 (en) * 2012-10-10 2016-03-16 Landmark Graphics Corp METHOD AND SYSTEM OF A KNOWLEDGE TRANSFER BETWEEN USERS OF A SOFTWARE APPLICATION
US8938053B2 (en) 2012-10-15 2015-01-20 Twilio, Inc. System and method for triggering on platform usage
US10346422B2 (en) * 2012-10-18 2019-07-09 International Business Machines Corporation Use of proxy objects for integration between a content management system and a case management system
US20140114864A1 (en) * 2012-10-22 2014-04-24 International Business Machines Corporation Case management integration with external content repositories
US20140136937A1 (en) * 2012-11-09 2014-05-15 Microsoft Corporation Providing and procuring worksheet functions through an online marketplace
US20140173269A1 (en) * 2012-12-18 2014-06-19 Apple Inc. Event Sharing Protocol for Data Processing Devices
US20140173405A1 (en) * 2012-12-19 2014-06-19 Google Inc. Using custom functions to dynamically manipulate web forms
US9282124B2 (en) 2013-03-14 2016-03-08 Twilio, Inc. System and method for integrating session initiation protocol communication in a telecommunications platform
US8769031B1 (en) * 2013-04-15 2014-07-01 Upfront Media Group, Inc. System and method for implementing a subscription-based social media platform
US9910895B2 (en) 2013-06-07 2018-03-06 Apple Inc. Push subscriptions
US9225840B2 (en) 2013-06-19 2015-12-29 Twilio, Inc. System and method for providing a communication endpoint information service
US9160696B2 (en) 2013-06-19 2015-10-13 Twilio, Inc. System for transforming media resource into destination device compatible messaging format
US9137127B2 (en) * 2013-09-17 2015-09-15 Twilio, Inc. System and method for providing communication platform metadata
US9274858B2 (en) 2013-09-17 2016-03-01 Twilio, Inc. System and method for tagging and tracking events of an application platform
US9171168B2 (en) * 2013-09-30 2015-10-27 Hewlett-Packard Development Company, L.P. Determine anomalies in web application code based on authorization checks
US9672200B1 (en) * 2013-11-06 2017-06-06 Apttex Corporation Spreadsheet with dynamic cell dimensions generated by a spreadsheet template based on remote application values
US9325624B2 (en) 2013-11-12 2016-04-26 Twilio, Inc. System and method for enabling dynamic multi-modal communication
US9553799B2 (en) 2013-11-12 2017-01-24 Twilio, Inc. System and method for client communication in a distributed telephony network
US9271137B2 (en) * 2013-12-31 2016-02-23 Verizon Patent And Licensing Inc. Orchestrating user devices to form images at venue events
US20150242431A1 (en) * 2014-02-25 2015-08-27 Ca, Inc. Computer system log file analysis based on field type identification
WO2015130273A1 (en) 2014-02-26 2015-09-03 Empire Technology Development Llc Presence-based device mode modification
US9344573B2 (en) 2014-03-14 2016-05-17 Twilio, Inc. System and method for a work distribution service
US9226217B2 (en) * 2014-04-17 2015-12-29 Twilio, Inc. System and method for enabling multi-modal communication
CN104049767A (zh) * 2014-05-19 2014-09-17 技嘉科技股份有限公司 触发开启宏的输入系统
US9251371B2 (en) 2014-07-07 2016-02-02 Twilio, Inc. Method and system for applying data retention policies in a computing platform
US9774687B2 (en) 2014-07-07 2017-09-26 Twilio, Inc. System and method for managing media and signaling in a communication platform
US9516101B2 (en) 2014-07-07 2016-12-06 Twilio, Inc. System and method for collecting feedback in a multi-tenant communication platform
WO2016065080A1 (en) 2014-10-21 2016-04-28 Twilio, Inc. System and method for providing a miro-services communication platform
US10628800B2 (en) * 2014-10-28 2020-04-21 Sugarcrm Inc. Meeting launcher
US10951540B1 (en) * 2014-12-22 2021-03-16 Amazon Technologies, Inc. Capture and execution of provider network tasks
US9477975B2 (en) 2015-02-03 2016-10-25 Twilio, Inc. System and method for a media intelligence platform
US9948703B2 (en) 2015-05-14 2018-04-17 Twilio, Inc. System and method for signaling through data storage
US10419891B2 (en) 2015-05-14 2019-09-17 Twilio, Inc. System and method for communicating through multiple endpoints
US9830591B2 (en) 2015-05-27 2017-11-28 Bank Of America Corporation Providing access to account information using authentication tokens
US9824351B2 (en) 2015-05-27 2017-11-21 Bank Of America Corporation Providing access to account information using authentication tokens
US10055110B2 (en) * 2015-07-27 2018-08-21 Oracle International Corporation Simulating a user interface to submit data received from a device
EP3133844B8 (en) * 2015-08-17 2019-09-11 Fanpictor AG Identification of selected mobile computing devices at a venue
US9965618B1 (en) * 2015-08-27 2018-05-08 Amazon Technologies, Inc. Reducing privileges for imported software packages
US9910668B2 (en) * 2015-09-10 2018-03-06 International Business Machines Corporation Sensor-driven eventing and two stage notification
CN106550002B (zh) * 2015-09-23 2019-12-13 中移(杭州)信息技术有限公司 一种paas云托管系统及方法
AU2015412727A1 (en) * 2015-10-28 2018-06-07 Ent. Services Development Corporation Lp Associating a user-activatable element with recorded user actions
US10659349B2 (en) 2016-02-04 2020-05-19 Twilio Inc. Systems and methods for providing secure network exchanged for a multitenant virtual private cloud
US10063713B2 (en) 2016-05-23 2018-08-28 Twilio Inc. System and method for programmatic device connectivity
US10686902B2 (en) 2016-05-23 2020-06-16 Twilio Inc. System and method for a multi-channel notification service
JP6701961B2 (ja) * 2016-05-27 2020-05-27 株式会社リコー 情報処理システム、情報処理装置、情報処理方法、及びプログラム
US10114616B2 (en) * 2016-08-04 2018-10-30 International Business Machines Corporation Discovery for pattern utilization for application transformation and migration into the cloud pattern
US11138370B1 (en) 2016-09-23 2021-10-05 Massachusetts Mututal Life Insurance Company Modifying and using spreadsheets to create a GUI on another device
US10540152B1 (en) * 2016-09-23 2020-01-21 Massachusetts Mutual Life Insurance Company Systems, devices, and methods for software coding
US11210459B1 (en) 2016-09-23 2021-12-28 Massachusetts Mutual Life Insurance Company Systems, devices, and methods for software coding
CN106411938A (zh) * 2016-11-22 2017-02-15 北京奇虎科技有限公司 一种用于对用户终端内的应用进行控制的设备及方法
US10496737B1 (en) * 2017-01-05 2019-12-03 Massachusetts Mutual Life Insurance Company Systems, devices, and methods for software coding
US10791105B2 (en) * 2017-04-07 2020-09-29 Microsoft Technology Licensing, Llc Credential-based proactive discovery of remote micro-services by spreadsheet applications
US10862979B2 (en) * 2017-04-07 2020-12-08 Microsoft Technology Licensing, Llc Techniques for supporting remote micro-services as native functions in spreadsheet applications
KR101897612B1 (ko) * 2017-04-14 2018-09-12 계명대학교 산학협력단 IoT 환경에서 패킷 분류를 위한 와일드카드 비율 기반 판별 트리 생성 방법 및 시스템
US10769560B1 (en) * 2017-05-10 2020-09-08 Massachusetts Mutual Life Insurance Company Systems and methods for chatbot applications tracking user stress levels
CN107451112B (zh) * 2017-07-24 2024-01-23 网易(杭州)网络有限公司 表格工具数据检查方法、装置、终端设备及存储介质
US10586017B2 (en) * 2017-08-31 2020-03-10 International Business Machines Corporation Automatic generation of UI from annotation templates
US10771463B2 (en) 2017-10-30 2020-09-08 International Business Machines Corporation Third-party authorization of access tokens
CN108399654B (zh) 2018-02-06 2021-10-22 北京市商汤科技开发有限公司 描边特效程序文件包的生成及描边特效生成方法与装置
JP7146458B2 (ja) * 2018-05-31 2022-10-04 シャープ株式会社 情報処理装置
CN108833150A (zh) * 2018-06-04 2018-11-16 郑州云海信息技术有限公司 一种告警方法及装置
KR102054663B1 (ko) * 2018-06-22 2020-01-22 동명대학교산학협력단 소스코드 가공 방식의 웹브라우저용 매크로 시스템
US10749875B2 (en) * 2018-06-28 2020-08-18 Microsoft Technology Licensing, Llc Security configuration lifecycle account protection for minors
RU2697796C1 (ru) * 2018-11-26 2019-08-20 Общество с ограниченной ответственностью "АЙХАЙ" Логический конструктор макросов
US11042699B1 (en) * 2019-01-29 2021-06-22 Massachusetts Mutual Life Insurance Company Systems, devices, and methods for software coding
CN110032366B (zh) * 2019-04-19 2022-07-22 北京奇艺世纪科技有限公司 一种代码定位方法及装置
US11568054B2 (en) 2019-06-11 2023-01-31 Micro Focus Llc Web application login macro generation and verification
CN110290212B (zh) * 2019-06-28 2020-06-23 浙江大搜车软件技术有限公司 服务调用记录方法、装置、计算机设备和存储介质
US11144338B2 (en) * 2019-08-20 2021-10-12 Hyland Software, Inc. Computing system for macro generation, modification, verification, and execution
US11204789B2 (en) 2019-08-20 2021-12-21 Hyland Software Inc. Graphical user interface for macro generation, modification, and verification
JP7514068B2 (ja) * 2019-10-04 2024-07-10 キヤノン株式会社 情報処理装置とその制御方法、及びプログラム
KR102284646B1 (ko) * 2019-10-25 2021-08-03 소프트캠프 주식회사 문서 파일에 구성된 매크로의 악성코드 감염 확인 방법과 시스템
CN113170283A (zh) * 2020-04-14 2021-07-23 思杰系统有限公司 基于到应用用户的消息触发事件通知
EP4162356A1 (en) 2020-06-05 2023-04-12 BASF Coatings GmbH Visual macro language for colorimetric software
US11848976B2 (en) * 2020-06-30 2023-12-19 Oracle International Corporation Custom action invocation in a speadsheet integrated with web services
TWI789849B (zh) * 2021-01-26 2023-01-11 緯穎科技服務股份有限公司 儲存裝置載具、儲存裝置組件與伺服器
KR102346480B1 (ko) * 2021-04-30 2022-01-03 주식회사 넷앤드 매크로 기반 어플리케이션 계정 관리 시스템
CN114168953A (zh) * 2021-12-06 2022-03-11 安天科技集团股份有限公司 一种恶意代码检测方法、装置、电子设备及存储介质
US11782712B2 (en) * 2022-02-01 2023-10-10 Better Holdco, Inc. Extensible event bus architecture
KR102551882B1 (ko) 2022-06-15 2023-07-04 여철석 전자상거래 주문내역 자동 연계 입력 시스템

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6529784B1 (en) * 2000-02-29 2003-03-04 Caldera Systems, Inc. Method and apparatus for monitoring computer systems and alerting users of actual or potential system errors
US7284054B2 (en) * 2003-04-11 2007-10-16 Sun Microsystems, Inc. Systems, methods, and articles of manufacture for aligning service containers
CN101421732A (zh) * 2006-02-17 2009-04-29 谷歌公司 用户分布式搜索结果

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6658453B1 (en) 1998-05-28 2003-12-02 America Online, Incorporated Server agent system
JP2000155743A (ja) 1999-01-01 2000-06-06 Hitachi Ltd 処理システム
US6567796B1 (en) * 1999-03-23 2003-05-20 Microstrategy, Incorporated System and method for management of an automatic OLAP report broadcast system
US6154766A (en) * 1999-03-23 2000-11-28 Microstrategy, Inc. System and method for automatic transmission of personalized OLAP report output
JP2001216211A (ja) 1999-11-24 2001-08-10 Sharp Corp インターネットサービス提供システムおよび方法、ならびにインターネットサービス提供システムで用いられるマクロサーバ
CA2404014A1 (en) * 2000-03-30 2001-10-11 Cygent, Inc. System and method for establishing electronic business systems for supporting communications services commerce
US20020065947A1 (en) * 2000-07-13 2002-05-30 Clayton Wishoff Software application agent interface
US6944662B2 (en) * 2000-08-04 2005-09-13 Vinestone Corporation System and methods providing automatic distributed data retrieval, analysis and reporting services
CA2434674C (en) * 2001-01-10 2010-06-08 Cisco Technology, Inc. Computer security and management system
JP2003331061A (ja) * 2002-05-14 2003-11-21 Akira Miyake 医薬情報の通知システム及びこれに使用する電子機器
US20070022155A1 (en) * 2002-08-22 2007-01-25 Owens David H Method and system for integrating enterprise software applications with desktop software applications
US7475123B2 (en) * 2002-11-18 2009-01-06 Sap Ag Web service integration
US6941134B2 (en) * 2002-12-19 2005-09-06 Cingular Wireless Ii, Llc Automated device behavior management based on preset preferences
US20050033855A1 (en) * 2003-08-05 2005-02-10 Ahmad Moradi Method and apparatus for generating and marketing video e-mail and an intelligent video streaming server
JP2005182596A (ja) * 2003-12-22 2005-07-07 Fuji Xerox Co Ltd 談話形成支援装置および方法
US20050240372A1 (en) * 2004-04-23 2005-10-27 Monk John M Apparatus and method for event detection
US20060070075A1 (en) 2004-09-03 2006-03-30 Sergei Rodionov Server-recorded macros and web application automation
US6990335B1 (en) * 2004-11-18 2006-01-24 Charles G. Shamoon Ubiquitous connectivity and control system for remote locations
JPWO2006104217A1 (ja) * 2005-03-29 2008-09-11 松下電器産業株式会社 携帯端末
US7673055B2 (en) * 2005-06-23 2010-03-02 Research In Motion Limited System and method for automatically responding to a received communication
US7716637B2 (en) * 2005-12-15 2010-05-11 Microsoft Corporation Embedded macros
US8832048B2 (en) * 2005-12-29 2014-09-09 Nextlabs, Inc. Techniques and system to monitor and log access of information based on system and user context using policies
WO2007100228A1 (en) 2006-03-02 2007-09-07 Mtome Co., Ltd A system and method for contents upload using a mobile terminal
US8307119B2 (en) * 2006-03-31 2012-11-06 Google Inc. Collaborative online spreadsheet application
US20070238450A1 (en) * 2006-04-07 2007-10-11 Lena Hogberg Software activation in a mobile terminal
US20090006996A1 (en) * 2006-08-07 2009-01-01 Shoumen Saha Updating Content Within A Container Document For User Groups
US20080104042A1 (en) * 2006-10-25 2008-05-01 Microsoft Corporation Personalized Search Using Macros
WO2008108337A1 (ja) * 2007-03-06 2008-09-12 Nec Corporation 端末データ共有方法及び共有データ表示方法
CN101203041B (zh) * 2007-04-19 2011-09-07 高建宏 利用移动定位技术实现自动联接附近出租车的方法和系统
JP2008304964A (ja) * 2007-06-05 2008-12-18 Hitachi Ltd 広告仲介サーバ、動線情報仲介サーバ及び電子マネー等付与サーバ
CN101498585A (zh) * 2007-08-12 2009-08-05 郑志豪 出租车导航系统
US20090300474A1 (en) * 2008-05-29 2009-12-03 Centralytics, Inc. Computer-based architecture using remotely-controlled electronic grid-based calculators

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6529784B1 (en) * 2000-02-29 2003-03-04 Caldera Systems, Inc. Method and apparatus for monitoring computer systems and alerting users of actual or potential system errors
US7284054B2 (en) * 2003-04-11 2007-10-16 Sun Microsystems, Inc. Systems, methods, and articles of manufacture for aligning service containers
CN101421732A (zh) * 2006-02-17 2009-04-29 谷歌公司 用户分布式搜索结果

Also Published As

Publication number Publication date
KR101668365B1 (ko) 2016-10-21
JP2013502013A (ja) 2013-01-17
KR101774967B1 (ko) 2017-09-05
US8713584B2 (en) 2014-04-29
US20110041140A1 (en) 2011-02-17
EP2465044A4 (en) 2013-05-29
CN102498483A (zh) 2012-06-13
WO2011020043A3 (en) 2011-06-16
EP2465044B1 (en) 2017-01-11
EP2465044A2 (en) 2012-06-20
CN105487922A (zh) 2016-04-13
KR20120068863A (ko) 2012-06-27
JP2015018570A (ja) 2015-01-29
WO2011020043A2 (en) 2011-02-17
AU2016201394A1 (en) 2016-03-24
AU2016201394B2 (en) 2017-03-23
US20140317640A1 (en) 2014-10-23
KR20160060783A (ko) 2016-05-30
JP5648056B2 (ja) 2015-01-07
JP5933660B2 (ja) 2016-06-15
AU2010282359A1 (en) 2012-02-23
US20140325531A1 (en) 2014-10-30
AU2010282359B2 (en) 2015-12-10

Similar Documents

Publication Publication Date Title
CN102498483B (zh) 事件触发的服务器端宏
CN102549560B (zh) 共享服务器侧宏
CN102549559B (zh) 托管的计算机环境中的虚拟对象间接化
US9823813B2 (en) Apparatus and methods for performing an action on a database record
US11328093B1 (en) Protecting sensitive data
US7752335B2 (en) Networked computing using objects
KR20140097157A (ko) 이-메일 클라이언트 애플리케이션으로부터 전사적 자원 관리 기능을 제공하기 위한 기법
US8788313B2 (en) Decentralised audit system in collaborative workflow environment
Al-Hassan Online restaurant order system

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
CP01 Change in the name or title of a patent holder

Address after: American California

Patentee after: Google limited liability company

Address before: American California

Patentee before: Google Inc.

CP01 Change in the name or title of a patent holder