访问开发系统中的语义内容的制作方法

文档序号:12287762阅读:145来源:国知局
计算机程序是在各种开发工具上开发的。例如,许多软件开发者使用交互式(或集成)开发环境(IDE)来开发软件。开发者使用IDE以便开发计算机系统内的各类型的模型,以及以便定制那些模型。示例性交互式开发环境包括多个不同工具以使得开发者能够开发并测试需要被开发的代码并且以便按需定制计算机系统。作为示例,IDE可包括允许计算机程序员开发软件的源代码编辑器、一个或多个构建自动化工具以及调试器。一些IDE解说性地包括编译器、解释器、或这两者它们可包括版本控制系统和各种工具来简化图形用户界面的构建。它们还可包括类浏览器、对象浏览器、以及类层级图,以用于面向对象的软件开发。从而,开发者可使用IDE来生成代码和元数据,连同对代码和元数据的定制,这些代码和元数据可用于开发在给定组织中使用的系统。例如,开发者可针对与应用元素有关的源代码和元数据文件进行工作。一个应用可能需要创建或改变元数据和按各种方式消费该元数据的代码两者。在使用IDE生成或定制软件时,应用开发者在应用内对具体概念(其可被表示为类型)建模,并且在需要时编写代码。大型应用(开发者常使用IDE来开发大型应用)可包括数千个不同的类型。作为示例,一些计算机系统包括业务系统,如企业资源规划(ERP)系统、客户关系管理(CRM)系统、业务线(LOB)系统,等等。这些类型的计算机系统通常具有被建模和定制的数千个不同的类型。作为示例,一些此类业务系统通常仅不同的表格就有数千个,更别提许多其它类型。业务系统不是仅有的具有大量类型的计算机系统类型。例如,游戏系统或各种其它类型的系统通常也具有在软件系统中建模的数千个不同的类型。提供以上讨论仅用作一般的背景信息,并不旨在用作帮助来确定所要求保护的主题的范围。概述在软件开发期间,开发者搜索元素以促进开发过程。搜索架构允许开发者搜索满足某种准则的元数据和代码。搜索架构利用语义元素信息来返回与开发者的查询相关的结果。在一个示例中,一种开发系统包括开发模块,该开发模块感测用户开发输入并基于用户开发输入转换计算机系统的元素。元素包括在该计算机系统中建模的类型。用户界面模块生成具有用户输入机制的用户界面显示,并且感测通过用户输入机制接收的用户搜索输入,该用户搜索输入指示用于搜索该计算机系统的元素的用户搜索查询。搜索引擎标识该用户搜索查询的基于类型的搜索参数。搜索引擎被控制以基于基于类型的搜索参数激活基于类型的搜索组件。基于类型的搜索组件执行元素搜索以在用户界面显示中返回搜索结果集合。提供本概述以便以简化的形式介绍以下在详细描述中进一步描述的一些概念。本概述并非旨在标识出要求保护的主题的关键特征或必要特征,亦非旨在用作辅助确定要求保护的主题的范围。所要求保护的主题不限于解决在背景中提及的任何或所有缺点的实现。附图简述图1是语义搜索架构的一个示例的框图。图2是示出用于生成语义搜索组件的方法的一个示例的流程图。图3是示出在一个示例下的语义搜索功能性的框图。图4是示出用于使用语义搜索组件执行搜索的方法的一个示例的流程图。图5示出用户界面显示的一个示例。图6示出用户界面显示的一个示例。图7是示出被部署在云计算架构中的图1中示出的架构的一个示例的框图。图8-12示出可与图1中示出的架构一起使用的移动设备的各示例。图13是一个示例计算环境的框图。详细描述图1是语义搜索架构100的一个示例的框图。架构100包括具有开发功能性104的交互式开发系统(例如IDE)102。图1示出了开发者106与系统102交互来执行在计算机系统中运行的应用元素107的开发和/或定制。例如,每个应用元素包括元数据109,并且也可包括代码111。作为示例,开发者106使用功能性104来开发用于应用的元素107,诸如通过创建或改变元数据109和代码111。在一个示例中,但是不作为限制,元素107包括面向对象的编程环境中的对象。在系统102中可利用(一个或多个)任何适当的编程语言。在所示示例中,模型存储108存储与各种不同类型的应用元素(例如类型)相对应的元数据和代码,并且能被例如系统102和搜索组件代码生成器130访问。“类型”是指表示系统中所建模的概念的抽象(abstraction)。例如,仅举数例,在业务系统中,元素类型可包括表单、实体、类、表格、菜单项、安全角色、和/或许可。在一个示例中,表格对象包含用于在数据库中保持应用数据的元数据和代码。在另一示例中,表单对象包含用于描述要在各种设备中显示的信息内容的元数据和代码,以便应用用户消费信息并与该应用交互。在一个示例中,当利用开发功能性104来开发应用元素107时,向开发者106呈现集成或IDE视图以编码应用元素107。为了说明,在下面的表1中示出了一个简化示例。表1以此方式,被开发者106创作以开发应用元素107的代码和元数据被以第一格式呈现,例如,在提供用于编码应用元素107的用户友好界面的代码编辑器视图中。然而,当开发者106查看和创作第一格式的代码和元数据时,交互式开发系统102维护以与第一格式不同的第二格式的经开发的应用元素的源代码表示并对其进行操作。在一个示例中,由系统102针对每个元素维护包括代码和元数据的串行化表示。第二格式是机器可读的并且能够被系统102执行的。在一个示例中,但不作为限制,模型存储108包括将源代码表示存储为XML文件的文件系统。元数据和代码XML包括串行化的元素结构,每个元素结构具有其自己的类型。下面的表2示出了对应于表1中示出的集成视图的示例XML文件:表2在以上示例中,元数据和代码被串行化为一个XML文件。即,代码片段(即,非结构化的串)和元数据(即,属性和值的结构化集合)散布于XML文件中。然而,本领域技术人员理解,可利用其它格式。开发者106可通过独立的开发者设备(诸如个人计算机、平板、另一移动设备等)或直接与交互式开发系统102交互。开发者106还可通过网络(例如远程地)与系统102交互。仅作为示例,在图1中开发者106被示出为直接(例如,本地地)与系统102交互。在一个示例中,交互式开发系统102包括处理器110和用户界面模块112。用户界面模块112生成具有供开发者106交互的用户输入机制118的用户界面显示116。开发者106与用户输入机制118交互以控制和操纵交互式开发系统102。在一个示例中,开发者106可这样做以实现开发功能性104以及使用搜索模块120和导航模块122。系统102还可包括其它项114。开发者106可使用模型存储108中的现有代码和元数据,或生成新代码和元数据或者现有的和新的代码和元数据的组合。通过这样做,模型存储108中的现有元素可被改变或删除,且新的元素可被添加。为了便于开发,开发者106可能期望搜索模型存储108来寻找感兴趣的元素。例如,开发者106可能期望定位特定元素来在该应用内定制。然而,部分由于代码库的大小(其通常很大),可能难以找到满足特定开发者搜索准则的元素。一个搜索实现依赖于提前构造索引,针对该索引执行开发者查询。例如,存在导航内容并构造索引的爬虫,索引随后被用于搜索。在开发平台的情况下,一旦元素被改变或增加,则索引变得过时。而且,给定代码库的大小,重复重构索引花费大量时间。在所示示例中,语义搜索架构100通过使用搜索模块120来在语义上搜索模型108(将元素的名称、类型和/或属性纳入考虑)来获得搜索结果。搜索是语义上的,因为搜索利用对元素类型的结构、以及元素类型的含义和那些元素类型内的属性的理解。如下面更详细地讨论的,元素类型的特定结构可与搜索模型存储108的元素相关。作为说明而非限制,每个元素类型具有定义该元素类型的元素的运行时行为的属性、方法和/或计算的特定结构。例如,表格元素类型可包括名称(例如,“顾客表格”)、以及标识顾客的属性的一组属性(例如,顾客ID、地址等)。而且,在此示例中,表格元素类型可包括用于计算顾客的值的方法和/或用于显示该值的方法。在更详细描述架构100的整体操作之前,将首先提供简要概览。在一个示例中,搜索模块120包括搜索引擎,搜索引擎接收按照一个或多个令牌的形式定义搜索准则的用户搜索查询。令牌定义搜索参数,并可包括形成字符串或项的一个或多个字符。搜索引擎解析来自开发者106的搜索查询以标识语义搜索参数或约束并对照模型存储108执行搜索查询以获得被提供给开发者106的搜索结果集合。在一个示例中,执行查询包括将该一个或多个令牌对照该应用元素中的属性和/或方法进行匹配。语义搜索参数可在搜索查询本身中显式提供,或可从搜索查询隐含或推导。例如,在下面参考图5描述的示例中,开发者106输入以下搜索查询:type:table,methodname:insertproperty:“source=crosscompany”(类型:表格,方法名称:插入属性:“源=跨公司”)此处,从查询标识的语义搜索参数包括基于类型的约束。即,开发者106期望元素类型为“表格”、具有与令牌“插入”匹配的名称的方法、以及具有与令牌“跨公司”匹配的值的属性的元素。尽管此处在基于类型的约束的上下文中讨论实施例,然而要注意,其它语义搜索参数或约束可被使用。在所示示例中,为了执行搜索,搜索模块120访问搜索组件存储128,该搜索组件存储128存储由搜索组件代码生成器130生成的多个搜索组件(即,搜索组件124和126)。使用搜索组件代码生成器130生成搜索组件的一个示例在下面参考图2更详细地讨论。简言之,搜索组件代码生成器130包括处理器131,该处理器131被配置成针对在模型存储108中建模的每个不同的元素类型生成搜索组件。每个搜索组件针对所述元素类型中的一个特定元素类型被生成。以此方式,每个搜索组件专用于其被生成的特定元素类型的结构。在一个示例中,针对开发者106可使用的所有可能元素类型,搜索组件被生成并被存储于存储128中。例如,在一个示例中,预定义元素类型集合对开发者106可用,且任何新元素类型通过对系统102的更新被添加到系统102。搜索模块120使用来自搜索查询的基于类型的搜索约束来标识来自搜索组件存储128中的各搜索组件中的一个或多个搜索组件以用于返回来自模型存储108中的元素的结果列表。使用搜索组件来搜索模型存储108的一个示例在下面参考图4更详细地讨论。简言之,搜索模块120标识每个基于类型的搜索约束的相应的搜索组件。在以上示例中,搜索模块120标识针对表格元素类型生成的搜索组件(即,搜索组件124或126)。被标识的搜索组件被针对模型存储108中具有表格元素类型的每个元素实例化,以标识匹配搜索查询中的方法名称和属性值的元素。搜索模块120聚集从被实例化的搜索组件获得的搜索结果。导航模块122促成对搜索结果的导航。搜索架构100从而利用关于应用元素107的语义信息来执行对模型存储108的搜索,而无需提前构造或维护索引。这可减少执行开发系统中的搜索功能性的处理负载和时间和存储器要求,并可改善搜索结果与用户的查询的相关度。为便于说明,在图1的示例中,针对应用元素的每个不同类型,架构100维护一特定搜索组件,该搜索组件被配置成搜索模型存储108的该元素类型的现有元素。然而,那些搜索组件也能够搜索由开发者106添加到模型存储108的任何新元素,而不管新元素的类型(即,具有预定义搜索组件的所有元素类型)或特定属性。相反,在已索引的搜索系统的情况下,向模型存储108添加新元素将需要更新索引来包括新元素。为便于进一步说明,假定模型存储108包括两个不同的元素类型(即,表格元素类型132和表单元素类型134)。针对元素类型132生成第一搜索组件124并针对元素类型134生成第二搜索组件126。在图1的示例中,代码生成器130仅需要针对每个元素类型运行一次。以此方式,一旦搜索组件124和126已被生成,则代码生成器130不需要重新生成或修改搜索组件,即使类型132和134的现有元素在模型存储108中被修改和/或类型132和134的新元素被添加到模型存储108中。搜索组件124在搜索模块120搜索类型132的元素时被实例化,而搜索组件126在搜索模块120搜索类型134的元素时被实例化。在一个示例中,当两个元素类型132和134被搜索时,搜索组件124和126可并行操作以减少搜索时间。注意,尽管在图1中仅示出了两个元素类型和基于类型的搜索组件,然而任何数量的元素类型和语义搜索组件可被实现。尽管模型存储108和搜索组件存储128在图1中被示出为与交互式开发系统102分开,然而要注意,模型存储108和/或搜索组件存储128可以是交互式开发系统102的一部分。然而,由于带宽和等待时间考虑,在一些实现中,模型存储108和搜索组件存储128可在同一计算系统上被维护,尽管这仅是一个示例。以此方式,尽管可通过网络发送搜索请求和结果,然而搜索架构100不需要传送模型存储108。同样,这仅是架构的一个示例。而且,图1示出了各种不同的功能块。将注意,这些块可被合并以使得每一块执行更多功能,或者这些块可被划分以使功能被进一步分布。还应当注意,以上讨论已示出了一定数量的数据存储,包括数据存储108和搜索组件存储128。尽管这些存储被示出为两个独立的数据存储,然而它们还可以在单一数据存储内形成。此外,那些数据存储中的数据也可被存储在多个附加数据存储中。而且,数据存储对于访问它们的环境、代理、模块和/或组件而言可以是本地的,或者它们可以远程于这些环境、代理、模块和/或组件且可由这些环境、代理、模块和/或组件访问。类似地,一些可以是本地的,而其他是远程的。在所示示例中,处理器110和131包括具有相关联的存储器和定时电路系统(未分别示出)的计算机处理器。它们是它们所属的代理或环境的功能部件,并且解说性地由该环境或代理中的其它项激活并促进所述其它项的功能。图2是示出用于生成语义搜索组件的方法200的一个示例的流程图。为便于说明而不是限制,方法200将在生成基于类型的搜索组件的架构100的上下文中描述。方法200可被周期性地发起和/或响应于一条件或事件被发起。例如,方法200可响应于对系统102的更新而被发起,该更新添加或修改系统102支持的元素类型。在另一示例中,方法200可响应于来自开发者106的输入(例如,通过选择用户界面116上的控件,诸如打开、关闭、保存等)而被发起。在步骤202,搜索组件代码生成器130访问模型存储108,并在步骤204确定是否存在要针对其生成基于类型的搜索组件的任何新元素类型。在一个示例中,搜索组件代码生成器130分析模型存储108中的一些(例如最近的改变和添加)或全部元素并将那些元素与现有或已知元素类型(即,类型132和134)进行比较。例如,搜索组件代码生成器130标识开发者106改变或添加的元素。如果新元素类型被标识,则搜索组件代码生成器130在步骤206分析新元素类型的结构以在步骤208针对新元素类型生成基于类型的搜索组件。在一个示例中,搜索组件代码生成器130将新元素类型的结构解析为任何子类型,并确定该类型和/或子类型包含什么属性、任何子元素类型、从该元素类型推导什么元素类型、以及针对该元素类型的属性获取器(propertygetter)的实现。每个属性获取器定义用于检索该元素类型的属性的函数,例如基于该属性在元素类型中的位置和/或与其它属性的关系。在一个示例中,搜索组件代码生成器130生成不同的属性获取器代码来搜索该元素类型结构的不同部分。例如,该代码中的一块代码可搜索该元素的给定部分中的方法,且该代码中的一块代码可关注控件等。关于上面讨论的顾客表格元素类型示例,一个属性获取器可被配置成返回“顾客ID”属性且另一属性获取器可被配置成返回“地址”属性。每个搜索组件被配置成遵循被定义的元素模式(例如,子元素、属性、方法等的模式),其基于该搜索组件针对其生成的元素类型。例如而非限制,在图1中,元素类型132和134具有彼此不同的子元素模式。搜索组件124被配置成调用搜索方法来检查和返回与元素类型132相关联的子元素的值,而搜索组件126被配置成调用搜索方法来检查和返回与元素类型134相关联的子元素的值。作为示例,一个元数据元素包括树型数据结构并由名称和元数据元素类型定义。元数据元素类型进一步由一组属性定义,其中每个属性由名称和属性值的一种类型定义。作为示例而非限制,属性值的类型可以是原语(可被转换为字符串(YesNo(是否)、日期、标签等))。这种属性被称为“简单属性”。属性值的另一种类型是元数据元素类型,其包含子元数据元素。这种属性可被称为“节点属性”。根元数据元素是直接存储在元数据存储中并不具有任何父元数据元素的元素。子元数据元素是包含在某个其它元素节点属性中的元素。元数据路径包括唯一标识该元数据元素并促成定位该元数据元素的字符串。在一个示例中,该路径的形式是:dynamics://<Root_type>/<Root_element_name>[/<Subtype_1>/<Subelement_name_1>[/<Subtype_2>/<Subelement_name_2>[…]]]其中:<Root_type>-根元数据元素的类型<Root_element_name>-根元素的名称<Subtype_i>-树中的每个子元数据元素的类型<Subelement_name_i>-树中的每个子元数据元素的名称在步骤210,被生成的语义搜索组件被存储在搜索组件存储128中。如果任何附加新元素类型在步骤212被标识,则步骤206、208和210被针对该(一个或多个)新元素类型重复。图3是示出在一个示例下的语义搜索功能性的框图。为便于说明而不作为限制,图3将在架构100的语义搜索功能性的上下文中描述。框250向交互式开发系统102提供接口。通过框250,搜索模块120接收搜索查询,在框252该搜索查询被提供给查询解析器。该查询提供定义(一个或多个)过滤器的一个或多个搜索准则,并可具有任何适当的句法或语法。下面提供一个相对简单的句法示例:搜索查询是search_string(搜索_字符串),其中:search_string=empty_stringsearch_string=text_without_colonsearch_string=filtersearch_string=search_stringfilterfilter=filter_name:filter_valuefilter_value=text_without_commafilter_value="any_text"filter_value=filter_value,filter_valuefilter_name=nameORtypeORmodelORproperty所以搜索字符串由一般形式的过滤器集合构成:<filter_1>:<filter_1_value>[<filter_2>:<filter_2_value>…[<filter_N>:<filter_N_value>]]其中<filter_i>是可接受的过滤器名称之一,而<filter_i_value>是被逗号分开且可能被引用的过滤值。如上面所说明的并如在图3中所示,用户搜索准则的一个示例是元素名称,其可指定一个字符串或字符串集合。如果一元素的名称包含所述字符串中的至少一个字符串,则认为该元素满足此准则。每个逗号分开的值可以是可接受的元素名称。在一个示例中,元素名称是默认过滤器。从而,如果搜索查询包括单个令牌,则假定其为元素名称。在此示例中,如果没有基于类型的约束被标识,则搜索架构可实例化所有可用元素类型的搜索组件。另一示例准则是元素类型,其可指定一个元素类型或一组元素类型。如果一元素是被指定的类型之一的元素,则认为该元素满足此准则。每个逗号分开的值可以是元素类型之一的名称(即,表格、类、字段)。搜索查询可将根和子类型指定为值。在一个示例中,过滤逻辑可以如下:(roottype_1ORroottype_2OR…ORroottype_N)AND(subtype_1ORsubtype_2OR…ORsubtype_N)另一种示例准则是元素属性,其可指定一组键值对“属性的名称-属性的值”。如果对于每个对以下为真则认为元素满足该准则:a)元素包含具有指定名称的“简单”属性,以及b)此属性的值被转换为包含指定值的字符串。每个逗号分开的值可以是以下形式:property_name=property_value(属性名称=属性值)。在框254,一个或多个基于类型的搜索组件(例如,组件124和/或126)基于被标识的元素类型被实例化。例如,这可通过基于来自解析器框252的类型过滤准则在框256访问类型信息(例如,从基于类型的搜索组件存储126)来执行。框256提供关于元素类型的信息,包括但不限于:类型包含什么属性,元素类型的子元素的类型,从该元素类型推导出什么元素类型,以及针对该元素类型的属性获取器的实现。在一个示例中,框254使用框256提供的类型信息来处理搜索选项以便使类型准则与属性准则相对应。如果搜索准则包括一个或多个属性,则使用类型信息,框254可滤除不能包含被搜索属性的所有元素类型。对于要被搜索的每个元素类型,相应的基于类型的搜索组件根据代码生成器130生成的代码被实例化。在框258,对模型存储108中的元素的引用根据来自框254的搜索准则以及在框256被实例化的语义搜索组件被获得。例如,元数据元素引用可促成获得根元素的名称(不与存储访问连接的快速操作)和/或加载元素(与存储访问连接的相对长的操作)。在框260,例如基于该元素的名称或其它试探法的指定准则,在框258获得的元素引用被优先级化到块。例如,具有包含任何被搜索名称的名称的根元素将在不包含该名称的根元素之前被处理。框262处理模型存储108中的具体元素以确定它们是否满足搜索准则。在一个示例中,如果元素的类型是在框254处指定的所需类型之一、元素的名称包含所需名称或其一部分之一、以及针对搜索准则指定的每对“属性的名称-属性的值”该元素包含具有该名称的属性且此属性的值包含指定的属性的值为真,则认为该元素满足搜索准则。在一个示例中,框262从框264获得元素断言(predicate)函数或其它信息,其被用于确定元素是否满足搜索准则。框264使用来自框256的信息为262提供的每个元素类型创建断言函数。例如,框264提供元素类型给框256并接收关于每个元素类型的属性获取器的实现的信息。如果模型存储108中的元素满足搜索准则,则结果通过接口框250被提供给开发者106。图4是示出用于使用语义搜索组件执行搜索的方法300的一个示例的流程图。出于说明目的而不作为限制,方法300将在使用基于类型的搜索组件执行搜索的架构100的上下文中描述。在步骤302,例如使用用户界面显示116,显示开发表面。在步骤304,接收搜索输入,并且在步骤306,解析搜索输入以标识搜索准则。搜索准则的示例包括但不限于:基于类型的约束、方法名称、以及属性值。搜索模块120随后搜索模型存储108以寻找满足搜索准则的元素。在步骤308,一个或多个基于类型的搜索组件被标识并被实例化以搜索模型存储108。例如,如上面参考图3所讨论的,基于类型的搜索约束可在搜索输入中被显式定义。在另一示例中,基于类型的搜索约束可从在搜索输入中提供的令牌被推断。例如,对于在搜索输入中提供的属性值,步骤308可确定哪些元素类型具有对应的属性。随后,该一个或多个基于类型的搜索组件被搜索模块120实例化以基于搜索查询在模型存储108中搜索元素。在一个示例中,搜索组件的分开实例化被针对相应元素类型的每个元素创建。在步骤310,被实例化的搜索组件被用来搜索模型存储108中的元素,且在步骤312,标识满足从步骤306标识的准则的元素。如同上面讨论的,在一个示例中,搜索组件可搜索元素的串行化表示(例如,XML文件),而不是直接搜索开发者106开发的元素。作为示例而非限制,当在模型存储108中搜索元素的串行化表示时,搜索组件通过寻找串行化表示中对相应元素的引用(例如,行号和列号位置)来标识该元素的满足搜索准则的一部分。搜索组件可区分代码与元数据,并且对于在串行化表示中标识的匹配,计算代码中的位置,就像其搜索被呈现给开发者的集成代码视图一样。从而,从开发者106的角度看,搜索模块120在代码编辑器和/或元数据编辑器视图内搜索并返回结果,而不是串行化表示。在一个示例中,搜索组件读取元素,将元素转换为面向对象的表达,并应用其属性获取器来标识并对照来自搜索查询的基于属性的搜索准则匹配属性。搜索组件将匹配的属性转换为该对象内唯一标识该属性的相应路径。例如,该路径包括统一资源标识符(URI),其可以是如上所讨论的元数据路径。在步骤314,将结果作为指示与搜索准则匹配的元素的链接集合返回。例如,搜索组件通过将相应URI返回给搜索模块120的聚集器组件来标识元素匹配。聚集器URI被提供给用户界面模块112以呈现给开发者106。在步骤316,开发者106对特定URI的选择被接收,例如通过诸如鼠标点击或其它用户输入等用户交互。导航模块122解码被选择的URI以标识相应的元素位置。在一个示例中,URI包括对独特属性(例如,“source=crosscompany”(“源=跨公司”)的引用,其中对URI的选择在该URI所标识的位置处打开元数据编辑器。在另一示例中,URI包括对包括值的方法主体的引用,其中对URI的选择打开代码编辑器。在一个示例中,搜索结果被异步地获得和显示。这在图4中用箭头320来表示。即,当在步骤312被实例化的语义搜索组件标识满足搜索准则的元素时,被标识的元素的URI被显示给开发者,同时搜索在后台继续。图5解说了用户界面显示400的一个示例,其提供了开发表面,开发者106通过该开发表面可开发应用元素并使用架构100执行搜索。为说明目的而非作为限制,用户界面显示400将在架构100的上下文中描述。用户界面显示400包括代码编辑器视图402,其接收用于创作应用元素107的开发者输入,以及语义搜索接口404,其接收开发者搜索查询。作为示例,以下搜索查询已被输入到元素404中:type:table,methodname:insertproperty:“source=crosscompany”(类型:表格,方法名称:插入属性:“源=跨公司)”使用关于图3描述的示例句法,该搜索查询指定类型过滤器“table(表格)”,方法名称过滤器“insert(插入)”以及属性名称过滤器“crosscompany(跨公司)”。搜索模块120实例化对应于表格类型的基于类型的搜索组件。搜索查询可被异步执行,其在搜索结果URI被获得时用搜索结果URI填充结果窗口406。即,搜素可通过在窗口406中显示一个或多个搜索结果URI来开始,并随后在附加搜索结果URI被获得时将附加搜索结果URI添加到窗口406。以此方式,开发者106可继续与用户界面显示400交互,例如通过点击期望的URI,以将视图402导向相应的搜索结果,同时搜索继续在后台运行以返回任何附加结果。在所示示例中,每个URI包括标识元素和元素的位置的标签信息408和位置信息410。在一个示例中,搜索模块120的搜索能力作为应用编程接口(API)连同对象模型一起被揭示,其独立于搜索查询句法。使用该API,搜索操作可作为网络上的服务被调用,该服务可从多个不同设备中的任何设备被远程消费(例如,服从访问权限和安全性)。搜索API的参数是对象模型中的对象而不是符合句法的查询字符串。从而,搜索查询句法被从搜索者解耦。作为示例,对象模型的类图可包括多个不同的类,其中每个类定义一个或多个语义搜索约束以及搜索和检查相应元素要调用的方法。对象模型类所定义的语义搜索约束的示例包括但不限于:类型约束、属性约束、代码约束以及名称约束。图6解说了使用搜索API呈现搜索结果的示例用户界面450。用户界面450包括接收定义搜索参数的搜索查询的查询输入字段452和显示从搜索模块返回的相应查询结果的查询结果字段454。在所示示例中,搜索参数包括代码约束类并标识代码约束的字符串(即,“whileselect(当选择))。”代码约束类包括用于匹配字符串、排定搜索优先级等的方法。搜索模块实例化代码约束类的对象并对模型存储执行搜索。在一个示例中,取决于发起搜索的设备,可提供不同句法。例如,从具有较大形状因子屏幕的开发者台式计算机,开发者可被允许输入正规句法形式的查询字符串。另一方面,从具有较小形状因子的移动设备,正规句法的输入对开发者可能更困难。搜索架构可被配置成促成更简单的形式的查询输入。例如,当使用移动设备等时,可向开发者呈现具有预定义搜索功能的控件,诸如被指派到特定搜索约束集合(例如,特定的基于类型的搜索)的按钮。本讨论提到了处理器和服务器。在一个示例中,处理器和服务器包括具有相关联的存储器和定时电路系统(未分别示出)的计算机处理器。它们是它们所属的系统或设备的功能部分,且由这些系统中的其他模块、组件和/或项目的功能来激活并促进这些功能。同样,讨论了多个用户界面显示。它们可以采取各种各样的不同形式且可具有布置于其上的各种各样的不同用户可致动输入机制。例如,用户可致动输入机制可以是文本框、复选框、图标、链接、下拉菜单、搜索框,等等。它们也可用各种各样的不同方式被致动。例如,可使用点击设备(诸如跟踪球或鼠标)来致动它们。可使用硬件按钮、开关、操纵杆或键盘、拇指开关或拇指垫等等来致动它们。还可使用虚拟键盘或其他虚拟致动器来致动它们。另外,在其上显示它们的屏幕是触敏屏的情况下,可以使用触摸手势来致动它们。同样,在显示它们的设备具有语音识别组件的情况下,可以使用语音命令来致动它们。还讨论了数个数据存储。将注意,它们可各自被分解成多个数据存储。它们全部可位于访问它们的系统的本地,全部可以是远程的,或一些可以在本地而其他在远程。本文构想了所有这些配置。同样,附图示出了具有归属于每一框的功能的多个框。将注意,可以使用更少的框,使得功能由更少的组件来执行。同样,可以使用更多框,其中功能被分布在更多组件之间。图7是图1中所示的架构100的框图,不同之处在于其元件被置于云计算架构500中。云计算提供了不要求终端用户知晓交付服务的系统的物理位置或配置的计算、软件、数据访问和存储服务。在各个示例中,云计算通过诸如因特网之类的广域网使用合适的协议来交付服务。例如,云计算提供者通过广域网交付应用,并且它们可以通过web浏览器或任何其他计算组件被访问。架构100的软件、模块或组件以及相对应的数据可被存储在远程位置处的服务器上。云计算环境中的计算资源可以被整合在远程数据中心位置处或者它们可以是分散的。云计算基础结构可以通过共享数据中心来交付服务,即使在用户看来它们是单个访问点。因此,在此所述的模块、组件和功能可以从远程位置处的服务提供者使用云计算架构来提供。替代地,它们可以从常规的服务器中提供,或者它们可以直接地或以其他方式安装在客户端设备上。本说明书旨在包括公共云计算和私有云计算两者。云计算(公共和私有两者)提供了基本无缝的资源联营以及对管理和配置底层硬件基础结构的降低的需求。公共云由供应商管理,并且通常支持使用同一基础结构的多个消费者。此外,与私有云相反,公共云能够将终端用户从管理硬件中释放出来。私有云可由机构本身管理,并且基础结构通常不与其他机构共享。该机构在某种程度上仍然维护着硬件,诸如安装和维修等。在图7中所示的示例中,一些项与图1中所示的那些是类似的,并且它们被类似地编号。图7具体地示出交互式开发系统102、模型存储108、搜索组件存储128和搜索组件代码生成器130可位于云502(可以是公共的、私有的或者其中某些部分是公共的而某些部分是私有的组合)中。因此,开发者106使用用户设备504通过云502来访问那些系统。图7还描绘了云架构的另一示例。图7示出还构想了架构100的某些元素可被置于云502中而其他元素没有被置于云502中。作为示例,模型存储108可被置于云502的外部,并且通过云502来被访问。在另一示例中,搜索组件存储128也可在云502的外部。在另一示例中,搜索组件代码生成器130也可在云502的外部。无论它们位于哪里,它们都可直接由设备504通过网络(广域网或局域网)访问,它们可由服务主存在远程站点处,或者它们可作为通过云来提供或通过驻留在云中的连接服务来访问的服务。本文构想了所有这些架构。还将注意,架构100或其部分可被置于各种各样不同的设备上。这些设备中的某些包括:服务器、台式计算机、膝上型计算机、平板计算机、或其他移动设备,诸如掌上计算机、蜂窝电话、智能电话、多媒体播放器、个人数字助理等。图8是可被用作其中可部署本发明的系统(或其部分)的用户或客户的手持式设备16的手持式或移动计算设备的一个示例的简化框图。图9-12是手持式或移动设备的示例。图8提供了客户端设备16的组件的大体框图,该客户端设备16可以运行架构100的模块或组件或者与架构100交互、或这二者。在设备16中,提供了通信链路13,该通信链路允许手持设备与其它计算设备通信,并且在一些示例中提供用于诸如通过扫描来自动接收信息的信道。通信链路13的示例包括:红外端口、串行/USB端口、诸如以太网端口之类的电缆网络端口、以及允许通过一个或多个通信协议的通信的无线网络端口,所述通信协议包括作为用于提供对网络的蜂窝接入的无线服务的通用分组无线服务(GPRS)、LTE、HSPA、HSPA+、以及其他3G和4G无线电协议、1Xrtt和短消息服务,并包括提供对网络的本地无线连接的802.11和802.11b(WiFi)协议、和蓝牙协议。在其他示例中,应用或系统被容纳在连接到可移动安全数字(SD)卡接口15的SD卡上。SD卡接口15和通信链路13沿总线19与处理器17(也可实现来自图1的处理器110)进行通信,该总线19还连接到存储器21和输入/输出(I/O)组件23、以及时钟25和定位系统27。在一个示例中,提供了I/O组件23以促进输入和输出操作。针对设备16的各个示例的I/O组件23可以包括:输入组件,比如按钮、触摸传感器、多点触摸传感器、光学或视频传感器、语音传感器、触摸屏、邻近传感器、话筒、倾斜传感器以及重力开关;以及输出组件,比如显示设备、扬声器和或打印机端口。也可以使用其他I/O组件23。时钟25包括输出时间和日期的真实时间时钟组件。时钟还可以为处理器17提供定时功能。定位系统27包括输出设备16的当前地理位置的组件。这例如可以包括全球定位系统(GPS)接收机、LORAN系统、航位推算系统、蜂窝三角测量系统或者其他定位系统。这例如还可以包括生成所期望的地图、导航线路和其它地理功能的测绘软件或导航软件。存储器21存储操作系统29、网络设置31、应用33、应用配置设置35、数据存储37、通信驱动程序39以及通信配置设置41。它还可存储可以是架构100的部分或全部的客户端系统24。存储器21可以包括所有类型的有形易失性和非易失性计算机可读存储器设备。其还可以包括计算机存储介质(下面描述)。存储器21存储计算机可读指令,所述指令在被处理器17执行时致使处理器根据所述指令执行计算机实现的步骤或功能。处理器17可以也被其他模块或组件激活以促进它们的功能。网络设置31的示例包括诸如代理信息、因特网连接信息以及测绘之类的事物。应用配置设置35包括为特定企业或用户定制应用的设置。通信配置设置41提供了用于与其他计算机进行通信的参数,并且包括诸如GPRS参数、SMS参数、连接用户名和口令之类的项目。应用33可以是之前已经存储在设备16上的应用或是在使用期间安装的应用,但是这些应用可以是操作系统29的一部分,或者也可以在设备16之外被托管。图9示出其中设备16是平板计算机600的一个示例。在图9中,计算机600被示为具有用户界面显示屏602。屏幕602可以是触摸屏(使得来自用户手指的触摸姿势可以用于与应用交互)或者启用笔的界面,其接收来自笔或指示笔的输入。其还可以使用屏幕上虚拟键盘。当然,其还例如可以通过诸如无线链路或USB端口之类的合适的附连机制附连到键盘或其他用户输入设备。计算机600还可以接收语音输入。图10和图11提供了可被使用的设备16的附加示例,但是也可以使用其它设备。在图10中,提供功能电话、智能电话或移动电话45作为设备16。电话45包括:一组小键盘47,其用于拨打电话号码;显示器49,其能够显示包括应用图像在内的图像、图标、网页、照片和视频;以及控制按钮51,其用于选择在显示器上示出的项目。电话包括天线53,该天线53用于接收诸如通用分组无线服务(GPRS)和1Xrtt之类的蜂窝电话信号以及短消息服务(SMS)信号。在一些示例中,电话45还包括容纳安全数字(SD)卡57的SD卡槽55。图11的移动设备是个人数字助理(PDA)59或多媒体播放器或平板计算设备等等(在此称为PDA59)。PDA59包括电感屏61,所述电感屏感测指示笔63(或其他指示器,诸如用户的手指)在该指示笔被置于屏幕之上时的位置。这允许用户在屏幕上选择、突出显示和移动项目以及绘图和书写。PDA59还包括多个用户输入键或按钮(比如按钮65),其允许用户将显示器61上所显示的菜单选项或其他显示选项滚屏,并且允许用户在没有接触显示器61的情况下改变应用或选择用户输入功能。尽管未被示出,但是PDA59可以包括允许与其他计算机进行无线通信的内置天线和红外发射机/接收机、以及允许与其他计算设备的硬件连接的连接端口。这样的硬件连接通常是通过经由串行或USB端口连接到其他计算机的支架来完成的。因此,这些连接是非网络连接。在一个示例中,移动设备59还包括容纳SD卡69的SD卡槽67。图12类似于图10,不同之处在于电话是智能电话71。智能电话71具有显示图标或磁贴或其他用户输入机制75的触敏显示器73。机制75可由用户用来运行应用、进行呼叫、执行数据传输操作,等等。一般而言,智能电话71被构建在移动操作系统上且提供比功能电话更高级的计算能力和连接性。注意,设备16的其他形式是可能的。图13是其中可采用架构100(或架构100的部分,例如)的计算环境的一个示例。参考图13,用于实现一些示例的示例性系统包括计算机810形式的通用计算设备。计算机810的组件可以包括,但不限于,处理单元820(可以包括处理器110)、系统存储器830和将包括系统存储器在内的各种系统组件耦合至处理单元820的系统总线821。系统总线821可以是若干类型的总线结构中的任一种,包括存储器总线或存储器控制器、外围总线和使用各种总线架构中的任一种的局部总线。作为示例而非限制,这样的架构包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强型ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线和外围部件互连(PCI)总线(也称为夹层(Mezzanine)总线)。参考图1描述的存储器和程序可被部署在图13的对应部分中。计算机810通常包括各种计算机可读介质。计算机可读介质可以是能由计算机810访问的任何可用介质,而且包含易失性和非易失性介质、可移动和不可移动介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质不同于且不包括已调制数据信号或载波。计算机存储介质包括硬件存储介质,该硬件存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据的信息的任何方法和技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁带盒、磁带、磁盘存储或其它磁性存储设备、或能用于存储所需信息且可以由计算机810访问的任何其它介质。通信介质通常具体化计算机可读指令、数据结构、程序模块或传输机制中的其他数据,并包括任何信息递送介质。术语“已调制数据信号”是指使得以在信号中编码信息的方式来设定或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接之类的有线介质,以及诸如声学、RF、红外及其他无线介质之类的无线介质。上述任何组合也应该包括在计算机可读的介质范围内。系统存储器830包括易失性和/或非易失性存储器形式的计算机存储介质,如只读存储器(ROM)831和随机存取存储器(RAM)832。包含诸如在启动期间帮助在计算机810内的元件之间传输信息的基本例程的基本输入/输出系统833(BIOS)通常存储在ROM831中。RAM832通常包含处理单元820可立即访问和/或当前正在操作的数据和/或程序模块。作为示例而非限制,图13例示出了操作系统834、应用程序835、其它程序模块836和程序数据837。计算机810还可以包括其它可移动/不可移动、易失性/非易失性计算机存储介质。仅作为示例,图13示出了从不可移动、非易失性磁性介质读取或向其写入的硬盘驱动器841和从诸如CDROM或其它光学介质等可移动、非易失性光盘856读取或向其写入的光盘驱动器855。可在示例性操作环境中使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于,磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等。硬盘驱动器841通常通过诸如接口840等不可移动存储器接口连接到系统总线821,而光盘驱动器855则通常由诸如接口850等可移动存储器接口连接至系统总线821。作为替换或补充,本文所述的功能可至少部分地由一个或多个硬件逻辑组件来执行。例如,但非限制,可被使用的硬件逻辑组件的类型包括现场可编程门阵列(FPGA)、程序专用的集成电路(ASIC)、程序专用的标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑器件(CPLD)等。上文讨论并在图13中示出的驱动器及其相关联的计算机存储介质为计算机810提供了对计算机可读指令、数据结构、程序模块和其它数据的存储。例如,在图13中,硬盘驱动器841被示为存储操作系统844、应用程序845、其它程序模块846和程序数据847。注意,这些组件可与操作系统834、应用程序835、其它程序模块836和程序数据837相同,也可与它们不同。在此操作系统844、应用程序845、其它程序模块846以及程序数据847被给予了不同的编号,以至少说明它们是不同的副本。用户可以通过诸如键盘862、话筒863以及诸如鼠标、跟踪球或触摸垫等定点设备861等输入设备来将命令和信息输入至计算机810中。其它输入设备(未示出)可以包括操纵杆、游戏手柄、圆盘式卫星天线、扫描仪等。这些以及其它输入设备通常通过耦合到系统总线的用户输入接口860连接到处理单元820,但也可通过诸如并行端口、游戏端口或通用串行总线(USB)之类的其它接口和总线结构来连接。视觉显示器891或其他类型的显示设备也经由诸如视频接口890之类的接口连接至系统总线821。除了监视器以外,计算机还可包括诸如扬声器897和打印机896之类的其它外围输出设备,它们可通过输出外围接口895来连接。计算机810使用到诸如远程计算机880等一个或多个远程计算机的逻辑连接在网络化环境中操作。远程计算机880可以是个人计算机、手持设备、服务器、路由器、网络PC、对等设备或其它常见的网络节点,且一般包括以上关于计算机810描述的多个或所有的元件。图13中所示的逻辑连接包括局域网(LAN)871和广域网(WAN)773,但也可以包括其他网络。此类联网环境在办公室、企业范围的计算机网络、内联网和因特网中是常见的。当在LAN联网环境中使用时,计算机810通过网络接口或适配器870连接到LAN871。当在WAN联网环境中使用时,计算机810通常包括调制解调器872或用于通过诸如因特网等WAN873建立通信的其它手段。调制解调器872可以是内置的或外置的,可经由用户输入接口860或其它适当的机制连接到系统总线821。在联网环境中,相关于计算机810所示的程序模块或其部分可被存储在远程存储器存储设备中。作为示例而非限制,图13示出了远程应用程序885驻留在远程计算机880上。应当理解,所示的网络连接是示例性的,并且可使用在计算机之间建立通信链路的其它手段。还应注意,本文描述的不同实施例可以按不同的方式来组合。即,一个或多个实施例的各部分可以与一个或多个其他实施例的各部分组合在一起。本文中构想了所有这些。示例1是一种开发系统,其包括开发模块,该开发模块感测用户开发输入并基于用户开发输入转换计算机系统的元素。元素包括在该计算机系统中建模的类型。用户界面模块生成具有用户输入机制的用户界面显示,并且感测通过用户输入机制接收的用户搜索输入,该用户搜索输入指示用于搜索该计算机系统的元素的用户搜索查询。搜索引擎标识该用户搜索查询的基于类型的搜索参数。搜索引擎被控制以基于基于类型的搜索参数激活基于类型的搜索组件。基于类型的搜索组件执行元素搜索以在用户界面显示中返回搜索结果集合。示例2是任何或全部前述示例的开发系统,其中该开发模块是交互式开发环境(IDE)的一部分。示例3是任何或全部前述示例的开发系统,其中该用户是开发者,且该计算机系统的元素包括被所述开发者定制的应用元素。示例4是任何或全部前述示例的开发系统,其中所述基于类型的搜索参数标识从在所述计算机系统中建模的类型中选择的特定元素类型,并且所述搜索引擎被控制以将所述元素搜索约束到具有所述特定元素类型的元素。示例5是任何或全部前述示例的开发系统,其中该用户搜索查询包括字符串和该特定元素类型。示例6是任何或全部前述示例的开发系统,其中所述搜索结果集合包括具有匹配所述字符串的属性值的所述特定元素类型的元素。示例7是任何或全部前述示例的开发系统,其中所述计算机系统的元素包括多个不同类型,每个类型具有定义该元素类型的元素的运行时行为的一组属性和方法。所述系统进一步包括搜索组件存储,所述搜索组件存储存储多个搜索组件,每个搜索组件对应于所述不同类型中的一个给定类型且被配置成搜索该组属性和方法以寻找所述给定类型的元素。示例8是任何或全部前述示例的开发系统,其中所述搜索引擎标识来自所述搜索组件存储的对应于所述特定元素类型的基于类型的搜索组件,标识所述计算机系统中的多个元素中具有所述特定元素类型的每个元素,以及使用被标识的搜索组件基于所述用户搜索查询搜索被标识的元素。示例9是任何或全部前述示例的开发系统,其中针对具有所述特定元素类型的多个被标识元素中的每个被标识元素实例化被标识的搜索组件,并且所述搜索引擎通过聚集来自所述多个被实例化搜索组件的搜索结果获得所述搜索结果集合,并在所述用户界面显示中显示所述被聚集的搜索结果。示例10是任何或全部前述示例的开发系统,其中所述搜索结果集合被异步地获得和显示。示例11是任何或全部前述示例的开发系统,且进一步包括模型存储,所述模型存储针对所述元素中的每个元素存储该元素的串行化表示,所述串行化表示包括该元素的代码和元数据。所述搜索引擎通过访问所述模型存储中的所述串行化表示来执行所述元素搜索。示例12是任何或全部前述示例的开发系统,其中所述搜索引擎基于所述基于类型的搜索参数标识所述模型存储中的对应于所述元素中的一个给定元素的特定串行化表示,并且基于所述用户搜索查询来搜索所述特定串行化表示。示例13是任何或全部前述示例的开发系统,其中所述搜索引擎从所述特定串行化表示标识所述给定元素的与所述用户搜索查询匹配的一部分,以及标识唯一标识所述给定元素的所述部分的路径信息。示例14是任何或全部前述示例的开发系统,其中所述路径信息包括统一资源标识符(URI),所述用户界面模块生成所述URI的用户可选表示,所述用户可选表示能被选择以在编辑器用户界面中呈现所述给定元素的所述部分。示例15是一种开发系统,其包括:数据存储,所述数据存储对多个不同元素类型建模,开发模块,所述开发模块感测开发者输入并基于所述开发者输入转换所述不同元素类型的应用元素,以及搜索组件生成器,所述搜索组件生成器针对所述数据存储中建模的元素类型中的每个元素类型生成不同的搜索组件。所述开发系统还包括:搜索组件存储,所述搜索组件存储存储由所述搜索组件生成器针对所述多个元素类型生成的搜索组件,以及搜索引擎,所述搜索引擎感测用户搜索输入并被控制以激活所述搜索组件中的一个被选择的搜索组件来搜索所述元素类型中的一个给定元素类型的应用元素示例16是任何或全部前述示例的开发系统,其中所述搜索组件生成器被配置成通过分析所述元素类型中的一个给定元素类型的结构生成每个搜索组件以及基于所述给定元素类型的结构生成相应的搜索函数。示例17是任何或全部前述示例的开发系统,其中所述给定元素类型的结构由定义具有所述给定元素类型的元素的运行时行为的属性和方法集合定义。示例18是任何或全部前述示例的开发系统,其中所述搜索引擎接收具有至少一个搜索项的搜索查询,针对所述搜索查询标识基于类型的搜索参数,以及基于所述基于类型的搜索参数从所述搜索组件存储中标识所述搜索组件中的一个搜索组件。被标识的搜索组件被实例化以基于所述搜索项搜索所述应用元素的一个或多个。示例19是一种用于开发计算机系统的元素以及控制对所述元素的搜索的计算机实现的方法。该方法包括感测开发用户输入并基于所述开发用户输入转换所述计算机系统的元素。所述计算机系统包括多个不同元素类型,每个元素类型由所述元素类型的元素的属性结构定义。该方法包括生成搜索界面显示以及通过所述用户界面显示感测指示用于搜索所述计算机系统的元素的用户搜索查询的用户输入。该方法包括基于所述用户搜索查询和语义搜索约束控制对所述计算机系统的元素的搜索,所述语义搜索约束基于计算机系统的元素的属性结构。该方法包括返回来自所述搜索的搜索结果以及生成显示所述搜索结果的结果显示。示例20是任何或全部前述示例的计算机实现的方法,并进一步包括访问对多个不同元素类型建模的数据存储,并且针对每个不同元素类型,基于该元素类型的属性结构生成相应的基于类型的搜索组件。该方法包括使用被生成的基于类型的搜索组件中的基于所述语义搜索约束选择的至少一个搜索组件来基于所述用户搜索查询搜索所述数据存储。尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。相反,上述特定特征和动作是作为实现权利要求书的示例形式而公开的,并且其他等价特征和动作旨在处于权利要求书的范围内。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1