本专利申请要求于2014年9月10日提交的标题为“SYSTEMS AND METHODS FOR A METADATA DRIVEN USER INTERFACE FRAMEWORK”的美国专利申请No.14/482,437的优先权,其全部内容通过引用合并于此。
技术领域
本申请涉及用于利用元数据来创建网络(web)应用用户界面(UI)的系统和方法。
附图说明
图1是根据一个实施例的用于提供元数据驱动UI的系统的框图。
图2是根据一个实施例的用于提供元数据驱动UI的服务器系统的示意框图。
图3是根据一个实施例的用于提供元数据驱动UI的客户端的示意框图。
图4是根据一个实施例的图示出了活动层级的框图。
图5是根据一个实施例的用于提供元数据驱动UI的方法的流程图。
图6是根据一个实施例的用于提供元数据驱动UI的另一方法的流程图。
具体实施方式
web应用允许软件被托管在服务器上、允许访问软件、并且允许软件在客户端设备上运行。例如,web应用通常包括可以在web浏览器中运行的软件。当将软件分布和安装在任何潜在客户端设备上变得困难和麻烦时,web应用特别有用。例如,可以在单个位置(例如,服务器)处对web应用进行维护和更新,从而使具有浏览器的任何客户端可以访问和使用web应用。
从传统的web应用用户界面(UI)仅仅可以由具有对web应用源代码或者文件的访问的开发人员更改的意义来说,该传统的web应用用户界面(UI)是静态的。例如,需要开发人员对web应用UI进行硬编码。在某些情况下,不同的租用者(例如,不同的业务实体或者客户端)可能期望唯一UI,该唯一UI包括UI导航、过程或者进程的聚组等。为了提供唯一UI,编程人员或者开发人员必须对代码进行修改,这可能导致用于的新的web应用。在某些情况下,在没有进行大量编码的情况下,每个租用者的唯一的外观和感受也许是可能的。然而,许多租用者想要聚组在一起的不同的过程、执行过程的不同的顺序、通过web应用的不同的导航或者流程、或者web应用UI的其它功能的(而非审美的)变化。实现功能的和导航的变化可能特别昂贵,从而导致更高的托管成本和更高的编程成本。因此,当成本高得令人难以承受时,租用者经常被开发人员已经确定的最能满足大多数潜在租用者或者客户端的需要的UI功能所困。
申请人已经认识到,需要对用于在不需要对UI修改进行硬编码的情况下生成web应用的UI的系统和方法,并且在本文中公开了该系统和该方法。本申请公开了用于基于元数据来生成web应用UI的系统、方法和装置。根据一个实施例,服务系统包括主机组件、元数据解释器、渲染引擎、和响应组件。主机组件被配置为从客户端接收对web应用的至少一部分的请求。元数据解释器被配置为检索描述web应用的UI的元数据。渲染引擎被配置为基于元数据来对初始屏幕(screen)进行渲染。初始屏幕包括供客户端显示的屏幕,该屏幕与web应用的活动有关。响应组件被配置为将元数据和初始屏幕发送至客户端。
根据另一实施例,客户端系统包括请求组件、接收器组件、显示组件、和元数据解释器。请求组件被配置为将对web应用的至少一部分的请求发送至服务器。接收器组件被配置为接收来自服务器的对请求的响应。响应包括描述web应用的UI的元数据和初始屏幕的UI资产。显示组件被配置为在显示器上显示初始屏幕,并且元数据解释器被配置为对元数据进行处理,以为web应用提供运行时间操作。
通过参照附图将最好地理解本公开的实施例,其中,相同的数字始终指定相同的元素。在以下描述中,提供了许多具体细节以透彻地理解本文所描述的实施例。然而,本领域的技术人员将认识到,可以省略具体细节中的一个或者多个,或者可以使用其它方法、组件、或者材料。在某些情况下,为了避免使本公开的更重要的方面难理解,并未详细地示出或者描述了操作。
此外,所描述的特征、操作、或者特性可以按照任何合适的方式组合在一个或者多个实施例中。也很容易理解,可以将结合所公开的实施例而描述的方法的步骤或者动作的顺序改变为对本领域的技术人员显而易见的。因此,在附图或者详细描述中的任何顺序仅仅是说明性的,而并不意谓暗示必需的顺序,除非指定需要该顺序。
实施例可以包括各种步骤,所述各种步骤可以体现为待由计算机系统执行的机器可执行指令。计算机系统包括一个或者多个通用或者专用计算机(或者其它电子设备)。替选地,计算机系统可以包括硬件组件,该硬件组件包括用于执行步骤的特定逻辑或者包括硬件、软件、和/或固件的组合。
实施例还可以被提供为计算机程序产品,该计算机程序产品包括存储有指令的计算机可读介质,该指令可以用于对计算机系统或者其它电子设备进行编程,以执行本文所描述的过程。计算机可读介质可以包括但不限于:硬盘驱动器、软磁碟、光盘、CD-ROM、DVD-ROM、ROM、RAM、EPROM、EEPROM、磁卡或者光卡、固态存储设备、或者适合于存储电子指令的其它类型的介质/计算机可读介质。
计算机系统和在计算机系统中的计算机可以经由网络连接。本文所描述的配置和/或用途的合适的网络包括一个或者多个局域网、广域网、城域网、和/或互联网或者IP网络,诸如,万维网、专用互联网、安全的互联网、增值网络、虚拟专用网络、外联网、内联网、或者通过介质的物理传输与其它机器通信的甚至独立的机器(所谓的“步行网”)。具体地,合适的网络可以由两个或者两个以上的其它网络(包括使用不同的硬件和网络通信技术的网络)的部分或者全部来形成。
一个合适的网络包括服务器和多个客户端。其它合适的网络可以包含服务器、客户端、和/或对等节点的其它组合,并且给定的计算机系统可以同时充当客户端和服务器两者。每个网络包括至少两个计算机或者计算机系统,诸如,服务器和/互客户端。计算机系统可以包括工作站、膝上型计算机、可断开连接的移动计算机、服务器、大型主机、集群、所谓的“网络计算机”或者“瘦客户端”、平板计算机、智能电话、个人数字助理或者其它手持式计算设备、“智能”消费者电子设备或者电器、医疗设备、或者其组合。
网络可以包括通信或者组网软件,诸如,可从Novell、Microsoft、Artisoft和其它供应商获得的软件,并且可以通过双绞线、同轴、或者光纤电缆、电话线、卫星、微波中继器、经调制的AC电源线、物理介质传输、和/或本领域的技术人员已知的其它数据传输“线”,来通过使用TCP/IP、SPX、IPX和其它协议来操作。
每个计算机系统包括至少一个处理器和存储器;计算机系统还可以包括各种输入设备和/或输出设备。处理器可以包括通用设备,诸如,或者其它“现成的”微处理器。处理器可以包括专用处理设备,诸如,ASIC、SoC、SiP、FPGA、PAL、PLA、FPLA、PLD、或者其它自定义或者可编程设备。存储器可以包括静态RAM、动态RAM、闪存、一个或者多个触发器、ROM、CD-ROM、磁盘、磁带、磁存储器、光学存储器、或者其它计算机存储介质。输入设备可以包括键盘、鼠标、触摸屏、光笔、平板计算机、麦克风、传感器、或者具有随附固件和/或软件的其它硬件。输出设备可以包括监视器或者其它显示器、打印机、语音或者文本合成器、交换机、信号线、或者具有随附固件和/或软件的其它硬件。
计算机系统可能能够使用软盘驱动器、磁带驱动器、光学驱动器、磁光驱动器、或者其它装置来读取存储介质。合适的存储介质包括具有特定物理配置的磁计算机可读存储设备、光学计算机可读存储设备、或者其它计算机可读存储设备。合适的存储设备包括软盘驱动器、硬盘驱动器、磁带、CD-ROM、DVD、PROM、RAM、闪存、和其它计算机系统存储设备。物理配置表示数据和指令,该指令使计算机系统按照本文所描述的具体的和预定义的方式操作。
本领域的技术人员易于通过使用本文所呈现的教导以及编程语言和工具(诸如Java、Pascal、C++、C、数据库语言、API、SDK、汇编语言、固件、微代码、和/或其它语音和工具)来提供有助于实现本发明的合适的软件。合适的信号格式可以体现为具有或者不具有错误检测和/或校正位的模拟或者数字形式、分组报头、特定格式的网络地址、和/或本领域的技术人员易于提供的其它支持数据。
所描述的实施例的多个方面将被图示为软件模块或者组件。如本文所使用的,软件模块或者组件可以包括位于存储器设备内的任何类型的计算机指令或者计算机可执行代码。例如,软件模块可以包括:计算机指令的一个或者多个物理或者逻辑块,该一个或者多个物理或者逻辑块可以被组织成执行一个或者多个任务或者实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。
在某些实施例中,特定软件模块可以包括:存储在共同实现模块的所描述的功能的存储器设备、不同的存储器设备、或者不同的计算机中不同的位置处所存储的不同的指令。事实上,模块可以包括单个指令、或者许多指令,并且可以分布在多个不同的代码段上、分布在不同的程序中、并且跨多个存储器设备分布。某些实施例可以在任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实行。在分布式计算环境中,软件模块可以位于本地和/或远程存储器存储器设备中。另外,在数据库记录中被捆绑或者渲染在一起的数据可以驻留在相同的存储器设备中,或者跨多个存储器设备驻留,或者可以跨网络在数据库中的记录的字段中被链接在一起。
可以根据本发明使用的大部分基础设施已经存在,诸如:通用计算机、计算机编程工具和技术、计算机网络和组网技术、数字存储介质、认证、访问控制、和由公共密钥、加密、防火墙、和/或其它装置所提供的其它安全工具和技术。
图1是图示出了用于提供元数据驱动UI的系统100的示意图。系统100包括通过网络106通信的服务器系统102和客户端104。在一个实施例中,网络106可以包括多个网络,该多个网络包括局域网(LAN)、广域网(WAN)、互联网、或者另一网络或者通信连接中的一个或者多个。在一个实施例中,系统100可以用于为web应用提供元数据驱动UI,其中,UI的行为是基于元数据而生成的。
服务器系统102可以包括托管web应用的计算设备或者计算系统。服务器系统102可以包括可以由一个或者多个客户端104通过网络106访问的机架式服务器或者其它计算设备。例如,服务器系统102可以通过互联网访问。在一个实施例中,服务器系统102在允许访问web应用之前需要进行授权。
在一个实施例中,服务器系统102存储关于web应用的信息,包括编程代码、描述web应用的UI的元数据等。在一个实施例中,服务器系统102存储元数据解释器的代码,该元数据解释器可以对元数据进行解释以生成代码,诸如,可以由web浏览器解释的代码。服务器系统102也可以存储用于渲染引擎的代码,该渲染引擎可以渲染可视显示元素(诸如UI资产)以便显示屏幕或web应用的其它可视界面。服务器系统102可以响应于来自客户端104的对web应用的请求来将与web应用相对应的代码、元数据等提供至客户端104。在一个实施例中,服务器系统102可以对web应用的初始屏幕进行渲染,以加速在客户端104处对初始屏幕的显示。
客户端104可以包括可以访问服务器系统102的任何类型的计算设备或者系统。例如,客户端104可以包括膝上型计算机、台式计算机、平板计算机、智能电话、上网本、或者能够访问计算机网络的任何其它计算设备。在一个实施例中,客户端104包括用于访问网站和执行web应用的浏览器。在一个实施例中,客户端104可以接收来自在客户端104的浏览器内执行的服务器系统102的与web应用相对应的元数据、代码或者其它信息。在一个实施例中,元数据解释器和/或渲染引擎的实例可以位于客户端104和服务器系统102上。多个客户端104或许能够连接至服务器系统102并且访问该服务器系统102。
图2是用于向web应用提供元数据驱动UI的服务器系统102的示意框图。服务器系统102包括主机组件202、元数据解释器204、渲染引擎206、响应组件208、web应用UI元数据存储210、和核心活动类型存储212。组件202-212以举例的方式给定并且可能并不是所有都被包括在所有实施例中。
主机组件202被配置为从客户端接收对web应用的至少一部分的请求。例如,主机组件202可以响应于用户键入或者选择与由服务器系统102托管的web应用相对应的统一资源定位符(URL)来接收请求。请求可以指示特定的web应用或者功能。请求可以包括指示客户端104或者用户的身份的信息。例如,请求可以指示客户端104所对应的租用者或者实体。在一个实施例中,主机组件202可以确定请求是否是对web应用的初始请求。例如,主机组件202可以基于客户端104是否正在请求整个应用或者仅仅请求web应用的资源或者资产,来确定请求包括初始请求。在一个实施例中,请求可以指示请求是否是初始请求或者可以指示web应用在客户端104处的当前状态。例如,请求可以指示web应用当前在客户端104处处于特定状态(例如,对特定活动进行处理)。
在一个实施例中,主机组件202可以确定将web应用的哪部分发送至客户端104。例如,响应于对web应用的一般请求,主机组件202可以确定应该将整个web应用(和任何关联的元数据或者代码)发送至客户端104。在一个实施例中,请求可以指示正在被请求的web应用的特定活动或者过程。在一个实施例中,如下面将讨论的,主机组件202支持“深度链接”,其中,用户可以请求与在活动层级内的活动相关联的资源或者活动。例如,用户的所请求的URL的本地路径可以表示描述用户在UI流程内的位置、或者在UI流程内的预期起始点的活动层级。主机组件202可以确定:如果所请求的活动需要与在活动层级中的根活动相对应的某些信息,也可以将其发送至客户端104(例如,如到对应的子活动的URL路径所指示的)。
元数据解释器204被配置为检索和/或解释与web应用相对应的元数据。在一个实施例中,元数据解释器204检索与所请求的web应用相对应的元数据。例如,每个web应用可以具有描述web应用的UI的相对应的元数据。元数据包括关于数据的数据,或者更具体地,在一个实施例中,包括与所请求的web应用的UI有关的声明信息。元数据可以包括所需格式的参数或者数据。元数据的示例数据格式包括JavaScript对象符号(JSON)格式、可扩展标记语言(XML)格式、逗号分隔值(CSV)格式、或者其它数据或者元数据格式。在一个实施例中,元数据格式不包括可由浏览器读取的格式或者代码语言。例如,为了获得可以由客户端104执行的代码,需要对元数据进行检索和解释/转换。
元数据可以被存储在web应用UI元数据存储210中并且从该web应用UI元数据存储210中检索到。在一个实施例中,元数据指示运行时间操作或者web应用的运行时间操作的顺序,并且web应用包括元数据驱动的运行时间。例如,元数据在运行期间可以用于动态地生成屏幕、确定接下来应该执行哪个过程等。在一个实施例中,web应用包括动态生成的UI,其中,UI界面是基于元数据而生成的。在一个实施例中,元数据在web应用的UI内定义所允许的导航。例如,元数据可以指示待执行的下一个过程和/或该过程需要来自用户的哪一种输入。
在一个实施例中,元数据解释器204可以检索特定于客户端104的元数据。例如,来自客户端104的请求可以指示相对应的租用者,并且元数据解释器204可以检查是否存在租用者的任何自定义元数据。在某些实施例中,可以以每个租用者为基础来对工作流程和活动配置进行修改,以为每个租用者提供自定义UI外观和行为。服务器系统102可以将修改作为独立元数据存储在web应用UI元数据存储210内。一旦相关UI元数据已经由元数据解释器204所识别,就可以在对特定于租用者的任何修改进行处理之前将其应用于默认UI元数据。利用客户端特定的元数据来对默认元数据进行修改可以允许在不重新部署或者重新启动web应用的情况下,以每个租用者为基础来改变web应用的整个UI。组合的或者修改后的元数据然后可以由响应组件208提供至客户端104,或者可以提供至浏览器或者渲染引擎206以生成UI。
元数据解释器204可以对元数据进行解释,以生成渲染引擎206可以用来生成针对浏览器的视觉屏幕以控制web应用的操作或者web应用的UI的代码或者信息。在一个实施例中,元数据包括指示在web应用内的一个或者多个活动或者活动类型的信息。如本文所使用的,给定术语活动以意谓表示web应用的离散部分(诸如web应用的UI)的元数据。例如,活动可以用于表示接收来自用户的输入的形式、图表或者图形、对服务的调用、呈现待查看/编辑的记录的列表的操作、执行布尔(Boolean)逻辑的操作、或者其它操作。每个活动与活动类型相对应。活动类型与负责执行该类型的活动的类别或者模块捆绑在一起。活动也可组合为每个活动可以包含子活动。例如,任何类型的活动可以包括或者参考任何其它类型的活动。
在一个实施例中,与核心活动类型有关的信息可以包括在核心活动类型存储212中。在一个实施例中,可以由任何web应用使用的多个内置活动类型可以用系统来建立并且由核心活动类型存储212存储。可以作为核心活动类型包括的某些示例活动类型包括工作流程活动类型、步骤活动类型、列表活动类型、“组成”活动类型、“如果”活动类型、应用活动类型、模式活动类型、和防护活动类型。该列表仅仅是以举例的方式给定并且在不同的实施例中可以被显著地修改。
工作流程活动类型是用于进行顺序流程控制的活动。工作流程可以包括多个步骤活动类型。每个步骤活动类型可以包括在工作流程内的活动的逻辑分组。步骤活动可用于显示用户在工作流程内的进度。每个步骤活动由一个或者多个活动组成。在一个实施例中,在步骤活动中的至少一个活动按照惯例具有可视组件,并且因此可以表示在UI导航流程中的离散点。例如,请求可以指示客户端104在web应用中希望跳过的工作流程的任何特定步骤活动。
列表活动类型是将记录列表呈现给用户并且允许用户对记录进行编辑的活动。例如,可以在屏幕上呈现可视列表,并且用户可以提供输入,以对列表中的条目进行修改、删除条目、添加条目、对列表进行重新排列等。
组成活动类型允许用户或者开发人员创建由多个活动组成的活动。在一个实施例中,组成活动的配置指定主要活动、包括待在主要活动之前执行的一个或者多个活动的列表的“之前”属性、和/或包含待在主要活动之后执行的一个或者多个活动的列表的“之后”属性。组成活动允许待与具有可视组件的活动(诸如,表格活动)绑定在一起的任意的之前和之后操作。在一个实施例中,可能需要主要活动包括可视组件,并且可能限制在之前和之间部分中列出的活动具有可视组件。
如果活动类型允许用户创建分支逻辑。在一个实施例中,如果活动的配置指定一种表达,即,“then(那么)”活动,并且可选地为“else(否则)”活动。当进行评估时,表达产生布尔(Boolean)值(例如,真或者假)。当执行如果活动时,对表达进行评估。如果将表达评估为真的布尔(Boolean)值,那么执行then活动。如果将表达评估为假的布尔(Boolean)值,那么执行else活动,即使已经指定了一个。
应用活动类型可以用于非顺序流程控制。应用活动的示例是表格布局,其中,在应用活动的配置中列出的每个活动与可视选项卡相对应。当用户选择了可视组件时,可以执行与选项卡相对应的子活动。要注意,应用活动和web应用并不是一回事,该web应用指可以利用元数据驱动UI框架来实现其UI的首要应用。
模式活动类型可以用于执行单个子活动并且在模式对话框中对其进行渲染。因为活动可以包含任意的子活动层级,所以模式活动可以用于模式地呈现复杂的UI组件。
防护活动包含无法移动的活动。例如,防护活动类型可以包含检查是否已经接收到来自用户的所需信息的非可视活动。例如,防护活动可以跟随收集来自用户的数据输入的表格活动。在用户选择了关于表格活动的下一个选项之后,防护活动可以执行以确定是否已经提供了所有所需的信息。如果防护活动确定已经录入了所有所需的信息,那么防护活动可以允许客户端104在web应用中继续下一个活动。如果防护活动确定还未提供某些所需的信息,那么防护活动可以阻止前进导航并且在表格上提供需要填写哪些域或者需要选择哪些选项的指示。
表格活动类型可以定义呈现给用户的可视表格。表格活动的配置可以指示用户可以提供输入的一个或者多个域。示例域包括复选框、单选按钮、下拉列表、文本域等。在一个实施例中,活动可以用作域类型。例如,域可以与另一活动相对应。表格活动可以用于接受来自用户的输入,以供web应用使用或者进行存储。
如上所述,上述活动类型仅仅以举例的方式给定。特定应用可以分别具有多个活动,该多个活动具有其它活动类型,该其它活动类型在应用内提供预期功能和操作。除了核心或者内置活动类型之外,允许用户或者开发人员是活动扩展或者创建自定义活动类型。例如,web应用开发人员可以创建其自己的自定义活动类型。自定义活动类型可以是完全新的或者可以对预先存在的活动类型进行扩展。在一个实施例中,开发人员可以创建应用于预先存在的活动类型的扩展。在不修改底层代码的情况下,这使开发人员能够自定义库存活动类型的行为。在一个实施例中,使现有活动类型扩展是通过定义用于重写经扩展活动类型的行为的新的元数据和代码来完成的。在一个实施例中,可以特定于租用者存储经扩展活动类型或者自定义活动类型。例如,如果创建与租用者有关的新的活动类型,那么可以分开存储新的活动类型和任何相对应的代码,从而仅仅使用与特定租用者有关的活动类型。
在一个实施例中,每个活动参考活动类型。在一个实施例中,活动类型是包含待由系统执行以执行该类型的活动的代码的模块。活动类型可以公开可以用于对活动类型的代码的行为进行修改的一个或者多个输入属性。活动提供至这些输入属性的值被统称为活动的配置。活动的配置是活动元数据的部分。在一个实施例中,在没有明确地包括数据作为元数据的部分的情况下,元数据可以参考该数据作为活动的输入。如果该类型的活动(例如,元数据)不定义其自己的配置,活动类型可以定义要在事件中使用的默认配置。
每个活动表示应该由系统执行的操作。通常,活动包括指示系统生成UI资产并且将其提交给浏览器的可视组件。然而,活动可以表示不具有可视组件的操作,诸如,调用服务和存储响应。
用户的通过UI的导航被称为流程。在一个实施例中,元数据响应于用户事件,通过确定执行哪一个活动来控制用户的通过系统的流程。某些活动类型特别设计为控制用户的通过UI的流程。这些流程控制活动的某些示例是工作流程活动、应用活动、列表活动、模式活动、和防护活动。当用户触发需要导航的UI事件时,活动流程控制活动将确定接下来执行哪一个活动。例如,如果将给定UI定义为具有子表格活动序列的工作流程活动,那么执行在序列中的第一表格活动,这依次将表格的可视表示呈现给用户。如果用户触发UI事件提交表格,那么一旦已经对表格进行了处理,第一表格活动就可以用信号通知其执行完成。此时,工作流程活动可以执行在序列中的第二表格活动等。
活动还可以具有响应于UI事件而触发的但是不构成UI导航的一个或者多个活动。在一个实施例中,活动类型可以定义默认动作,但是可以重写活动的动作。活动的动作可以执行另一活动。
在一个实施例中,具有可视组件(诸如表格活动)的每个活动表示在UI流程中的离散点。执行不具有可视组件的活动,但是可以不使导航停止。例如,假设将给定UI定义为具有两个子活动的工作流程活动:表格活动、以及被配置为执行之前服务活动并且然后执行主要表格活动的组成活动。在一个实施例中,当首先执行工作流程活动时,执行子表格活动,这依次将表格的可视表示呈现给用户并且使导航操作停止。如果用户触发UI事件以提交表格,那么一旦已经对表格进行了处理,第一表格活动就可以用信号通知其执行完成。此时,工作流程活动将执行子组成活动。组成活动将首先执行之前服务活动。因为服务活动不具有可视组件,所以其执行将不会使导航操作停止。组成活动然后执行主要表格活动,这依次将表格的可视表示呈现给用户并且使导航操作停止。
如基于本公开所理解的,元数据和活动可以创建控制UI和web应用的操作的活动的层级。例如,根层级可以与web应用的开始界面或者屏幕相对应,并且子活动可以形成分支层级,其中,某些活动从属于其它活动。在一个实施例中,组合活动的灵活性仅仅基于元数据来允许web应用的UI的复杂变化。因此,在不修改或者创建代码的情况下,用户可以定义复杂的UI导航和流程。
图4图示出了web应用UI的示例活动层级400。层级400包括可以在web应用期间执行的多个可视活动404-406。层级400可以由元数据定义。层级400包括根活动、活动A 402、和子活动,该子活动包括活动B 404、活动C 406、和活动D 408。在一个实施例中,元数据可以定义包括配置信息的活动A 402的配置,该配置信息指示活动B 404、活动C 406、和活动D 408是活动A 402的子活动。活动B 404的元数据配置可以将子活动定义为活动E 410和活动F 412。相似地,活动E 410的元数据配置可以定义子活动H 416,并且活动C 406的元数据配置可以定义子活动G 414。因此,元数据可以允许用户基于元数据来指定层级,包括UI导航或者流程。例如,一个租用者可能期望活动G作为活动H的子活动被执行,并且可以指定元数据以做出这种变化。因此,租用者可以获得预期的自定义UI,然而,其它租用者将不会看到这种变化。重新回到图2,元数据解释器204可以通过检索与元数据相对应的代码来对元数据进行解释。例如,元数据解释器204可以检索与活动类型相对应的代码。元数据解释器204可以将代码、和用于活动的元数据来定义的任何参数(即,活动配置)提供至浏览器或者渲染引擎206,以供处理或者执行。在一个实施例中,元数据解释器204可以获得由默认活动类型所指示的当前活动的代码,以对元数据进行修改,从而对默认活动类型、和/或自定义活动类型进行修改。例如,在确定应该针对活动检索什么代码之前,可以将默认元数据与租客特定的元数据进行组合。
根据一个实施例,由元数据所指定的每个活动在web应用操作期间可以包括两个阶段:设置阶段和运行时间阶段。设置阶段可以包括:元数据解释器204检索元数据、获得与元数据相对应的代码、并且针对代码获得输入,而运行时间阶段可以包括:基于任何输入来执行代码。在一个实施例中,元数据解释器204可以以逐个活动为基础来对元数据进行处理。例如,元数据解释器204仅仅可以检索当前活动或者跟随当前活动的多达预定数目的活动的代码。可以将检索到的代码提供至渲染引擎或者web应用,以进行显示/执行。例如,当在服务器系统102中时,可以将检索到的代码提供至渲染引擎206,但是可以不在服务器系统102的显示器上对其进行渲染。
渲染引擎206被配置为将由元数据解释器204检索到的元数据和/或其它信息转换为UI资产,以显示为UI界面的屏幕的部分。UI资产可以包括可以由浏览器解释的信息或者代码。由渲染引擎206所生成的UI资产可以包括标记,诸如,遵守超文本标记语音(HTML)协议的文本或者符号。UI资产还可以包括可以由浏览器解释的代码,诸如,JavaScript。UI资产可以包括资源文件或者对资源文件(诸如图像文件、文本文件、视频文件、音频文件、或者其它文件)的引用,以显示为网页或者界面的部分。
为了对UI进行渲染,系统对UI元数据进行显示,并且动态地生成必要的UI资产(例如,标记、代码、和对资源文件的引用),并且将其提供至用户的浏览器以进行处理。在一个实施例中,渲染引擎206基于由元数据解释器204检索到的元数据或者代码来对屏幕进行渲染。
根据一个实施例,渲染引擎206的实例既在服务器系统102上运行,又在客户端104的web浏览器中运行。当用户将第一请求提交给主机的服务器时,在主机的服务器上运行的渲染引擎206执行对初始屏幕的渲染。然后,响应于用户的请求,将所生成的UI资产连同应用的UI元数据一起发送至用户的浏览器。在某些情况下,没有进一步与主机的服务器通信是必要的。在客户端的浏览器内运行的渲染引擎206可以对任何剩余屏幕的UI元数据进行渲染,并且将所生成的UI资产提供至浏览器。在服务器上对初始屏幕进行渲染,从而在浏览器已经完成对响应进行处理之后就立刻向用户呈现可见内容。如果在浏览器处未对初始屏幕进行渲染,那么可以向用户呈现空白屏幕,直到客户端侧渲染引擎对初始屏幕的UI元数据进行处理。因此,可以更快速地显示初始屏幕,因为客户端104不需要等待元数据解释器204和/或渲染引擎206来生成屏幕的UI资产。在一个实施例中,服务器系统102的渲染引擎206响应于主机组件202确定请求是web应用的初始请求,来对初始屏幕进行渲染。在一个实施例中,可以在客户端104处对其它屏幕进行渲染。
在一个实施例中,初始屏幕是将在初始可视呈现中具有部分的所有活动的组合。例如,如果第一活动的活动配置是定义多个表格活动的序列的工作流程活动,那么初始屏幕将包括工作流程外壳(控件、标题、文本)连同在序列中的第一表格活动的可视表示。
在一个实施例中,每个活动配置(如用元数据所定义的)指示将向用户呈现什么可视组件。在一个实施例中,通过递归地导航活动的子活动层级并且为完整活动树建立可视场境,来确定活动的当前状态的可视表示。然后,可以对结果可视场境进行渲染,以创建提交给浏览器的UI资产。例如,渲染引擎206可以被配置为:通过递归地评估活动和任何子活动以为屏幕建立可视场境并且响应于完成建立可视场境来显示屏幕,来对UI的屏幕进行渲染,
递归地建立可视场境并且对其进行一次渲染的该技术通常比对每个子活动进行递归渲染更快,因为仅仅对浏览器的文档对象模型(DOM)更新一次。如果单独地对子活动进行渲染,那么将触发对浏览器的DOM进行多次更新,这将明显减慢渲染。渲染引擎206被配置为通过生成与初始屏幕相对应的UI资产来对初始屏幕进行渲染,以供客户端显示。
响应组件208被配置为将包括与所请求的web应用相对应的元数据的响应发送至客户端104。在一个实施例中,响应组件208将信息发送至客户端104,如主机组件202所确定的。例如,响应可以包括整个web应用的元数据。在一个实施例中,响应可以包括由渲染引擎206渲染的初始屏幕。例如,如果响应于对web应用的初始请求来发送响应,那么响应可以包括初始屏幕的UI资产。根据一个实施例,典型的情况在于,响应于初始请求来将应用的所有UI元数据从主机的服务器发送至客户端104。然而,也可以将后续请求发送至主机的跟随初始请求的附加UI元数据的服务器(或者第三方服务器)。
图3是客户端104的示意框图。客户端104包括请求组件302、接收器组件304、显示组件306、和web浏览器308。客户端104还包括元数据解释器204、渲染引擎206、和核心活动类型存储212。在一个实施例中,元数据解释器204、渲染引擎206、和核心活动类型存储212由服务器系统102提供以在客户端104上(诸如,在客户端104的web浏览器308内)运行。
请求组件302被配置为发送对web应用的至少一部分的请求。请求组件302可以响应于用户选择链接、输入URL、或者以另外的方式提供输入以运行由服务器系统102托管的web应用来发送请求。请求可以包括与web应用相对应的URL。请求可以指示特定web应用或者功能。请求可以包括指示客户端104或者用户的身份的信息。例如,请求可以指示客户端104所对应的租用者或者实体。请求组件302可以发送包括请求是初始请求的指示的请求。在一个实施例中,如果web应用已经在客户端104上运行,那么请求组件302可以指示web应用的当前状态。
在一个实施例中,系统支持深度链接,其中,用户可以请求与在活动层级内的活动相关联的资源。例如,客户端104可以请求活动,而不是根活动。参照图4,深度链接可以包括请求活动B 404、或者在活动层级400内的任何其它活动,而不是根活动、活动A 402。在一个实施例中,用户的请求的URL的本地路径表示在描述用户在web应用的UI流程内的位置的活动层级400内的特定活动。在一个实施例中,如果请求非根活动,那么根活动(或在活动层级中的其它活动)将URL路径的相对部分传递至相对应的子活动。子活动将使用相对路径来确定其可视表示,并且然后利用其子活动来重复过程等。该深度链接允许工作流程或者web应用的任何活动是系统行为的切入点。例如,工作流程本身是活动类型。将工作流程表征为活动类型可以易于与遗留系统集成,这可以取决于工作流程。
在某些实施例中,请求组件302可以发送在初始请求之后的请求。例如,请求组件302可以将请求发送至附加UI元数据的服务器系统102(或者第三方服务器)。
接收器组件304可以被配置为接收来自与所请求的web应用相对应的服务器系统102的响应。响应可以包括与服务器系统102有关的上述信息中的任何一种。响应可以包括整个web应用的元数据。在一个实施例中,响应可以包括由渲染引擎206在服务器系统102处渲染的初始屏幕。例如,如果响应于对web应用的初始请求来发送响应,那么响应可以包括初始屏幕的UI资产。在一个实施例中,响应可以包括元数据解释器204、渲染引擎206、和/或核心活动类型存储212。
显示组件306被配置为显示UI的一个或者多个可视组件。在一个实施例中,显示组件306在浏览器窗口中显示由渲染引擎206所渲染的屏幕。例如,显示组件306可以显示在来自服务器系统102的响应中所接收的初始屏幕。在一个实施例在,显示组件306可以显示由客户端104的渲染引擎206所渲染的屏幕。在一个实施例中,显示组件306包括客户端104的物理显示器。
web浏览器308可以包括被配置为基于组网协议来访问文件和网站的应用或者组件。例如,web浏览器308可以被配置为基于用于web应用、网站等的通信协议、标记语言、文件类型等中的一种或者多种来浏览和访问网站和文件。示例浏览器包括移动或者桌面版本的InternetMozillaGoogle等。
元数据解释器204可以包括关于图2描述的元数据解释器。例如,在客户端104上的元数据解释器204可以包括在服务器系统102上的元数据解释器204的另一实例。在一个实施例中,元数据解释器204可以用于对在客户端104处的元数据进行解释,以为web应用、控制导航等生成UI。
渲染引擎206可以包括关于图2所描述的渲染引擎。例如,在客户端104上的渲染引擎206可以包括在服务器系统102上的渲染引擎206的另一实例。在一个实施例中,渲染引擎206可以用于对在服务器系统102处未被渲染的任何屏幕进行渲染。例如,如果初始图像已经由服务器系统102渲染,那么渲染引擎206可以不用于对该初始图像进行渲染。在初始图像之后的图像可以由对客户端104而言是本地的渲染引擎206进行渲染。
客户端104还可以包括用于存储与核心或者内置活动类型有关的信息的核心活动类型存储212。例如,核心活动类型存储212可以包括与活动类型或者由元数据配置的活动相对应的代码。
基于本文所公开的教导,并且利用位于客户端103处的元数据解释器204、渲染引擎206、和核心活动类型存储212,客户端104可以对元数据进行解释,以为相对应的web应用动态生成UI。因此,客户端104可以使用元数据来定义UI布局和内容以及UI行为和导航。此外,开发人员和用户可以通过对UI元数据进行编辑并且使其扩展,来使UI扩展并且对其进行自定义。本发明可以在不重新部署或者重新启动应用服务器的情况下自动应用UI变化。此外,可以隔离关于特定租用者而做出的变化,从而使这些UI变化仅仅影响某个组的最终用户(与租客相对应的用户)的体验。
图5是图示出了用于为web应用提供元数据驱动UI的方法500的示意流程图。在一个实施例中,方法500由图2的服务器系统102执行。
方法500开始,并且主机组件202接收来自客户端104的请求(502)。请求可以指示对由服务器系统102托管的web应用的至少一部分的请求。元数据解释器204查找与所请求的web应用有关的UI元数据(504)。例如,元数据解释器204可以检索与web应用的默认活动相对应的元数据。在一个实施例中,元数据解释器204可以检索特定于租客的元数据。元数据解释器204可以基于租客特定的元数据来对默认元数据进行修改。
主机组件202确定从客户端104所接收的请求(502)是否包括初始请求(506)。如果请求是初始请求(在506中的是),那么渲染引擎206基于由元数据解释器204查找到的元数据(504)来对初始屏幕进行渲染(508)。响应组件208将响应发送至客户端104(510),该响应包括由渲染引擎206渲染的任何UI资产(508)和由元数据解释器204检索到的UI元数据,并且方法500结束。如果请求不是初始请求(在506中的否),那么响应组件208发送由元数据解释器204检索到的UI元数据(512),并且方法500结束。在一个实施例中,响应组件208可以发送包括web应用的状态组件的响应。例如,状态可以指示是否已经对初始屏幕进行了渲染。状态可以允许客户端104在不对初始屏幕进行重新渲染的情况下重新开始服务器系统102停止的地方。
图6是图示出了用于为web应用提供元数据驱动UI的方法600的示意流程图。在一个实施例中,方法600由图3的客户端104执行。在一个实施例中,客户端104可以结合服务器系统102执行图5的方法500来执行方法600。
方法600开始,并且请求组件302将对web应用的至少一部分的请求发送至服务器系统102(602)。接收器组件304接收对请求的响应(诸如,在方法500期间发送的响应(510或者512))(604)。响应可以包括web应用的UI元数据和/或初始屏幕的UI资产。UI资产可以包括由在服务器系统102上的渲染引擎204所渲染的资产。
接收器组件304确定由请求组件302发送的请求(602)是否是初始请求(606)。例如,接收器组件304可以确定由接收器组件304所接收的响应(604)是否包括初始屏幕的UI资产(606)。作为另一示例,接收器组件304可以基于在响应中的状态信息来确定请求是否是初始请求。例如,客户端104可以基于在响应中所指示的状态信息来继续执行web应用。
如果请求不是初始请求(在606中的否),那么渲染引擎206对初始屏幕进行渲染(例如,对UI元数据进行可视渲染)(608),并且将经渲染的初始屏幕的UI资产提交给web浏览器308以进行显示(610),并且方法600结束。如果请求是初始请求(在606中的是),那么渲染引擎206响应于web浏览器308来提交接收到的UI资产(604)以进行显示(610),并且方法600结束。
对本领域的技术人员而言,在不脱离本公开的根本原则的情况下,可以对上述实施例的细节做出许多改变是显而易见的。因此,本公开的范围应该仅仅由以下权利要求确定。